ETH Price: $3,389.95 (+0.71%)

Token

troll-town.wtf (TTWTF)
 

Overview

Max Total Supply

9,999 TTWTF

Holders

2,626

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
0 TTWTF
0x546572c41db4537d107d16e6539f8c39c636632c
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

The trolls are here to take over the world.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Trolltownwtf

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-06-05
*/

// SPDX-License-Identifier: MIT
/**
 * @title Trolltownwtf
 * @author AhmYieTroll
 * @dev Used for Ethereum projects compatible with OpenSea
 */
pragma solidity ^0.8.0;
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.1;
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);
            }
        }
    }
}
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

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);
    }
}
// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)
pragma solidity ^0.8.0;
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
    function toString(uint256 value) internal pure returns (string memory) {
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }
    function toHexString(uint256 value, uint256 length)
        internal
        pure
        returns (string memory)
    {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}
// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)
pragma solidity ^0.8.0;
abstract contract ERC165 is IERC165 {
    function supportsInterface(bytes4 interfaceId)
        public
        view
        virtual
        override
        returns (bool)
    {
        return interfaceId == type(IERC165).interfaceId;
    }
}

pragma solidity ^0.8.0;

abstract contract ReentrancyGuard {
    // word because each write operation emits an extra SLOAD to first read the
    // back. This is the compiler's defense against contract upgrades and

    // but in exchange the refund on every call to nonReentrant will be lower in
    // transaction's gas, it is best to keep them low in cases like this one, to
    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;

        _;
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}

pragma solidity ^0.8.0;
contract ERC721A is
    Context,
    ERC165,
    IERC721,
    IERC721Metadata,
    IERC721Enumerable
{
    using Address for address;
    using Strings for uint256;

    struct TokenOwnership {
        address addr;
        uint64 startTimestamp;
    }

    struct AddressData {
        uint128 balance;
        uint128 numberMinted;
    }

    uint256 private currentIndex = 0;

    uint256 internal immutable collectionSize;
    uint256 internal immutable maxBatchSize;
    string private _name;
    string private _symbol;
    // An empty struct value does not necessarily mean the token is unowned. See ownershipOf implementation for details.
    mapping(uint256 => TokenOwnership) private _ownerships;
    mapping(address => AddressData) private _addressData;
    mapping(uint256 => address) private _tokenApprovals;
    mapping(address => mapping(address => bool)) private _operatorApprovals;
    constructor(
        string memory name_,
        string memory symbol_,
        uint256 maxBatchSize_,
        uint256 collectionSize_
    ) {
        require(
            collectionSize_ > 0,
            "ERC721A: collection must have a nonzero supply"
        );
        require(maxBatchSize_ > 0, "ERC721A: max batch size must be nonzero");
        _name = name_;
        _symbol = symbol_;
        maxBatchSize = maxBatchSize_;
        collectionSize = collectionSize_;
    }
    function totalSupply() public view override returns (uint256) {
        return currentIndex;
    }
    function tokenByIndex(uint256 index)
        public
        view
        override
        returns (uint256)
    {
        require(index < totalSupply(), "ERC721A: global index out of bounds");
        return index;
    }
    function tokenOfOwnerByIndex(address owner, uint256 index)
        public
        view
        override
        returns (uint256)
    {
        require(index < balanceOf(owner), "ERC721A: owner index out of bounds");
        uint256 numMintedSoFar = totalSupply();
        uint256 tokenIdsIdx = 0;
        address currOwnershipAddr = address(0);
        for (uint256 i = 0; i < numMintedSoFar; i++) {
            TokenOwnership memory ownership = _ownerships[i];
            if (ownership.addr != address(0)) {
                currOwnershipAddr = ownership.addr;
            }
            if (currOwnershipAddr == owner) {
                if (tokenIdsIdx == index) {
                    return i;
                }
                tokenIdsIdx++;
            }
        }
        revert("ERC721A: unable to get token of owner by index");
    }
    function supportsInterface(bytes4 interfaceId)
        public
        view
        virtual
        override(ERC165, IERC165)
        returns (bool)
    {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            interfaceId == type(IERC721Enumerable).interfaceId ||
            super.supportsInterface(interfaceId);
    }
    function balanceOf(address owner) public view override returns (uint256) {
        require(
            owner != address(0),
            "ERC721A: balance query for the zero address"
        );
        return uint256(_addressData[owner].balance);
    }

    function _numberMinted(address owner) internal view returns (uint256) {
        require(
            owner != address(0),
            "ERC721A: number minted query for the zero address"
        );
        return uint256(_addressData[owner].numberMinted);
    }

    function ownershipOf(uint256 tokenId)
        internal
        view
        returns (TokenOwnership memory)
    {
        require(_exists(tokenId), "ERC721A: owner query for nonexistent token");

        uint256 lowestTokenToCheck;
        if (tokenId >= maxBatchSize) {
            lowestTokenToCheck = tokenId - maxBatchSize + 1;
        }

        for (uint256 curr = tokenId; curr >= lowestTokenToCheck; curr--) {
            TokenOwnership memory ownership = _ownerships[curr];
            if (ownership.addr != address(0)) {
                return ownership;
            }
        }

        revert("ERC721A: unable to determine the owner of token");
    }
    function ownerOf(uint256 tokenId) public view override returns (address) {
        return ownershipOf(tokenId).addr;
    }
    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 override {
        address owner = ERC721A.ownerOf(tokenId);
        require(to != owner, "ERC721A: approval to current owner");

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

        _approve(to, tokenId, owner);
    }
    function getApproved(uint256 tokenId)
        public
        view
        override
        returns (address)
    {
        require(
            _exists(tokenId),
            "ERC721A: approved query for nonexistent token"
        );

        return _tokenApprovals[tokenId];
    }
    function setApprovalForAll(address operator, bool approved)
        public
        override
    {
        require(operator != _msgSender(), "ERC721A: 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 override {
        _transfer(from, to, tokenId);
    }
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public override {
        safeTransferFrom(from, to, tokenId, "");
    }
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public override {
        _transfer(from, to, tokenId);
        require(
            _checkOnERC721Received(from, to, tokenId, _data),
            "ERC721A: transfer to non ERC721Receiver implementer"
        );
    }
    function _exists(uint256 tokenId) internal view returns (bool) {
        return tokenId < currentIndex;
    }

    function _safeMint(address to, uint256 quantity) internal {
        _safeMint(to, quantity, "");
    }
    function _safeMint(
        address to,
        uint256 quantity,
        bytes memory _data
    ) internal {
        uint256 startTokenId = currentIndex;
        require(to != address(0), "ERC721A: mint to the zero address");
        require(!_exists(startTokenId), "ERC721A: token already minted");
        require(quantity <= maxBatchSize, "ERC721A: quantity to mint too high");

        _beforeTokenTransfers(address(0), to, startTokenId, quantity);

        AddressData memory addressData = _addressData[to];
        _addressData[to] = AddressData(
            addressData.balance + uint128(quantity),
            addressData.numberMinted + uint128(quantity)
        );
        _ownerships[startTokenId] = TokenOwnership(to, uint64(block.timestamp));

        uint256 updatedIndex = startTokenId;

        for (uint256 i = 0; i < quantity; i++) {
            emit Transfer(address(0), to, updatedIndex);
            require(
                _checkOnERC721Received(address(0), to, updatedIndex, _data),
                "ERC721A: transfer to non ERC721Receiver implementer"
            );
            updatedIndex++;
        }

        currentIndex = updatedIndex;
        _afterTokenTransfers(address(0), to, startTokenId, quantity);
    }
    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) private {
        TokenOwnership memory prevOwnership = ownershipOf(tokenId);

        bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr ||
            getApproved(tokenId) == _msgSender() ||
            isApprovedForAll(prevOwnership.addr, _msgSender()));

        require(
            isApprovedOrOwner,
            "ERC721A: transfer caller is not owner nor approved"
        );

        require(
            prevOwnership.addr == from,
            "ERC721A: transfer from incorrect owner"
        );
        require(to != address(0), "ERC721A: transfer to the zero address");

        _beforeTokenTransfers(from, to, tokenId, 1);
        _approve(address(0), tokenId, prevOwnership.addr);

        _addressData[from].balance -= 1;
        _addressData[to].balance += 1;
        _ownerships[tokenId] = TokenOwnership(to, uint64(block.timestamp));
        // Set the slot of tokenId+1 explicitly in storage to maintain correctness for ownerOf(tokenId+1) calls.
        uint256 nextTokenId = tokenId + 1;
        if (_ownerships[nextTokenId].addr == address(0)) {
            if (_exists(nextTokenId)) {
                _ownerships[nextTokenId] = TokenOwnership(
                    prevOwnership.addr,
                    prevOwnership.startTimestamp
                );
            }
        }

        emit Transfer(from, to, tokenId);
        _afterTokenTransfers(from, to, tokenId, 1);
    }
    function _approve(
        address to,
        uint256 tokenId,
        address owner
    ) private {
        _tokenApprovals[tokenId] = to;
        emit Approval(owner, to, tokenId);
    }

    uint256 public nextOwnerToExplicitlySet = 0;
    function _setOwnersExplicit(uint256 quantity) internal {
        uint256 oldNextOwnerToSet = nextOwnerToExplicitlySet;
        require(quantity > 0, "quantity must be nonzero");
        uint256 endIndex = oldNextOwnerToSet + quantity - 1;
        if (endIndex > collectionSize - 1) {
            endIndex = collectionSize - 1;
        }
        require(_exists(endIndex), "not enough minted yet for this cleanup");
        for (uint256 i = oldNextOwnerToSet; i <= endIndex; i++) {
            if (_ownerships[i].addr == address(0)) {
                TokenOwnership memory ownership = ownershipOf(i);
                _ownerships[i] = TokenOwnership(
                    ownership.addr,
                    ownership.startTimestamp
                );
            }
        }
        nextOwnerToExplicitlySet = endIndex + 1;
    }
    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(
                        "ERC721A: transfer to non ERC721Receiver implementer"
                    );
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }
    function _beforeTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}
    function _afterTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}
}

pragma solidity ^0.8.0;
library MerkleProof {
    function verify(
        bytes32[] memory proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }
    function processProof(bytes32[] memory proof, bytes32 leaf)
        internal
        pure
        returns (bytes32)
    {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            bytes32 proofElement = proof[i];
            if (computedHash <= proofElement) {
                computedHash = _efficientHash(computedHash, proofElement);
            } else {
                computedHash = _efficientHash(proofElement, computedHash);
            }
        }
        return computedHash;
    }

    function _efficientHash(bytes32 a, bytes32 b)
        private
        pure
        returns (bytes32 value)
    {
        assembly {
            mstore(0x00, a)
            mstore(0x20, b)
            value := keccak256(0x00, 0x40)
        }
    }
}

contract Trolltownwtf is Ownable, ERC721A, ReentrancyGuard {

    bool public publicSale = false;
    bool public whitelistSale = false;
    bool public revealed = false;

    uint256 public maxPerTx = 20;
    uint256 public maxPerAddress = 100;
    uint256 public maxToken = 10000;
    uint256 public price = 0.03 ether;

    string private _baseTokenURI;
    string public notRevealedUri = "ipfs://QmcDHMJ63ur4AUo1mG3zfFYv43wPsZFesrTUGSpbvh5PAP/";

    bytes32 root;

    mapping (address => bool) public freeMinted;

    constructor(string memory _NAME, string memory _SYMBOL)
        ERC721A(_NAME, _SYMBOL, 250, maxToken)
    {}

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

    function numberMinted(address owner) public view returns (uint256) {
        return _numberMinted(owner);
    }

    function getOwnershipData(uint256 tokenId)
        external
        view
        returns (TokenOwnership memory)
    {
        return ownershipOf(tokenId);
    }

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

        if (revealed == false) {
            return notRevealedUri;
        }

        string memory _tokenURI = super.tokenURI(tokenId);
        return
            bytes(_tokenURI).length > 0
                ? string(abi.encodePacked(_tokenURI, ".json"))
                : "";
    }

    function verify(bytes32[] memory proof) internal view returns (bool) {
        bytes32 leaf = keccak256(abi.encodePacked(msg.sender));
        return MerkleProof.verify(proof, root, leaf);
    }

    function mint(uint256 quantity, bytes32[] memory proof) external payable callerIsUser {
        require(whitelistSale || publicSale, "SALE_HAS_NOT_STARTED_YET");
        require(numberMinted(msg.sender) + quantity <= maxPerAddress, "PER_WALLET_LIMIT_REACHED");
        require(quantity > 0, "INVALID_QUANTITY");
        require(quantity <= maxPerTx, "CANNOT_MINT_THAT_MANY");
        require(totalSupply() + quantity < maxToken, "NOT_ENOUGH_SUPPLY_TO_MINT_DESIRED_AMOUNT");
        if(whitelistSale){
            require(verify(proof), "ADDRESS_NOT_WHITELISTED");
        }
        if(freeMinted[msg.sender]){
            require(msg.value >= price * quantity, "INVALID_ETH");
        }else{
            require(msg.value >= (price * quantity) - price, "INVALID_ETH");
            freeMinted[msg.sender] = true;
        }
        _safeMint(msg.sender, quantity);
    }

    function ownerMint(address _address, uint256 quantity) external onlyOwner {
        require(totalSupply() + quantity <= maxToken, "NOT_ENOUGH_SUPPLY_TO_GIVEAWAY_DESIRED_AMOUNT");
        _safeMint(_address, quantity);
    }

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

    function setPrice(uint256 _PriceInWEI) external onlyOwner {
        price = _PriceInWEI;
    }

    function setRoot(bytes32 _root) external onlyOwner {
        root = _root;
    }

    function flipPublicSaleState() external onlyOwner {
        publicSale = !publicSale;
    }

    function flipWhitelistState() external onlyOwner {
        whitelistSale = !whitelistSale;
    }

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

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

    function reveal() external onlyOwner {
        revealed = !revealed;
    }

    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"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"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":"flipPublicSaleState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipWhitelistState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"freeMinted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getOwnershipData","outputs":[{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"}],"internalType":"struct ERC721A.TokenOwnership","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextOwnerToExplicitlySet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notRevealedUri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"numberMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"ownerMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_notRevealedURI","type":"string"}],"name":"setNotRevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_PriceInWEI","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_root","type":"bytes32"}],"name":"setRoot","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":"whitelistSale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c0604052600060015560006008556000600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff0219169083151502179055506000600a60026101000a81548160ff0219169083151502179055506014600b556064600c55612710600d55666a94d74f430000600e5560405180606001604052806036815260200162005cea6036913960109080519060200190620000ab929190620002b4565b50348015620000b957600080fd5b5060405162005d2038038062005d208339818101604052810190620000df9190620003d6565b818160fa600d5462000106620000fa620001e860201b60201c565b620001f060201b60201c565b600081116200014c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200014390620004b9565b60405180910390fd5b6000821162000192576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001899062000497565b60405180910390fd5b8360029080519060200190620001aa929190620002b4565b508260039080519060200190620001c3929190620002b4565b508160a0818152505080608081815250505050505060016009819055505050620006fa565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002c29062000581565b90600052602060002090601f016020900481019282620002e6576000855562000332565b82601f106200030157805160ff191683800117855562000332565b8280016001018555821562000332579182015b828111156200033157825182559160200191906001019062000314565b5b50905062000341919062000345565b5090565b5b808211156200036057600081600090555060010162000346565b5090565b60006200037b620003758462000504565b620004db565b9050828152602081018484840111156200039457600080fd5b620003a18482856200054b565b509392505050565b600082601f830112620003bb57600080fd5b8151620003cd84826020860162000364565b91505092915050565b60008060408385031215620003ea57600080fd5b600083015167ffffffffffffffff8111156200040557600080fd5b6200041385828601620003a9565b925050602083015167ffffffffffffffff8111156200043157600080fd5b6200043f85828601620003a9565b9150509250929050565b6000620004586027836200053a565b915062000465826200065c565b604082019050919050565b60006200047f602e836200053a565b91506200048c82620006ab565b604082019050919050565b60006020820190508181036000830152620004b28162000449565b9050919050565b60006020820190508181036000830152620004d48162000470565b9050919050565b6000620004e7620004fa565b9050620004f58282620005b7565b919050565b6000604051905090565b600067ffffffffffffffff8211156200052257620005216200061c565b5b6200052d826200064b565b9050602081019050919050565b600082825260208201905092915050565b60005b838110156200056b5780820151818401526020810190506200054e565b838111156200057b576000848401525b50505050565b600060028204905060018216806200059a57607f821691505b60208210811415620005b157620005b0620005ed565b5b50919050565b620005c2826200064b565b810181811067ffffffffffffffff82111715620005e457620005e36200061c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f455243373231413a206d61782062617463682073697a65206d7573742062652060008201527f6e6f6e7a65726f00000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20636f6c6c656374696f6e206d757374206861766520612060008201527f6e6f6e7a65726f20737570706c79000000000000000000000000000000000000602082015250565b60805160a0516155bf6200072b60003960008181612899015281816128c20152612f420152600050506155bf6000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063ba41b0c6116100b6578063dc33e6811161007a578063dc33e6811461085d578063e985e9c51461089a578063f2c4ce1e146108d7578063f2fde38b14610900578063f6fa26ab14610929578063f968adbe1461094057610246565b8063ba41b0c614610785578063c87b56dd146107a1578063ca69e323146107de578063d7224ba014610809578063dab5f3401461083457610246565b8063a035b1fe116100fd578063a035b1fe146106da578063a10866ef14610705578063a22cb4651461071c578063a475b5dd14610745578063b88d4fde1461075c57610246565b8063715018a6146106075780638da5cb5b1461061e57806391b7f5ed146106495780639231ab2a1461067257806395d89b41146106af57610246565b8063389fcf06116101c7578063518302271161018b578063518302271461050e57806355f804b3146105395780636352211e14610562578063639814e01461059f57806370a08231146105ca57610246565b8063389fcf061461042b5780633ccfd60b1461046857806342842e0e1461047f578063484b973c146104a85780634f6ccce7146104d157610246565b806318160ddd1161020e57806318160ddd1461034457806323b872dd1461036f5780632f745c591461039857806331ffd6f1146103d557806333bc1c5c1461040057610246565b806301ffc9a71461024b57806306fdde0314610288578063081812fc146102b3578063081c8c44146102f0578063095ea7b31461031b575b600080fd5b34801561025757600080fd5b50610272600480360381019061026d9190613bec565b61096b565b60405161027f919061437a565b60405180910390f35b34801561029457600080fd5b5061029d610ab5565b6040516102aa9190614395565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d59190613cc4565b610b47565b6040516102e79190614313565b60405180910390f35b3480156102fc57600080fd5b50610305610bcc565b6040516103129190614395565b60405180910390f35b34801561032757600080fd5b50610342600480360381019061033d9190613b87565b610c5a565b005b34801561035057600080fd5b50610359610d73565b6040516103669190614792565b60405180910390f35b34801561037b57600080fd5b5061039660048036038101906103919190613a81565b610d7d565b005b3480156103a457600080fd5b506103bf60048036038101906103ba9190613b87565b610d8d565b6040516103cc9190614792565b60405180910390f35b3480156103e157600080fd5b506103ea610f8b565b6040516103f7919061437a565b60405180910390f35b34801561040c57600080fd5b50610415610f9e565b604051610422919061437a565b60405180910390f35b34801561043757600080fd5b50610452600480360381019061044d9190613a1c565b610fb1565b60405161045f919061437a565b60405180910390f35b34801561047457600080fd5b5061047d610fd1565b005b34801561048b57600080fd5b506104a660048036038101906104a19190613a81565b611096565b005b3480156104b457600080fd5b506104cf60048036038101906104ca9190613b87565b6110b6565b005b3480156104dd57600080fd5b506104f860048036038101906104f39190613cc4565b611197565b6040516105059190614792565b60405180910390f35b34801561051a57600080fd5b506105236111ea565b604051610530919061437a565b60405180910390f35b34801561054557600080fd5b50610560600480360381019061055b9190613c3e565b6111fd565b005b34801561056e57600080fd5b5061058960048036038101906105849190613cc4565b61128f565b6040516105969190614313565b60405180910390f35b3480156105ab57600080fd5b506105b46112a5565b6040516105c19190614792565b60405180910390f35b3480156105d657600080fd5b506105f160048036038101906105ec9190613a1c565b6112ab565b6040516105fe9190614792565b60405180910390f35b34801561061357600080fd5b5061061c611394565b005b34801561062a57600080fd5b5061063361141c565b6040516106409190614313565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b9190613cc4565b611445565b005b34801561067e57600080fd5b5061069960048036038101906106949190613cc4565b6114cb565b6040516106a69190614777565b60405180910390f35b3480156106bb57600080fd5b506106c46114e3565b6040516106d19190614395565b60405180910390f35b3480156106e657600080fd5b506106ef611575565b6040516106fc9190614792565b60405180910390f35b34801561071157600080fd5b5061071a61157b565b005b34801561072857600080fd5b50610743600480360381019061073e9190613b4b565b611623565b005b34801561075157600080fd5b5061075a6117a4565b005b34801561076857600080fd5b50610783600480360381019061077e9190613ad0565b61184c565b005b61079f600480360381019061079a9190613ced565b6118a8565b005b3480156107ad57600080fd5b506107c860048036038101906107c39190613cc4565b611c7b565b6040516107d59190614395565b60405180910390f35b3480156107ea57600080fd5b506107f3611dc8565b6040516108009190614792565b60405180910390f35b34801561081557600080fd5b5061081e611dce565b60405161082b9190614792565b60405180910390f35b34801561084057600080fd5b5061085b60048036038101906108569190613bc3565b611dd4565b005b34801561086957600080fd5b50610884600480360381019061087f9190613a1c565b611e5a565b6040516108919190614792565b60405180910390f35b3480156108a657600080fd5b506108c160048036038101906108bc9190613a45565b611e6c565b6040516108ce919061437a565b60405180910390f35b3480156108e357600080fd5b506108fe60048036038101906108f99190613c83565b611f00565b005b34801561090c57600080fd5b5061092760048036038101906109229190613a1c565b611f96565b005b34801561093557600080fd5b5061093e61208e565b005b34801561094c57600080fd5b50610955612136565b6040516109629190614792565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a3657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a9e57507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610aae5750610aad8261213c565b5b9050919050565b606060028054610ac490614b4c565b80601f0160208091040260200160405190810160405280929190818152602001828054610af090614b4c565b8015610b3d5780601f10610b1257610100808354040283529160200191610b3d565b820191906000526020600020905b815481529060010190602001808311610b2057829003601f168201915b5050505050905090565b6000610b52826121a6565b610b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8890614737565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60108054610bd990614b4c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0590614b4c565b8015610c525780601f10610c2757610100808354040283529160200191610c52565b820191906000526020600020905b815481529060010190602001808311610c3557829003601f168201915b505050505081565b6000610c658261128f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccd90614617565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610cf56121b4565b73ffffffffffffffffffffffffffffffffffffffff161480610d245750610d2381610d1e6121b4565b611e6c565b5b610d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5a90614517565b60405180910390fd5b610d6e8383836121bc565b505050565b6000600154905090565b610d8883838361226e565b505050565b6000610d98836112ab565b8210610dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd0906143b7565b60405180910390fd5b6000610de3610d73565b905060008060005b83811015610f49576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610edd57806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f355786841415610f26578195505050505050610f85565b8380610f3190614baf565b9450505b508080610f4190614baf565b915050610deb565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c906146f7565b60405180910390fd5b92915050565b600a60019054906101000a900460ff1681565b600a60009054906101000a900460ff1681565b60126020528060005260406000206000915054906101000a900460ff1681565b610fd96121b4565b73ffffffffffffffffffffffffffffffffffffffff16610ff761141c565b73ffffffffffffffffffffffffffffffffffffffff161461104d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104490614577565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611093573d6000803e3d6000fd5b50565b6110b18383836040518060200160405280600081525061184c565b505050565b6110be6121b4565b73ffffffffffffffffffffffffffffffffffffffff166110dc61141c565b73ffffffffffffffffffffffffffffffffffffffff1614611132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112990614577565b60405180910390fd5b600d548161113e610d73565b61114891906148e9565b1115611189576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611180906146b7565b60405180910390fd5b6111938282612827565b5050565b60006111a1610d73565b82106111e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d990614477565b60405180910390fd5b819050919050565b600a60029054906101000a900460ff1681565b6112056121b4565b73ffffffffffffffffffffffffffffffffffffffff1661122361141c565b73ffffffffffffffffffffffffffffffffffffffff1614611279576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127090614577565b60405180910390fd5b8181600f919061128a92919061368b565b505050565b600061129a82612845565b600001519050919050565b600c5481565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561131c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131390614537565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b61139c6121b4565b73ffffffffffffffffffffffffffffffffffffffff166113ba61141c565b73ffffffffffffffffffffffffffffffffffffffff1614611410576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140790614577565b60405180910390fd5b61141a6000612a48565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61144d6121b4565b73ffffffffffffffffffffffffffffffffffffffff1661146b61141c565b73ffffffffffffffffffffffffffffffffffffffff16146114c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b890614577565b60405180910390fd5b80600e8190555050565b6114d3613711565b6114dc82612845565b9050919050565b6060600380546114f290614b4c565b80601f016020809104026020016040519081016040528092919081815260200182805461151e90614b4c565b801561156b5780601f106115405761010080835404028352916020019161156b565b820191906000526020600020905b81548152906001019060200180831161154e57829003601f168201915b5050505050905090565b600e5481565b6115836121b4565b73ffffffffffffffffffffffffffffffffffffffff166115a161141c565b73ffffffffffffffffffffffffffffffffffffffff16146115f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ee90614577565b60405180910390fd5b600a60009054906101000a900460ff1615600a60006101000a81548160ff021916908315150217905550565b61162b6121b4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611699576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611690906145b7565b60405180910390fd5b80600760006116a66121b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166117536121b4565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611798919061437a565b60405180910390a35050565b6117ac6121b4565b73ffffffffffffffffffffffffffffffffffffffff166117ca61141c565b73ffffffffffffffffffffffffffffffffffffffff1614611820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181790614577565b60405180910390fd5b600a60029054906101000a900460ff1615600a60026101000a81548160ff021916908315150217905550565b61185784848461226e565b61186384848484612b0c565b6118a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189990614657565b60405180910390fd5b50505050565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190d906144d7565b60405180910390fd5b600a60019054906101000a900460ff168061193d5750600a60009054906101000a900460ff165b61197c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197390614637565b60405180910390fd5b600c548261198933611e5a565b61199391906148e9565b11156119d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cb906144f7565b60405180910390fd5b60008211611a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0e906146d7565b60405180910390fd5b600b54821115611a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a53906143d7565b60405180910390fd5b600d5482611a68610d73565b611a7291906148e9565b10611ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa9906145f7565b60405180910390fd5b600a60019054906101000a900460ff1615611b1057611ad081612ca3565b611b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0690614457565b60405180910390fd5b5b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611bb75781600e54611b709190614970565b341015611bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba990614417565b60405180910390fd5b611c6d565b600e5482600e54611bc89190614970565b611bd291906149fe565b341015611c14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0b90614417565b60405180910390fd5b6001601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b611c773383612827565b5050565b6060611c86826121a6565b611cc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbc90614597565b60405180910390fd5b60001515600a60029054906101000a900460ff1615151415611d735760108054611cee90614b4c565b80601f0160208091040260200160405190810160405280929190818152602001828054611d1a90614b4c565b8015611d675780601f10611d3c57610100808354040283529160200191611d67565b820191906000526020600020905b815481529060010190602001808311611d4a57829003601f168201915b50505050509050611dc3565b6000611d7e83612ce4565b90506000815111611d9e5760405180602001604052806000815250611dbf565b80604051602001611daf91906142f1565b6040516020818303038152906040525b9150505b919050565b600d5481565b60085481565b611ddc6121b4565b73ffffffffffffffffffffffffffffffffffffffff16611dfa61141c565b73ffffffffffffffffffffffffffffffffffffffff1614611e50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4790614577565b60405180910390fd5b8060118190555050565b6000611e6582612d8b565b9050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611f086121b4565b73ffffffffffffffffffffffffffffffffffffffff16611f2661141c565b73ffffffffffffffffffffffffffffffffffffffff1614611f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7390614577565b60405180910390fd5b8060109080519060200190611f9292919061374b565b5050565b611f9e6121b4565b73ffffffffffffffffffffffffffffffffffffffff16611fbc61141c565b73ffffffffffffffffffffffffffffffffffffffff1614612012576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200990614577565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612082576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612079906143f7565b60405180910390fd5b61208b81612a48565b50565b6120966121b4565b73ffffffffffffffffffffffffffffffffffffffff166120b461141c565b73ffffffffffffffffffffffffffffffffffffffff161461210a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210190614577565b60405180910390fd5b600a60019054906101000a900460ff1615600a60016101000a81548160ff021916908315150217905550565b600b5481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600060015482109050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600061227982612845565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff166122a06121b4565b73ffffffffffffffffffffffffffffffffffffffff1614806122fc57506122c56121b4565b73ffffffffffffffffffffffffffffffffffffffff166122e484610b47565b73ffffffffffffffffffffffffffffffffffffffff16145b80612318575061231782600001516123126121b4565b611e6c565b5b90508061235a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612351906145d7565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16146123cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c390614557565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561243c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243390614497565b60405180910390fd5b6124498585856001612e74565b61245960008484600001516121bc565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166124c791906149ca565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff1661256b91906148a3565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600060018461267191906148e9565b9050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156127b7576126e7816121a6565b156127b6576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506004600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461281f8686866001612e7a565b505050505050565b612841828260405180602001604052806000815250612e80565b5050565b61284d613711565b612856826121a6565b612895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288c90614437565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000083106128f95760017f0000000000000000000000000000000000000000000000000000000000000000846128ec91906149fe565b6128f691906148e9565b90505b60008390505b818110612a07576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146129f357809350505050612a43565b5080806129ff90614b22565b9150506128ff565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3a90614717565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612b2d8473ffffffffffffffffffffffffffffffffffffffff16613360565b15612c96578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612b566121b4565b8786866040518563ffffffff1660e01b8152600401612b78949392919061432e565b602060405180830381600087803b158015612b9257600080fd5b505af1925050508015612bc357506040513d601f19601f82011682018060405250810190612bc09190613c15565b60015b612c46573d8060008114612bf3576040519150601f19603f3d011682016040523d82523d6000602084013e612bf8565b606091505b50600081511415612c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3590614657565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612c9b565b600190505b949350505050565b60008033604051602001612cb791906142b2565b604051602081830303815290604052805190602001209050612cdc8360115483613383565b915050919050565b6060612cef826121a6565b612d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2590614597565b60405180910390fd5b6000612d3861339a565b90506000815111612d585760405180602001604052806000815250612d83565b80612d628461342c565b604051602001612d739291906142cd565b6040516020818303038152906040525b915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df3906144b7565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b50505050565b50505050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eee90614697565b60405180910390fd5b612f00816121a6565b15612f40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3790614677565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000831115612fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9a90614757565b60405180910390fd5b612fb06000858386612e74565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681525050905060405180604001604052808583600001516130ad91906148a3565b6fffffffffffffffffffffffffffffffff1681526020018583602001516130d491906148a3565b6fffffffffffffffffffffffffffffffff16815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b8581101561334357818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46132e36000888488612b0c565b613322576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331990614657565b60405180910390fd5b818061332d90614baf565b925050808061333b90614baf565b915050613272565b50806001819055506133586000878588612e7a565b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008261339085846135d9565b1490509392505050565b6060600f80546133a990614b4c565b80601f01602080910402602001604051908101604052809291908181526020018280546133d590614b4c565b80156134225780601f106133f757610100808354040283529160200191613422565b820191906000526020600020905b81548152906001019060200180831161340557829003601f168201915b5050505050905090565b60606000821415613474576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506135d4565b600082905060005b600082146134a657808061348f90614baf565b915050600a8261349f919061493f565b915061347c565b60008167ffffffffffffffff8111156134e8577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561351a5781602001600182028036833780820191505090505b5090505b600085146135cd5760018261353391906149fe565b9150600a856135429190614c1c565b603061354e91906148e9565b60f81b81838151811061358a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856135c6919061493f565b945061351e565b8093505050505b919050565b60008082905060005b8451811015613669576000858281518110613626577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050808311613648576136418382613674565b9250613655565b6136528184613674565b92505b50808061366190614baf565b9150506135e2565b508091505092915050565b600082600052816020526040600020905092915050565b82805461369790614b4c565b90600052602060002090601f0160209004810192826136b95760008555613700565b82601f106136d257803560ff1916838001178555613700565b82800160010185558215613700579182015b828111156136ff5782358255916020019190600101906136e4565b5b50905061370d91906137d1565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b82805461375790614b4c565b90600052602060002090601f01602090048101928261377957600085556137c0565b82601f1061379257805160ff19168380011785556137c0565b828001600101855582156137c0579182015b828111156137bf5782518255916020019190600101906137a4565b5b5090506137cd91906137d1565b5090565b5b808211156137ea5760008160009055506001016137d2565b5090565b60006138016137fc846147d2565b6147ad565b9050808382526020820190508285602086028201111561382057600080fd5b60005b858110156138505781613836888261392a565b845260208401935060208301925050600181019050613823565b5050509392505050565b600061386d613868846147fe565b6147ad565b90508281526020810184848401111561388557600080fd5b613890848285614ae0565b509392505050565b60006138ab6138a68461482f565b6147ad565b9050828152602081018484840111156138c357600080fd5b6138ce848285614ae0565b509392505050565b6000813590506138e581615516565b92915050565b600082601f8301126138fc57600080fd5b813561390c8482602086016137ee565b91505092915050565b6000813590506139248161552d565b92915050565b60008135905061393981615544565b92915050565b60008135905061394e8161555b565b92915050565b6000815190506139638161555b565b92915050565b600082601f83011261397a57600080fd5b813561398a84826020860161385a565b91505092915050565b60008083601f8401126139a557600080fd5b8235905067ffffffffffffffff8111156139be57600080fd5b6020830191508360018202830111156139d657600080fd5b9250929050565b600082601f8301126139ee57600080fd5b81356139fe848260208601613898565b91505092915050565b600081359050613a1681615572565b92915050565b600060208284031215613a2e57600080fd5b6000613a3c848285016138d6565b91505092915050565b60008060408385031215613a5857600080fd5b6000613a66858286016138d6565b9250506020613a77858286016138d6565b9150509250929050565b600080600060608486031215613a9657600080fd5b6000613aa4868287016138d6565b9350506020613ab5868287016138d6565b9250506040613ac686828701613a07565b9150509250925092565b60008060008060808587031215613ae657600080fd5b6000613af4878288016138d6565b9450506020613b05878288016138d6565b9350506040613b1687828801613a07565b925050606085013567ffffffffffffffff811115613b3357600080fd5b613b3f87828801613969565b91505092959194509250565b60008060408385031215613b5e57600080fd5b6000613b6c858286016138d6565b9250506020613b7d85828601613915565b9150509250929050565b60008060408385031215613b9a57600080fd5b6000613ba8858286016138d6565b9250506020613bb985828601613a07565b9150509250929050565b600060208284031215613bd557600080fd5b6000613be38482850161392a565b91505092915050565b600060208284031215613bfe57600080fd5b6000613c0c8482850161393f565b91505092915050565b600060208284031215613c2757600080fd5b6000613c3584828501613954565b91505092915050565b60008060208385031215613c5157600080fd5b600083013567ffffffffffffffff811115613c6b57600080fd5b613c7785828601613993565b92509250509250929050565b600060208284031215613c9557600080fd5b600082013567ffffffffffffffff811115613caf57600080fd5b613cbb848285016139dd565b91505092915050565b600060208284031215613cd657600080fd5b6000613ce484828501613a07565b91505092915050565b60008060408385031215613d0057600080fd5b6000613d0e85828601613a07565b925050602083013567ffffffffffffffff811115613d2b57600080fd5b613d37858286016138eb565b9150509250929050565b613d4a81614a32565b82525050565b613d5981614a32565b82525050565b613d70613d6b82614a32565b614bf8565b82525050565b613d7f81614a44565b82525050565b6000613d9082614860565b613d9a8185614876565b9350613daa818560208601614aef565b613db381614d09565b840191505092915050565b6000613dc98261486b565b613dd38185614887565b9350613de3818560208601614aef565b613dec81614d09565b840191505092915050565b6000613e028261486b565b613e0c8185614898565b9350613e1c818560208601614aef565b80840191505092915050565b6000613e35602283614887565b9150613e4082614d27565b604082019050919050565b6000613e58601583614887565b9150613e6382614d76565b602082019050919050565b6000613e7b602683614887565b9150613e8682614d9f565b604082019050919050565b6000613e9e600b83614887565b9150613ea982614dee565b602082019050919050565b6000613ec1602a83614887565b9150613ecc82614e17565b604082019050919050565b6000613ee4601783614887565b9150613eef82614e66565b602082019050919050565b6000613f07602383614887565b9150613f1282614e8f565b604082019050919050565b6000613f2a602583614887565b9150613f3582614ede565b604082019050919050565b6000613f4d603183614887565b9150613f5882614f2d565b604082019050919050565b6000613f70601e83614887565b9150613f7b82614f7c565b602082019050919050565b6000613f93601883614887565b9150613f9e82614fa5565b602082019050919050565b6000613fb6603983614887565b9150613fc182614fce565b604082019050919050565b6000613fd9602b83614887565b9150613fe48261501d565b604082019050919050565b6000613ffc602683614887565b91506140078261506c565b604082019050919050565b600061401f600583614898565b915061402a826150bb565b600582019050919050565b6000614042602083614887565b915061404d826150e4565b602082019050919050565b6000614065602f83614887565b91506140708261510d565b604082019050919050565b6000614088601a83614887565b91506140938261515c565b602082019050919050565b60006140ab603283614887565b91506140b682615185565b604082019050919050565b60006140ce602883614887565b91506140d9826151d4565b604082019050919050565b60006140f1602283614887565b91506140fc82615223565b604082019050919050565b6000614114601883614887565b915061411f82615272565b602082019050919050565b6000614137603383614887565b91506141428261529b565b604082019050919050565b600061415a601d83614887565b9150614165826152ea565b602082019050919050565b600061417d602183614887565b915061418882615313565b604082019050919050565b60006141a0602c83614887565b91506141ab82615362565b604082019050919050565b60006141c3601083614887565b91506141ce826153b1565b602082019050919050565b60006141e6602e83614887565b91506141f1826153da565b604082019050919050565b6000614209602f83614887565b915061421482615429565b604082019050919050565b600061422c602d83614887565b915061423782615478565b604082019050919050565b600061424f602283614887565b915061425a826154c7565b604082019050919050565b60408201600082015161427b6000850182613d41565b50602082015161428e60208501826142a3565b50505050565b61429d81614ac2565b82525050565b6142ac81614acc565b82525050565b60006142be8284613d5f565b60148201915081905092915050565b60006142d98285613df7565b91506142e58284613df7565b91508190509392505050565b60006142fd8284613df7565b915061430882614012565b915081905092915050565b60006020820190506143286000830184613d50565b92915050565b60006080820190506143436000830187613d50565b6143506020830186613d50565b61435d6040830185614294565b818103606083015261436f8184613d85565b905095945050505050565b600060208201905061438f6000830184613d76565b92915050565b600060208201905081810360008301526143af8184613dbe565b905092915050565b600060208201905081810360008301526143d081613e28565b9050919050565b600060208201905081810360008301526143f081613e4b565b9050919050565b6000602082019050818103600083015261441081613e6e565b9050919050565b6000602082019050818103600083015261443081613e91565b9050919050565b6000602082019050818103600083015261445081613eb4565b9050919050565b6000602082019050818103600083015261447081613ed7565b9050919050565b6000602082019050818103600083015261449081613efa565b9050919050565b600060208201905081810360008301526144b081613f1d565b9050919050565b600060208201905081810360008301526144d081613f40565b9050919050565b600060208201905081810360008301526144f081613f63565b9050919050565b6000602082019050818103600083015261451081613f86565b9050919050565b6000602082019050818103600083015261453081613fa9565b9050919050565b6000602082019050818103600083015261455081613fcc565b9050919050565b6000602082019050818103600083015261457081613fef565b9050919050565b6000602082019050818103600083015261459081614035565b9050919050565b600060208201905081810360008301526145b081614058565b9050919050565b600060208201905081810360008301526145d08161407b565b9050919050565b600060208201905081810360008301526145f08161409e565b9050919050565b60006020820190508181036000830152614610816140c1565b9050919050565b60006020820190508181036000830152614630816140e4565b9050919050565b6000602082019050818103600083015261465081614107565b9050919050565b600060208201905081810360008301526146708161412a565b9050919050565b600060208201905081810360008301526146908161414d565b9050919050565b600060208201905081810360008301526146b081614170565b9050919050565b600060208201905081810360008301526146d081614193565b9050919050565b600060208201905081810360008301526146f0816141b6565b9050919050565b60006020820190508181036000830152614710816141d9565b9050919050565b60006020820190508181036000830152614730816141fc565b9050919050565b600060208201905081810360008301526147508161421f565b9050919050565b6000602082019050818103600083015261477081614242565b9050919050565b600060408201905061478c6000830184614265565b92915050565b60006020820190506147a76000830184614294565b92915050565b60006147b76147c8565b90506147c38282614b7e565b919050565b6000604051905090565b600067ffffffffffffffff8211156147ed576147ec614cda565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561481957614818614cda565b5b61482282614d09565b9050602081019050919050565b600067ffffffffffffffff82111561484a57614849614cda565b5b61485382614d09565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006148ae82614a86565b91506148b983614a86565b9250826fffffffffffffffffffffffffffffffff038211156148de576148dd614c4d565b5b828201905092915050565b60006148f482614ac2565b91506148ff83614ac2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561493457614933614c4d565b5b828201905092915050565b600061494a82614ac2565b915061495583614ac2565b92508261496557614964614c7c565b5b828204905092915050565b600061497b82614ac2565b915061498683614ac2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156149bf576149be614c4d565b5b828202905092915050565b60006149d582614a86565b91506149e083614a86565b9250828210156149f3576149f2614c4d565b5b828203905092915050565b6000614a0982614ac2565b9150614a1483614ac2565b925082821015614a2757614a26614c4d565b5b828203905092915050565b6000614a3d82614aa2565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b83811015614b0d578082015181840152602081019050614af2565b83811115614b1c576000848401525b50505050565b6000614b2d82614ac2565b91506000821415614b4157614b40614c4d565b5b600182039050919050565b60006002820490506001821680614b6457607f821691505b60208210811415614b7857614b77614cab565b5b50919050565b614b8782614d09565b810181811067ffffffffffffffff82111715614ba657614ba5614cda565b5b80604052505050565b6000614bba82614ac2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614bed57614bec614c4d565b5b600182019050919050565b6000614c0382614c0a565b9050919050565b6000614c1582614d1a565b9050919050565b6000614c2782614ac2565b9150614c3283614ac2565b925082614c4257614c41614c7c565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f43414e4e4f545f4d494e545f544841545f4d414e590000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f494e56414c49445f455448000000000000000000000000000000000000000000600082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f414444524553535f4e4f545f57484954454c4953544544000000000000000000600082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b7f5045525f57414c4c45545f4c494d49545f524541434845440000000000000000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f4e4f545f454e4f5547485f535550504c595f544f5f4d494e545f44455349524560008201527f445f414d4f554e54000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b7f53414c455f4841535f4e4f545f535441525445445f5945540000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f4e4f545f454e4f5547485f535550504c595f544f5f47495645415741595f444560008201527f53495245445f414d4f554e540000000000000000000000000000000000000000602082015250565b7f494e56414c49445f5155414e5449545900000000000000000000000000000000600082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b61551f81614a32565b811461552a57600080fd5b50565b61553681614a44565b811461554157600080fd5b50565b61554d81614a50565b811461555857600080fd5b50565b61556481614a5a565b811461556f57600080fd5b50565b61557b81614ac2565b811461558657600080fd5b5056fea26469706673582212200a1a3b48d66e47d13d67e2aadd85540a29b1f9bf16bd6f029380689236db4e4664736f6c63430008040033697066733a2f2f516d6344484d4a363375723441556f316d47337a6646597634337750735a466573725455475370627668355041502f00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000e74726f6c6c2d746f776e2e77746600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055454575446000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106102465760003560e01c8063715018a611610139578063ba41b0c6116100b6578063dc33e6811161007a578063dc33e6811461085d578063e985e9c51461089a578063f2c4ce1e146108d7578063f2fde38b14610900578063f6fa26ab14610929578063f968adbe1461094057610246565b8063ba41b0c614610785578063c87b56dd146107a1578063ca69e323146107de578063d7224ba014610809578063dab5f3401461083457610246565b8063a035b1fe116100fd578063a035b1fe146106da578063a10866ef14610705578063a22cb4651461071c578063a475b5dd14610745578063b88d4fde1461075c57610246565b8063715018a6146106075780638da5cb5b1461061e57806391b7f5ed146106495780639231ab2a1461067257806395d89b41146106af57610246565b8063389fcf06116101c7578063518302271161018b578063518302271461050e57806355f804b3146105395780636352211e14610562578063639814e01461059f57806370a08231146105ca57610246565b8063389fcf061461042b5780633ccfd60b1461046857806342842e0e1461047f578063484b973c146104a85780634f6ccce7146104d157610246565b806318160ddd1161020e57806318160ddd1461034457806323b872dd1461036f5780632f745c591461039857806331ffd6f1146103d557806333bc1c5c1461040057610246565b806301ffc9a71461024b57806306fdde0314610288578063081812fc146102b3578063081c8c44146102f0578063095ea7b31461031b575b600080fd5b34801561025757600080fd5b50610272600480360381019061026d9190613bec565b61096b565b60405161027f919061437a565b60405180910390f35b34801561029457600080fd5b5061029d610ab5565b6040516102aa9190614395565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d59190613cc4565b610b47565b6040516102e79190614313565b60405180910390f35b3480156102fc57600080fd5b50610305610bcc565b6040516103129190614395565b60405180910390f35b34801561032757600080fd5b50610342600480360381019061033d9190613b87565b610c5a565b005b34801561035057600080fd5b50610359610d73565b6040516103669190614792565b60405180910390f35b34801561037b57600080fd5b5061039660048036038101906103919190613a81565b610d7d565b005b3480156103a457600080fd5b506103bf60048036038101906103ba9190613b87565b610d8d565b6040516103cc9190614792565b60405180910390f35b3480156103e157600080fd5b506103ea610f8b565b6040516103f7919061437a565b60405180910390f35b34801561040c57600080fd5b50610415610f9e565b604051610422919061437a565b60405180910390f35b34801561043757600080fd5b50610452600480360381019061044d9190613a1c565b610fb1565b60405161045f919061437a565b60405180910390f35b34801561047457600080fd5b5061047d610fd1565b005b34801561048b57600080fd5b506104a660048036038101906104a19190613a81565b611096565b005b3480156104b457600080fd5b506104cf60048036038101906104ca9190613b87565b6110b6565b005b3480156104dd57600080fd5b506104f860048036038101906104f39190613cc4565b611197565b6040516105059190614792565b60405180910390f35b34801561051a57600080fd5b506105236111ea565b604051610530919061437a565b60405180910390f35b34801561054557600080fd5b50610560600480360381019061055b9190613c3e565b6111fd565b005b34801561056e57600080fd5b5061058960048036038101906105849190613cc4565b61128f565b6040516105969190614313565b60405180910390f35b3480156105ab57600080fd5b506105b46112a5565b6040516105c19190614792565b60405180910390f35b3480156105d657600080fd5b506105f160048036038101906105ec9190613a1c565b6112ab565b6040516105fe9190614792565b60405180910390f35b34801561061357600080fd5b5061061c611394565b005b34801561062a57600080fd5b5061063361141c565b6040516106409190614313565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b9190613cc4565b611445565b005b34801561067e57600080fd5b5061069960048036038101906106949190613cc4565b6114cb565b6040516106a69190614777565b60405180910390f35b3480156106bb57600080fd5b506106c46114e3565b6040516106d19190614395565b60405180910390f35b3480156106e657600080fd5b506106ef611575565b6040516106fc9190614792565b60405180910390f35b34801561071157600080fd5b5061071a61157b565b005b34801561072857600080fd5b50610743600480360381019061073e9190613b4b565b611623565b005b34801561075157600080fd5b5061075a6117a4565b005b34801561076857600080fd5b50610783600480360381019061077e9190613ad0565b61184c565b005b61079f600480360381019061079a9190613ced565b6118a8565b005b3480156107ad57600080fd5b506107c860048036038101906107c39190613cc4565b611c7b565b6040516107d59190614395565b60405180910390f35b3480156107ea57600080fd5b506107f3611dc8565b6040516108009190614792565b60405180910390f35b34801561081557600080fd5b5061081e611dce565b60405161082b9190614792565b60405180910390f35b34801561084057600080fd5b5061085b60048036038101906108569190613bc3565b611dd4565b005b34801561086957600080fd5b50610884600480360381019061087f9190613a1c565b611e5a565b6040516108919190614792565b60405180910390f35b3480156108a657600080fd5b506108c160048036038101906108bc9190613a45565b611e6c565b6040516108ce919061437a565b60405180910390f35b3480156108e357600080fd5b506108fe60048036038101906108f99190613c83565b611f00565b005b34801561090c57600080fd5b5061092760048036038101906109229190613a1c565b611f96565b005b34801561093557600080fd5b5061093e61208e565b005b34801561094c57600080fd5b50610955612136565b6040516109629190614792565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a3657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a9e57507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610aae5750610aad8261213c565b5b9050919050565b606060028054610ac490614b4c565b80601f0160208091040260200160405190810160405280929190818152602001828054610af090614b4c565b8015610b3d5780601f10610b1257610100808354040283529160200191610b3d565b820191906000526020600020905b815481529060010190602001808311610b2057829003601f168201915b5050505050905090565b6000610b52826121a6565b610b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8890614737565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60108054610bd990614b4c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0590614b4c565b8015610c525780601f10610c2757610100808354040283529160200191610c52565b820191906000526020600020905b815481529060010190602001808311610c3557829003601f168201915b505050505081565b6000610c658261128f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccd90614617565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610cf56121b4565b73ffffffffffffffffffffffffffffffffffffffff161480610d245750610d2381610d1e6121b4565b611e6c565b5b610d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5a90614517565b60405180910390fd5b610d6e8383836121bc565b505050565b6000600154905090565b610d8883838361226e565b505050565b6000610d98836112ab565b8210610dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd0906143b7565b60405180910390fd5b6000610de3610d73565b905060008060005b83811015610f49576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610edd57806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f355786841415610f26578195505050505050610f85565b8380610f3190614baf565b9450505b508080610f4190614baf565b915050610deb565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c906146f7565b60405180910390fd5b92915050565b600a60019054906101000a900460ff1681565b600a60009054906101000a900460ff1681565b60126020528060005260406000206000915054906101000a900460ff1681565b610fd96121b4565b73ffffffffffffffffffffffffffffffffffffffff16610ff761141c565b73ffffffffffffffffffffffffffffffffffffffff161461104d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104490614577565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611093573d6000803e3d6000fd5b50565b6110b18383836040518060200160405280600081525061184c565b505050565b6110be6121b4565b73ffffffffffffffffffffffffffffffffffffffff166110dc61141c565b73ffffffffffffffffffffffffffffffffffffffff1614611132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112990614577565b60405180910390fd5b600d548161113e610d73565b61114891906148e9565b1115611189576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611180906146b7565b60405180910390fd5b6111938282612827565b5050565b60006111a1610d73565b82106111e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d990614477565b60405180910390fd5b819050919050565b600a60029054906101000a900460ff1681565b6112056121b4565b73ffffffffffffffffffffffffffffffffffffffff1661122361141c565b73ffffffffffffffffffffffffffffffffffffffff1614611279576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127090614577565b60405180910390fd5b8181600f919061128a92919061368b565b505050565b600061129a82612845565b600001519050919050565b600c5481565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561131c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131390614537565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b61139c6121b4565b73ffffffffffffffffffffffffffffffffffffffff166113ba61141c565b73ffffffffffffffffffffffffffffffffffffffff1614611410576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140790614577565b60405180910390fd5b61141a6000612a48565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61144d6121b4565b73ffffffffffffffffffffffffffffffffffffffff1661146b61141c565b73ffffffffffffffffffffffffffffffffffffffff16146114c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b890614577565b60405180910390fd5b80600e8190555050565b6114d3613711565b6114dc82612845565b9050919050565b6060600380546114f290614b4c565b80601f016020809104026020016040519081016040528092919081815260200182805461151e90614b4c565b801561156b5780601f106115405761010080835404028352916020019161156b565b820191906000526020600020905b81548152906001019060200180831161154e57829003601f168201915b5050505050905090565b600e5481565b6115836121b4565b73ffffffffffffffffffffffffffffffffffffffff166115a161141c565b73ffffffffffffffffffffffffffffffffffffffff16146115f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ee90614577565b60405180910390fd5b600a60009054906101000a900460ff1615600a60006101000a81548160ff021916908315150217905550565b61162b6121b4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611699576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611690906145b7565b60405180910390fd5b80600760006116a66121b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166117536121b4565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611798919061437a565b60405180910390a35050565b6117ac6121b4565b73ffffffffffffffffffffffffffffffffffffffff166117ca61141c565b73ffffffffffffffffffffffffffffffffffffffff1614611820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181790614577565b60405180910390fd5b600a60029054906101000a900460ff1615600a60026101000a81548160ff021916908315150217905550565b61185784848461226e565b61186384848484612b0c565b6118a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189990614657565b60405180910390fd5b50505050565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190d906144d7565b60405180910390fd5b600a60019054906101000a900460ff168061193d5750600a60009054906101000a900460ff165b61197c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197390614637565b60405180910390fd5b600c548261198933611e5a565b61199391906148e9565b11156119d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cb906144f7565b60405180910390fd5b60008211611a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0e906146d7565b60405180910390fd5b600b54821115611a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a53906143d7565b60405180910390fd5b600d5482611a68610d73565b611a7291906148e9565b10611ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa9906145f7565b60405180910390fd5b600a60019054906101000a900460ff1615611b1057611ad081612ca3565b611b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0690614457565b60405180910390fd5b5b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611bb75781600e54611b709190614970565b341015611bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba990614417565b60405180910390fd5b611c6d565b600e5482600e54611bc89190614970565b611bd291906149fe565b341015611c14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0b90614417565b60405180910390fd5b6001601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b611c773383612827565b5050565b6060611c86826121a6565b611cc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbc90614597565b60405180910390fd5b60001515600a60029054906101000a900460ff1615151415611d735760108054611cee90614b4c565b80601f0160208091040260200160405190810160405280929190818152602001828054611d1a90614b4c565b8015611d675780601f10611d3c57610100808354040283529160200191611d67565b820191906000526020600020905b815481529060010190602001808311611d4a57829003601f168201915b50505050509050611dc3565b6000611d7e83612ce4565b90506000815111611d9e5760405180602001604052806000815250611dbf565b80604051602001611daf91906142f1565b6040516020818303038152906040525b9150505b919050565b600d5481565b60085481565b611ddc6121b4565b73ffffffffffffffffffffffffffffffffffffffff16611dfa61141c565b73ffffffffffffffffffffffffffffffffffffffff1614611e50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4790614577565b60405180910390fd5b8060118190555050565b6000611e6582612d8b565b9050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611f086121b4565b73ffffffffffffffffffffffffffffffffffffffff16611f2661141c565b73ffffffffffffffffffffffffffffffffffffffff1614611f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7390614577565b60405180910390fd5b8060109080519060200190611f9292919061374b565b5050565b611f9e6121b4565b73ffffffffffffffffffffffffffffffffffffffff16611fbc61141c565b73ffffffffffffffffffffffffffffffffffffffff1614612012576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200990614577565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612082576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612079906143f7565b60405180910390fd5b61208b81612a48565b50565b6120966121b4565b73ffffffffffffffffffffffffffffffffffffffff166120b461141c565b73ffffffffffffffffffffffffffffffffffffffff161461210a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210190614577565b60405180910390fd5b600a60019054906101000a900460ff1615600a60016101000a81548160ff021916908315150217905550565b600b5481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600060015482109050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600061227982612845565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff166122a06121b4565b73ffffffffffffffffffffffffffffffffffffffff1614806122fc57506122c56121b4565b73ffffffffffffffffffffffffffffffffffffffff166122e484610b47565b73ffffffffffffffffffffffffffffffffffffffff16145b80612318575061231782600001516123126121b4565b611e6c565b5b90508061235a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612351906145d7565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16146123cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c390614557565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561243c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243390614497565b60405180910390fd5b6124498585856001612e74565b61245960008484600001516121bc565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166124c791906149ca565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff1661256b91906148a3565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600060018461267191906148e9565b9050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156127b7576126e7816121a6565b156127b6576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506004600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461281f8686866001612e7a565b505050505050565b612841828260405180602001604052806000815250612e80565b5050565b61284d613711565b612856826121a6565b612895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288c90614437565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000fa83106128f95760017f00000000000000000000000000000000000000000000000000000000000000fa846128ec91906149fe565b6128f691906148e9565b90505b60008390505b818110612a07576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146129f357809350505050612a43565b5080806129ff90614b22565b9150506128ff565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3a90614717565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612b2d8473ffffffffffffffffffffffffffffffffffffffff16613360565b15612c96578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612b566121b4565b8786866040518563ffffffff1660e01b8152600401612b78949392919061432e565b602060405180830381600087803b158015612b9257600080fd5b505af1925050508015612bc357506040513d601f19601f82011682018060405250810190612bc09190613c15565b60015b612c46573d8060008114612bf3576040519150601f19603f3d011682016040523d82523d6000602084013e612bf8565b606091505b50600081511415612c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3590614657565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612c9b565b600190505b949350505050565b60008033604051602001612cb791906142b2565b604051602081830303815290604052805190602001209050612cdc8360115483613383565b915050919050565b6060612cef826121a6565b612d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2590614597565b60405180910390fd5b6000612d3861339a565b90506000815111612d585760405180602001604052806000815250612d83565b80612d628461342c565b604051602001612d739291906142cd565b6040516020818303038152906040525b915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df3906144b7565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b50505050565b50505050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eee90614697565b60405180910390fd5b612f00816121a6565b15612f40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3790614677565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000fa831115612fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9a90614757565b60405180910390fd5b612fb06000858386612e74565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681525050905060405180604001604052808583600001516130ad91906148a3565b6fffffffffffffffffffffffffffffffff1681526020018583602001516130d491906148a3565b6fffffffffffffffffffffffffffffffff16815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b8581101561334357818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46132e36000888488612b0c565b613322576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331990614657565b60405180910390fd5b818061332d90614baf565b925050808061333b90614baf565b915050613272565b50806001819055506133586000878588612e7a565b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008261339085846135d9565b1490509392505050565b6060600f80546133a990614b4c565b80601f01602080910402602001604051908101604052809291908181526020018280546133d590614b4c565b80156134225780601f106133f757610100808354040283529160200191613422565b820191906000526020600020905b81548152906001019060200180831161340557829003601f168201915b5050505050905090565b60606000821415613474576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506135d4565b600082905060005b600082146134a657808061348f90614baf565b915050600a8261349f919061493f565b915061347c565b60008167ffffffffffffffff8111156134e8577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561351a5781602001600182028036833780820191505090505b5090505b600085146135cd5760018261353391906149fe565b9150600a856135429190614c1c565b603061354e91906148e9565b60f81b81838151811061358a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856135c6919061493f565b945061351e565b8093505050505b919050565b60008082905060005b8451811015613669576000858281518110613626577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050808311613648576136418382613674565b9250613655565b6136528184613674565b92505b50808061366190614baf565b9150506135e2565b508091505092915050565b600082600052816020526040600020905092915050565b82805461369790614b4c565b90600052602060002090601f0160209004810192826136b95760008555613700565b82601f106136d257803560ff1916838001178555613700565b82800160010185558215613700579182015b828111156136ff5782358255916020019190600101906136e4565b5b50905061370d91906137d1565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b82805461375790614b4c565b90600052602060002090601f01602090048101928261377957600085556137c0565b82601f1061379257805160ff19168380011785556137c0565b828001600101855582156137c0579182015b828111156137bf5782518255916020019190600101906137a4565b5b5090506137cd91906137d1565b5090565b5b808211156137ea5760008160009055506001016137d2565b5090565b60006138016137fc846147d2565b6147ad565b9050808382526020820190508285602086028201111561382057600080fd5b60005b858110156138505781613836888261392a565b845260208401935060208301925050600181019050613823565b5050509392505050565b600061386d613868846147fe565b6147ad565b90508281526020810184848401111561388557600080fd5b613890848285614ae0565b509392505050565b60006138ab6138a68461482f565b6147ad565b9050828152602081018484840111156138c357600080fd5b6138ce848285614ae0565b509392505050565b6000813590506138e581615516565b92915050565b600082601f8301126138fc57600080fd5b813561390c8482602086016137ee565b91505092915050565b6000813590506139248161552d565b92915050565b60008135905061393981615544565b92915050565b60008135905061394e8161555b565b92915050565b6000815190506139638161555b565b92915050565b600082601f83011261397a57600080fd5b813561398a84826020860161385a565b91505092915050565b60008083601f8401126139a557600080fd5b8235905067ffffffffffffffff8111156139be57600080fd5b6020830191508360018202830111156139d657600080fd5b9250929050565b600082601f8301126139ee57600080fd5b81356139fe848260208601613898565b91505092915050565b600081359050613a1681615572565b92915050565b600060208284031215613a2e57600080fd5b6000613a3c848285016138d6565b91505092915050565b60008060408385031215613a5857600080fd5b6000613a66858286016138d6565b9250506020613a77858286016138d6565b9150509250929050565b600080600060608486031215613a9657600080fd5b6000613aa4868287016138d6565b9350506020613ab5868287016138d6565b9250506040613ac686828701613a07565b9150509250925092565b60008060008060808587031215613ae657600080fd5b6000613af4878288016138d6565b9450506020613b05878288016138d6565b9350506040613b1687828801613a07565b925050606085013567ffffffffffffffff811115613b3357600080fd5b613b3f87828801613969565b91505092959194509250565b60008060408385031215613b5e57600080fd5b6000613b6c858286016138d6565b9250506020613b7d85828601613915565b9150509250929050565b60008060408385031215613b9a57600080fd5b6000613ba8858286016138d6565b9250506020613bb985828601613a07565b9150509250929050565b600060208284031215613bd557600080fd5b6000613be38482850161392a565b91505092915050565b600060208284031215613bfe57600080fd5b6000613c0c8482850161393f565b91505092915050565b600060208284031215613c2757600080fd5b6000613c3584828501613954565b91505092915050565b60008060208385031215613c5157600080fd5b600083013567ffffffffffffffff811115613c6b57600080fd5b613c7785828601613993565b92509250509250929050565b600060208284031215613c9557600080fd5b600082013567ffffffffffffffff811115613caf57600080fd5b613cbb848285016139dd565b91505092915050565b600060208284031215613cd657600080fd5b6000613ce484828501613a07565b91505092915050565b60008060408385031215613d0057600080fd5b6000613d0e85828601613a07565b925050602083013567ffffffffffffffff811115613d2b57600080fd5b613d37858286016138eb565b9150509250929050565b613d4a81614a32565b82525050565b613d5981614a32565b82525050565b613d70613d6b82614a32565b614bf8565b82525050565b613d7f81614a44565b82525050565b6000613d9082614860565b613d9a8185614876565b9350613daa818560208601614aef565b613db381614d09565b840191505092915050565b6000613dc98261486b565b613dd38185614887565b9350613de3818560208601614aef565b613dec81614d09565b840191505092915050565b6000613e028261486b565b613e0c8185614898565b9350613e1c818560208601614aef565b80840191505092915050565b6000613e35602283614887565b9150613e4082614d27565b604082019050919050565b6000613e58601583614887565b9150613e6382614d76565b602082019050919050565b6000613e7b602683614887565b9150613e8682614d9f565b604082019050919050565b6000613e9e600b83614887565b9150613ea982614dee565b602082019050919050565b6000613ec1602a83614887565b9150613ecc82614e17565b604082019050919050565b6000613ee4601783614887565b9150613eef82614e66565b602082019050919050565b6000613f07602383614887565b9150613f1282614e8f565b604082019050919050565b6000613f2a602583614887565b9150613f3582614ede565b604082019050919050565b6000613f4d603183614887565b9150613f5882614f2d565b604082019050919050565b6000613f70601e83614887565b9150613f7b82614f7c565b602082019050919050565b6000613f93601883614887565b9150613f9e82614fa5565b602082019050919050565b6000613fb6603983614887565b9150613fc182614fce565b604082019050919050565b6000613fd9602b83614887565b9150613fe48261501d565b604082019050919050565b6000613ffc602683614887565b91506140078261506c565b604082019050919050565b600061401f600583614898565b915061402a826150bb565b600582019050919050565b6000614042602083614887565b915061404d826150e4565b602082019050919050565b6000614065602f83614887565b91506140708261510d565b604082019050919050565b6000614088601a83614887565b91506140938261515c565b602082019050919050565b60006140ab603283614887565b91506140b682615185565b604082019050919050565b60006140ce602883614887565b91506140d9826151d4565b604082019050919050565b60006140f1602283614887565b91506140fc82615223565b604082019050919050565b6000614114601883614887565b915061411f82615272565b602082019050919050565b6000614137603383614887565b91506141428261529b565b604082019050919050565b600061415a601d83614887565b9150614165826152ea565b602082019050919050565b600061417d602183614887565b915061418882615313565b604082019050919050565b60006141a0602c83614887565b91506141ab82615362565b604082019050919050565b60006141c3601083614887565b91506141ce826153b1565b602082019050919050565b60006141e6602e83614887565b91506141f1826153da565b604082019050919050565b6000614209602f83614887565b915061421482615429565b604082019050919050565b600061422c602d83614887565b915061423782615478565b604082019050919050565b600061424f602283614887565b915061425a826154c7565b604082019050919050565b60408201600082015161427b6000850182613d41565b50602082015161428e60208501826142a3565b50505050565b61429d81614ac2565b82525050565b6142ac81614acc565b82525050565b60006142be8284613d5f565b60148201915081905092915050565b60006142d98285613df7565b91506142e58284613df7565b91508190509392505050565b60006142fd8284613df7565b915061430882614012565b915081905092915050565b60006020820190506143286000830184613d50565b92915050565b60006080820190506143436000830187613d50565b6143506020830186613d50565b61435d6040830185614294565b818103606083015261436f8184613d85565b905095945050505050565b600060208201905061438f6000830184613d76565b92915050565b600060208201905081810360008301526143af8184613dbe565b905092915050565b600060208201905081810360008301526143d081613e28565b9050919050565b600060208201905081810360008301526143f081613e4b565b9050919050565b6000602082019050818103600083015261441081613e6e565b9050919050565b6000602082019050818103600083015261443081613e91565b9050919050565b6000602082019050818103600083015261445081613eb4565b9050919050565b6000602082019050818103600083015261447081613ed7565b9050919050565b6000602082019050818103600083015261449081613efa565b9050919050565b600060208201905081810360008301526144b081613f1d565b9050919050565b600060208201905081810360008301526144d081613f40565b9050919050565b600060208201905081810360008301526144f081613f63565b9050919050565b6000602082019050818103600083015261451081613f86565b9050919050565b6000602082019050818103600083015261453081613fa9565b9050919050565b6000602082019050818103600083015261455081613fcc565b9050919050565b6000602082019050818103600083015261457081613fef565b9050919050565b6000602082019050818103600083015261459081614035565b9050919050565b600060208201905081810360008301526145b081614058565b9050919050565b600060208201905081810360008301526145d08161407b565b9050919050565b600060208201905081810360008301526145f08161409e565b9050919050565b60006020820190508181036000830152614610816140c1565b9050919050565b60006020820190508181036000830152614630816140e4565b9050919050565b6000602082019050818103600083015261465081614107565b9050919050565b600060208201905081810360008301526146708161412a565b9050919050565b600060208201905081810360008301526146908161414d565b9050919050565b600060208201905081810360008301526146b081614170565b9050919050565b600060208201905081810360008301526146d081614193565b9050919050565b600060208201905081810360008301526146f0816141b6565b9050919050565b60006020820190508181036000830152614710816141d9565b9050919050565b60006020820190508181036000830152614730816141fc565b9050919050565b600060208201905081810360008301526147508161421f565b9050919050565b6000602082019050818103600083015261477081614242565b9050919050565b600060408201905061478c6000830184614265565b92915050565b60006020820190506147a76000830184614294565b92915050565b60006147b76147c8565b90506147c38282614b7e565b919050565b6000604051905090565b600067ffffffffffffffff8211156147ed576147ec614cda565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561481957614818614cda565b5b61482282614d09565b9050602081019050919050565b600067ffffffffffffffff82111561484a57614849614cda565b5b61485382614d09565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006148ae82614a86565b91506148b983614a86565b9250826fffffffffffffffffffffffffffffffff038211156148de576148dd614c4d565b5b828201905092915050565b60006148f482614ac2565b91506148ff83614ac2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561493457614933614c4d565b5b828201905092915050565b600061494a82614ac2565b915061495583614ac2565b92508261496557614964614c7c565b5b828204905092915050565b600061497b82614ac2565b915061498683614ac2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156149bf576149be614c4d565b5b828202905092915050565b60006149d582614a86565b91506149e083614a86565b9250828210156149f3576149f2614c4d565b5b828203905092915050565b6000614a0982614ac2565b9150614a1483614ac2565b925082821015614a2757614a26614c4d565b5b828203905092915050565b6000614a3d82614aa2565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b83811015614b0d578082015181840152602081019050614af2565b83811115614b1c576000848401525b50505050565b6000614b2d82614ac2565b91506000821415614b4157614b40614c4d565b5b600182039050919050565b60006002820490506001821680614b6457607f821691505b60208210811415614b7857614b77614cab565b5b50919050565b614b8782614d09565b810181811067ffffffffffffffff82111715614ba657614ba5614cda565b5b80604052505050565b6000614bba82614ac2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614bed57614bec614c4d565b5b600182019050919050565b6000614c0382614c0a565b9050919050565b6000614c1582614d1a565b9050919050565b6000614c2782614ac2565b9150614c3283614ac2565b925082614c4257614c41614c7c565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f43414e4e4f545f4d494e545f544841545f4d414e590000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f494e56414c49445f455448000000000000000000000000000000000000000000600082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f414444524553535f4e4f545f57484954454c4953544544000000000000000000600082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b7f5045525f57414c4c45545f4c494d49545f524541434845440000000000000000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f4e4f545f454e4f5547485f535550504c595f544f5f4d494e545f44455349524560008201527f445f414d4f554e54000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b7f53414c455f4841535f4e4f545f535441525445445f5945540000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f4e4f545f454e4f5547485f535550504c595f544f5f47495645415741595f444560008201527f53495245445f414d4f554e540000000000000000000000000000000000000000602082015250565b7f494e56414c49445f5155414e5449545900000000000000000000000000000000600082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b61551f81614a32565b811461552a57600080fd5b50565b61553681614a44565b811461554157600080fd5b50565b61554d81614a50565b811461555857600080fd5b50565b61556481614a5a565b811461556f57600080fd5b50565b61557b81614ac2565b811461558657600080fd5b5056fea26469706673582212200a1a3b48d66e47d13d67e2aadd85540a29b1f9bf16bd6f029380689236db4e4664736f6c63430008040033

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

00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000e74726f6c6c2d746f776e2e77746600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055454575446000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _NAME (string): troll-town.wtf
Arg [1] : _SYMBOL (string): TTWTF

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000e
Arg [3] : 74726f6c6c2d746f776e2e777466000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [5] : 5454575446000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

24340:3953:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13248:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15034:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16243:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24713:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15824:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12038:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17078:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12378:864;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24445:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24408:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24830:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28181:109;;;;;;;;;;;;;:::i;:::-;;17246:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27090:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12144:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24485:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27847:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14904:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24557:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13676:258;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7232:94;;;;;;;;;;;;;:::i;:::-;;7013:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27446:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25251:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15140:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24636:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27640:93;;;;;;;;;;;;;:::i;:::-;;16541:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28097:76;;;;;;;;;;;;;:::i;:::-;;17429:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26198:884;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25426:559;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24598:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21050:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27550:82;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25130:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16858:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27961:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7332:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27741:98;;;;;;;;;;;;;:::i;:::-;;24522:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13248:422;13395:4;13452:25;13437:40;;;:11;:40;;;;:105;;;;13509:33;13494:48;;;:11;:48;;;;13437:105;:172;;;;13574:35;13559:50;;;:11;:50;;;;13437:172;:225;;;;13626:36;13650:11;13626:23;:36::i;:::-;13437:225;13417:245;;13248:422;;;:::o;15034:100::-;15088:13;15121:5;15114:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15034:100;:::o;16243:292::-;16347:7;16394:16;16402:7;16394;:16::i;:::-;16372:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;16503:15;:24;16519:7;16503:24;;;;;;;;;;;;;;;;;;;;;16496:31;;16243:292;;;:::o;24713:87::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15824:413::-;15897:13;15913:24;15929:7;15913:15;:24::i;:::-;15897:40;;15962:5;15956:11;;:2;:11;;;;15948:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;16057:5;16041:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;16066:37;16083:5;16090:12;:10;:12::i;:::-;16066:16;:37::i;:::-;16041:62;16019:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;16201:28;16210:2;16214:7;16223:5;16201:8;:28::i;:::-;15824:413;;;:::o;12038:100::-;12091:7;12118:12;;12111:19;;12038:100;:::o;17078:162::-;17204:28;17214:4;17220:2;17224:7;17204:9;:28::i;:::-;17078:162;;;:::o;12378:864::-;12503:7;12544:16;12554:5;12544:9;:16::i;:::-;12536:5;:24;12528:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12610:22;12635:13;:11;:13::i;:::-;12610:38;;12659:19;12693:25;12747:9;12742:426;12766:14;12762:1;:18;12742:426;;;12802:31;12836:11;:14;12848:1;12836:14;;;;;;;;;;;12802:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12895:1;12869:28;;:9;:14;;;:28;;;12865:103;;12938:9;:14;;;12918:34;;12865:103;13007:5;12986:26;;:17;:26;;;12982:175;;;13052:5;13037:11;:20;13033:77;;;13089:1;13082:8;;;;;;;;;13033:77;13128:13;;;;;:::i;:::-;;;;12982:175;12742:426;12782:3;;;;;:::i;:::-;;;;12742:426;;;;13178:56;;;;;;;;;;:::i;:::-;;;;;;;;12378:864;;;;;:::o;24445:33::-;;;;;;;;;;;;;:::o;24408:30::-;;;;;;;;;;;;;:::o;24830:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;28181:109::-;7157:12;:10;:12::i;:::-;7146:23;;:7;:5;:7::i;:::-;:23;;;7138:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28239:10:::1;28231:28;;:51;28260:21;28231:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;28181:109::o:0;17246:177::-;17376:39;17393:4;17399:2;17403:7;17376:39;;;;;;;;;;;;:16;:39::i;:::-;17246:177;;;:::o;27090:226::-;7157:12;:10;:12::i;:::-;7146:23;;:7;:5;:7::i;:::-;:23;;;7138:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27211:8:::1;;27199;27183:13;:11;:13::i;:::-;:24;;;;:::i;:::-;:36;;27175:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;27279:29;27289:8;27299;27279:9;:29::i;:::-;27090:226:::0;;:::o;12144:228::-;12247:7;12288:13;:11;:13::i;:::-;12280:5;:21;12272:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12359:5;12352:12;;12144:228;;;:::o;24485:28::-;;;;;;;;;;;;;:::o;27847:106::-;7157:12;:10;:12::i;:::-;7146:23;;:7;:5;:7::i;:::-;:23;;;7138:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27938:7:::1;;27922:13;:23;;;;;;;:::i;:::-;;27847:106:::0;;:::o;14904:124::-;14968:7;14995:20;15007:7;14995:11;:20::i;:::-;:25;;;14988:32;;14904:124;;;:::o;24557:34::-;;;;:::o;13676:258::-;13740:7;13799:1;13782:19;;:5;:19;;;;13760:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;13898:12;:19;13911:5;13898:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;13890:36;;13883:43;;13676:258;;;:::o;7232:94::-;7157:12;:10;:12::i;:::-;7146:23;;:7;:5;:7::i;:::-;:23;;;7138:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7297:21:::1;7315:1;7297:9;:21::i;:::-;7232:94::o:0;7013:87::-;7059:7;7086:6;;;;;;;;;;;7079:13;;7013:87;:::o;27446:96::-;7157:12;:10;:12::i;:::-;7146:23;;:7;:5;:7::i;:::-;:23;;;7138:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27523:11:::1;27515:5;:19;;;;27446:96:::0;:::o;25251:167::-;25344:21;;:::i;:::-;25390:20;25402:7;25390:11;:20::i;:::-;25383:27;;25251:167;;;:::o;15140:104::-;15196:13;15229:7;15222:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15140:104;:::o;24636:33::-;;;;:::o;27640:93::-;7157:12;:10;:12::i;:::-;7146:23;;:7;:5;:7::i;:::-;:23;;;7138:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27715:10:::1;;;;;;;;;;;27714:11;27701:10;;:24;;;;;;;;;;;;;;;;;;27640:93::o:0;16541:311::-;16671:12;:10;:12::i;:::-;16659:24;;:8;:24;;;;16651:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;16772:8;16727:18;:32;16746:12;:10;:12::i;:::-;16727:32;;;;;;;;;;;;;;;:42;16760:8;16727:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;16825:8;16796:48;;16811:12;:10;:12::i;:::-;16796:48;;;16835:8;16796:48;;;;;;:::i;:::-;;;;;;;;16541:311;;:::o;28097:76::-;7157:12;:10;:12::i;:::-;7146:23;;:7;:5;:7::i;:::-;:23;;;7138:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28157:8:::1;;;;;;;;;;;28156:9;28145:8;;:20;;;;;;;;;;;;;;;;;;28097:76::o:0;17429:355::-;17588:28;17598:4;17604:2;17608:7;17588:9;:28::i;:::-;17649:48;17672:4;17678:2;17682:7;17691:5;17649:22;:48::i;:::-;17627:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;17429:355;;;;:::o;26198:884::-;25057:10;25044:23;;:9;:23;;;25036:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;26303:13:::1;;;;;;;;;;;:27;;;;26320:10;;;;;;;;;;;26303:27;26295:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26417:13;;26405:8;26378:24;26391:10;26378:12;:24::i;:::-;:35;;;;:::i;:::-;:52;;26370:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;26489:1;26478:8;:12;26470:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;26542:8;;26530;:20;;26522:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;26622:8;;26611;26595:13;:11;:13::i;:::-;:24;;;;:::i;:::-;:35;26587:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;26689:13;;;;;;;;;;;26686:93;;;26726:13;26733:5;26726:6;:13::i;:::-;26718:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;26686:93;26792:10;:22;26803:10;26792:22;;;;;;;;;;;;;;;;;;;;;;;;;26789:244;;;26859:8;26851:5;;:16;;;;:::i;:::-;26838:9;:29;;26830:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;26789:244;;;26956:5;;26944:8;26936:5;;:16;;;;:::i;:::-;26935:26;;;;:::i;:::-;26922:9;:39;;26914:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;27017:4;26992:10;:22;27003:10;26992:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;26789:244;27043:31;27053:10;27065:8;27043:9;:31::i;:::-;26198:884:::0;;:::o;25426:559::-;25544:13;25597:16;25605:7;25597;:16::i;:::-;25575:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;25717:5;25705:17;;:8;;;;;;;;;;;:17;;;25701:71;;;25746:14;25739:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25701:71;25784:23;25810;25825:7;25810:14;:23::i;:::-;25784:49;;25890:1;25870:9;25864:23;:27;:113;;;;;;;;;;;;;;;;;25935:9;25918:36;;;;;;;;:::i;:::-;;;;;;;;;;;;;25864:113;25844:133;;;25426:559;;;;:::o;24598:31::-;;;;:::o;21050:43::-;;;;:::o;27550:82::-;7157:12;:10;:12::i;:::-;7146:23;;:7;:5;:7::i;:::-;:23;;;7138:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27619:5:::1;27612:4;:12;;;;27550:82:::0;:::o;25130:113::-;25188:7;25215:20;25229:5;25215:13;:20::i;:::-;25208:27;;25130:113;;;:::o;16858:214::-;17000:4;17029:18;:25;17048:5;17029:25;;;;;;;;;;;;;;;:35;17055:8;17029:35;;;;;;;;;;;;;;;;;;;;;;;;;17022:42;;16858:214;;;;:::o;27961:128::-;7157:12;:10;:12::i;:::-;7146:23;;:7;:5;:7::i;:::-;:23;;;7138:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28066:15:::1;28049:14;:32;;;;;;;;;;;;:::i;:::-;;27961:128:::0;:::o;7332:229::-;7157:12;:10;:12::i;:::-;7146:23;;:7;:5;:7::i;:::-;:23;;;7138:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7455:1:::1;7435:22;;:8;:22;;;;7413:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;7534:19;7544:8;7534:9;:19::i;:::-;7332:229:::0;:::o;27741:98::-;7157:12;:10;:12::i;:::-;7146:23;;:7;:5;:7::i;:::-;:23;;;7138:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27818:13:::1;;;;;;;;;;;27817:14;27801:13;;:30;;;;;;;;;;;;;;;;;;27741:98::o:0;24522:28::-;;;;:::o;9545:207::-;9675:4;9719:25;9704:40;;;:11;:40;;;;9697:47;;9545:207;;;:::o;17790:111::-;17847:4;17881:12;;17871:7;:22;17864:29;;17790:111;;;:::o;6520:98::-;6573:7;6600:10;6593:17;;6520:98;:::o;20846:196::-;20988:2;20961:15;:24;20977:7;20961:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;21026:7;21022:2;21006:28;;21015:5;21006:28;;;;;;;;;;;;20846:196;;;:::o;19300:1540::-;19415:35;19453:20;19465:7;19453:11;:20::i;:::-;19415:58;;19486:22;19528:13;:18;;;19512:34;;:12;:10;:12::i;:::-;:34;;;:87;;;;19587:12;:10;:12::i;:::-;19563:36;;:20;19575:7;19563:11;:20::i;:::-;:36;;;19512:87;:154;;;;19616:50;19633:13;:18;;;19653:12;:10;:12::i;:::-;19616:16;:50::i;:::-;19512:154;19486:181;;19702:17;19680:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;19854:4;19832:26;;:13;:18;;;:26;;;19810:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;19957:1;19943:16;;:2;:16;;;;19935:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;20014:43;20036:4;20042:2;20046:7;20055:1;20014:21;:43::i;:::-;20068:49;20085:1;20089:7;20098:13;:18;;;20068:8;:49::i;:::-;20160:1;20130:12;:18;20143:4;20130:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20200:1;20172:12;:16;20185:2;20172:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20235:43;;;;;;;;20250:2;20235:43;;;;;;20261:15;20235:43;;;;;20212:11;:20;20224:7;20212:20;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20403:19;20435:1;20425:7;:11;;;;:::i;:::-;20403:33;;20492:1;20451:43;;:11;:24;20463:11;20451:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;20447:288;;;20515:20;20523:11;20515:7;:20::i;:::-;20511:213;;;20583:125;;;;;;;;20620:13;:18;;;20583:125;;;;;;20661:13;:28;;;20583:125;;;;;20556:11;:24;20568:11;20556:24;;;;;;;;;;;:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20511:213;20447:288;20771:7;20767:2;20752:27;;20761:4;20752:27;;;;;;;;;;;;20790:42;20811:4;20817:2;20821:7;20830:1;20790:20;:42::i;:::-;19300:1540;;;;;;:::o;17909:104::-;17978:27;17988:2;17992:8;17978:27;;;;;;;;;;;;:9;:27::i;:::-;17909:104;;:::o;14216:682::-;14304:21;;:::i;:::-;14351:16;14359:7;14351;:16::i;:::-;14343:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14427:26;14479:12;14468:7;:23;14464:103;;14554:1;14539:12;14529:7;:22;;;;:::i;:::-;:26;;;;:::i;:::-;14508:47;;14464:103;14584:12;14599:7;14584:22;;14579:242;14616:18;14608:4;:26;14579:242;;14659:31;14693:11;:17;14705:4;14693:17;;;;;;;;;;;14659:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14755:1;14729:28;;:9;:14;;;:28;;;14725:85;;14785:9;14778:16;;;;;;;14725:85;14579:242;14636:6;;;;;:::i;:::-;;;;14579:242;;;;14833:57;;;;;;;;;;:::i;:::-;;;;;;;;14216:682;;;;:::o;7569:173::-;7625:16;7644:6;;;;;;;;;;;7625:25;;7670:8;7661:6;;:17;;;;;;;;;;;;;;;;;;7725:8;7694:40;;7715:8;7694:40;;;;;;;;;;;;7569:173;;:::o;21951:985::-;22106:4;22127:15;:2;:13;;;:15::i;:::-;22123:806;;;22196:2;22180:36;;;22239:12;:10;:12::i;:::-;22274:4;22301:7;22331:5;22180:175;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;22159:715;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22559:1;22542:6;:13;:18;22538:321;;;22585:109;;;;;;;;;;:::i;:::-;;;;;;;;22538:321;22809:6;22803:13;22794:6;22790:2;22786:15;22779:38;22159:715;22429:45;;;22419:55;;;:6;:55;;;;22412:62;;;;;22123:806;22913:4;22906:11;;21951:985;;;;;;;:::o;25993:197::-;26056:4;26073:12;26115:10;26098:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;26088:39;;;;;;26073:54;;26145:37;26164:5;26171:4;;26177;26145:18;:37::i;:::-;26138:44;;;25993:197;;;:::o;15250:468::-;15368:13;15421:16;15429:7;15421;:16::i;:::-;15399:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;15525:21;15549:10;:8;:10::i;:::-;15525:34;;15614:1;15596:7;15590:21;:25;:120;;;;;;;;;;;;;;;;;15659:7;15668:18;:7;:16;:18::i;:::-;15642:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15590:120;15570:140;;;15250:468;;;:::o;13942:266::-;14003:7;14062:1;14045:19;;:5;:19;;;;14023:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;14167:12;:19;14180:5;14167:19;;;;;;;;;;;;;;;:32;;;;;;;;;;;;14159:41;;14152:48;;13942:266;;;:::o;22942:159::-;;;;;:::o;23107:158::-;;;;;:::o;18019:1275::-;18142:20;18165:12;;18142:35;;18210:1;18196:16;;:2;:16;;;;18188:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;18270:21;18278:12;18270:7;:21::i;:::-;18269:22;18261:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18356:12;18344:8;:24;;18336:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;18420:61;18450:1;18454:2;18458:12;18472:8;18420:21;:61::i;:::-;18494:30;18527:12;:16;18540:2;18527:16;;;;;;;;;;;;;;;18494:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18573:135;;;;;;;;18629:8;18599:11;:19;;;:39;;;;:::i;:::-;18573:135;;;;;;18688:8;18653:11;:24;;;:44;;;;:::i;:::-;18573:135;;;;;18554:12;:16;18567:2;18554:16;;;;;;;;;;;;;;;:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18747:43;;;;;;;;18762:2;18747:43;;;;;;18773:15;18747:43;;;;;18719:11;:25;18731:12;18719:25;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18803:20;18826:12;18803:35;;18856:9;18851:325;18875:8;18871:1;:12;18851:325;;;18935:12;18931:2;18910:38;;18927:1;18910:38;;;;;;;;;;;;18989:59;19020:1;19024:2;19028:12;19042:5;18989:22;:59::i;:::-;18963:172;;;;;;;;;;;;:::i;:::-;;;;;;;;;19150:14;;;;;:::i;:::-;;;;18885:3;;;;;:::i;:::-;;;;18851:325;;;;19203:12;19188;:27;;;;19226:60;19255:1;19259:2;19263:12;19277:8;19226:20;:60::i;:::-;18019:1275;;;;;;:::o;2526:117::-;2586:4;2634:1;2612:7;:19;;;:23;2605:30;;2526:117;;;:::o;23324:190::-;23449:4;23502;23473:25;23486:5;23493:4;23473:12;:25::i;:::-;:33;23466:40;;23324:190;;;;;:::o;27324:114::-;27384:13;27417;27410:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27324:114;:::o;7914:656::-;7970:13;8133:1;8124:5;:10;8120:53;;;8151:10;;;;;;;;;;;;;;;;;;;;;8120:53;8183:12;8198:5;8183:20;;8214:14;8239:78;8254:1;8246:4;:9;8239:78;;8272:8;;;;;:::i;:::-;;;;8303:2;8295:10;;;;;:::i;:::-;;;8239:78;;;8327:19;8359:6;8349:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8327:39;;8377:154;8393:1;8384:5;:10;8377:154;;8421:1;8411:11;;;;;:::i;:::-;;;8488:2;8480:5;:10;;;;:::i;:::-;8467:2;:24;;;;:::i;:::-;8454:39;;8437:6;8444;8437:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;8517:2;8508:11;;;;;:::i;:::-;;;8377:154;;;8555:6;8541:21;;;;;7914:656;;;;:::o;23520:549::-;23630:7;23655:20;23678:4;23655:27;;23698:9;23693:339;23717:5;:12;23713:1;:16;23693:339;;;23751:20;23774:5;23780:1;23774:8;;;;;;;;;;;;;;;;;;;;;;23751:31;;23817:12;23801;:28;23797:224;;23865:42;23880:12;23894;23865:14;:42::i;:::-;23850:57;;23797:224;;;23963:42;23978:12;23992;23963:14;:42::i;:::-;23948:57;;23797:224;23693:339;23731:3;;;;;:::i;:::-;;;;23693:339;;;;24049:12;24042:19;;;23520:549;;;;:::o;24077:256::-;24172:13;24240:1;24234:4;24227:15;24269:1;24263:4;24256:15;24310:4;24304;24294:21;24285:30;;24212:114;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;685:343::-;762:5;787:65;803:48;844:6;803:48;:::i;:::-;787:65;:::i;:::-;778:74;;875:6;868:5;861:21;913:4;906:5;902:16;951:3;942:6;937:3;933:16;930:25;927:2;;;968:1;965;958:12;927:2;981:41;1015:6;1010:3;1005;981:41;:::i;:::-;768:260;;;;;;:::o;1034:345::-;1112:5;1137:66;1153:49;1195:6;1153:49;:::i;:::-;1137:66;:::i;:::-;1128:75;;1226:6;1219:5;1212:21;1264:4;1257:5;1253:16;1302:3;1293:6;1288:3;1284:16;1281:25;1278:2;;;1319:1;1316;1309:12;1278:2;1332:41;1366:6;1361:3;1356;1332:41;:::i;:::-;1118:261;;;;;;:::o;1385:139::-;1431:5;1469:6;1456:20;1447:29;;1485:33;1512:5;1485:33;:::i;:::-;1437:87;;;;:::o;1547:303::-;1618:5;1667:3;1660:4;1652:6;1648:17;1644:27;1634:2;;1685:1;1682;1675:12;1634:2;1725:6;1712:20;1750:94;1840:3;1832:6;1825:4;1817:6;1813:17;1750:94;:::i;:::-;1741:103;;1624:226;;;;;:::o;1856:133::-;1899:5;1937:6;1924:20;1915:29;;1953:30;1977:5;1953:30;:::i;:::-;1905:84;;;;:::o;1995:139::-;2041:5;2079:6;2066:20;2057:29;;2095:33;2122:5;2095:33;:::i;:::-;2047:87;;;;:::o;2140:137::-;2185:5;2223:6;2210:20;2201:29;;2239:32;2265:5;2239:32;:::i;:::-;2191:86;;;;:::o;2283:141::-;2339:5;2370:6;2364:13;2355:22;;2386:32;2412:5;2386:32;:::i;:::-;2345:79;;;;:::o;2443:271::-;2498:5;2547:3;2540:4;2532:6;2528:17;2524:27;2514:2;;2565:1;2562;2555:12;2514:2;2605:6;2592:20;2630:78;2704:3;2696:6;2689:4;2681:6;2677:17;2630:78;:::i;:::-;2621:87;;2504:210;;;;;:::o;2734:352::-;2792:8;2802:6;2852:3;2845:4;2837:6;2833:17;2829:27;2819:2;;2870:1;2867;2860:12;2819:2;2906:6;2893:20;2883:30;;2936:18;2928:6;2925:30;2922:2;;;2968:1;2965;2958:12;2922:2;3005:4;2997:6;2993:17;2981:29;;3059:3;3051:4;3043:6;3039:17;3029:8;3025:32;3022:41;3019:2;;;3076:1;3073;3066:12;3019:2;2809:277;;;;;:::o;3106:273::-;3162:5;3211:3;3204:4;3196:6;3192:17;3188:27;3178:2;;3229:1;3226;3219:12;3178:2;3269:6;3256:20;3294:79;3369:3;3361:6;3354:4;3346:6;3342:17;3294:79;:::i;:::-;3285:88;;3168:211;;;;;:::o;3385:139::-;3431:5;3469:6;3456:20;3447:29;;3485:33;3512:5;3485:33;:::i;:::-;3437:87;;;;:::o;3530:262::-;3589:6;3638:2;3626:9;3617:7;3613:23;3609:32;3606:2;;;3654:1;3651;3644:12;3606:2;3697:1;3722:53;3767:7;3758:6;3747:9;3743:22;3722:53;:::i;:::-;3712:63;;3668:117;3596:196;;;;:::o;3798:407::-;3866:6;3874;3923:2;3911:9;3902:7;3898:23;3894:32;3891:2;;;3939:1;3936;3929:12;3891:2;3982:1;4007:53;4052:7;4043:6;4032:9;4028:22;4007:53;:::i;:::-;3997:63;;3953:117;4109:2;4135:53;4180:7;4171:6;4160:9;4156:22;4135:53;:::i;:::-;4125:63;;4080:118;3881:324;;;;;:::o;4211:552::-;4288:6;4296;4304;4353:2;4341:9;4332:7;4328:23;4324:32;4321:2;;;4369:1;4366;4359:12;4321:2;4412:1;4437:53;4482:7;4473:6;4462:9;4458:22;4437:53;:::i;:::-;4427:63;;4383:117;4539:2;4565:53;4610:7;4601:6;4590:9;4586:22;4565:53;:::i;:::-;4555:63;;4510:118;4667:2;4693:53;4738:7;4729:6;4718:9;4714:22;4693:53;:::i;:::-;4683:63;;4638:118;4311:452;;;;;:::o;4769:809::-;4864:6;4872;4880;4888;4937:3;4925:9;4916:7;4912:23;4908:33;4905:2;;;4954:1;4951;4944:12;4905:2;4997:1;5022:53;5067:7;5058:6;5047:9;5043:22;5022:53;:::i;:::-;5012:63;;4968:117;5124:2;5150:53;5195:7;5186:6;5175:9;5171:22;5150:53;:::i;:::-;5140:63;;5095:118;5252:2;5278:53;5323:7;5314:6;5303:9;5299:22;5278:53;:::i;:::-;5268:63;;5223:118;5408:2;5397:9;5393:18;5380:32;5439:18;5431:6;5428:30;5425:2;;;5471:1;5468;5461:12;5425:2;5499:62;5553:7;5544:6;5533:9;5529:22;5499:62;:::i;:::-;5489:72;;5351:220;4895:683;;;;;;;:::o;5584:401::-;5649:6;5657;5706:2;5694:9;5685:7;5681:23;5677:32;5674:2;;;5722:1;5719;5712:12;5674:2;5765:1;5790:53;5835:7;5826:6;5815:9;5811:22;5790:53;:::i;:::-;5780:63;;5736:117;5892:2;5918:50;5960:7;5951:6;5940:9;5936:22;5918:50;:::i;:::-;5908:60;;5863:115;5664:321;;;;;:::o;5991:407::-;6059:6;6067;6116:2;6104:9;6095:7;6091:23;6087:32;6084:2;;;6132:1;6129;6122:12;6084:2;6175:1;6200:53;6245:7;6236:6;6225:9;6221:22;6200:53;:::i;:::-;6190:63;;6146:117;6302:2;6328:53;6373:7;6364:6;6353:9;6349:22;6328:53;:::i;:::-;6318:63;;6273:118;6074:324;;;;;:::o;6404:262::-;6463:6;6512:2;6500:9;6491:7;6487:23;6483:32;6480:2;;;6528:1;6525;6518:12;6480:2;6571:1;6596:53;6641:7;6632:6;6621:9;6617:22;6596:53;:::i;:::-;6586:63;;6542:117;6470:196;;;;:::o;6672:260::-;6730:6;6779:2;6767:9;6758:7;6754:23;6750:32;6747:2;;;6795:1;6792;6785:12;6747:2;6838:1;6863:52;6907:7;6898:6;6887:9;6883:22;6863:52;:::i;:::-;6853:62;;6809:116;6737:195;;;;:::o;6938:282::-;7007:6;7056:2;7044:9;7035:7;7031:23;7027:32;7024:2;;;7072:1;7069;7062:12;7024:2;7115:1;7140:63;7195:7;7186:6;7175:9;7171:22;7140:63;:::i;:::-;7130:73;;7086:127;7014:206;;;;:::o;7226:395::-;7297:6;7305;7354:2;7342:9;7333:7;7329:23;7325:32;7322:2;;;7370:1;7367;7360:12;7322:2;7441:1;7430:9;7426:17;7413:31;7471:18;7463:6;7460:30;7457:2;;;7503:1;7500;7493:12;7457:2;7539:65;7596:7;7587:6;7576:9;7572:22;7539:65;:::i;:::-;7521:83;;;;7384:230;7312:309;;;;;:::o;7627:375::-;7696:6;7745:2;7733:9;7724:7;7720:23;7716:32;7713:2;;;7761:1;7758;7751:12;7713:2;7832:1;7821:9;7817:17;7804:31;7862:18;7854:6;7851:30;7848:2;;;7894:1;7891;7884:12;7848:2;7922:63;7977:7;7968:6;7957:9;7953:22;7922:63;:::i;:::-;7912:73;;7775:220;7703:299;;;;:::o;8008:262::-;8067:6;8116:2;8104:9;8095:7;8091:23;8087:32;8084:2;;;8132:1;8129;8122:12;8084:2;8175:1;8200:53;8245:7;8236:6;8225:9;8221:22;8200:53;:::i;:::-;8190:63;;8146:117;8074:196;;;;:::o;8276:550::-;8369:6;8377;8426:2;8414:9;8405:7;8401:23;8397:32;8394:2;;;8442:1;8439;8432:12;8394:2;8485:1;8510:53;8555:7;8546:6;8535:9;8531:22;8510:53;:::i;:::-;8500:63;;8456:117;8640:2;8629:9;8625:18;8612:32;8671:18;8663:6;8660:30;8657:2;;;8703:1;8700;8693:12;8657:2;8731:78;8801:7;8792:6;8781:9;8777:22;8731:78;:::i;:::-;8721:88;;8583:236;8384:442;;;;;:::o;8832:108::-;8909:24;8927:5;8909:24;:::i;:::-;8904:3;8897:37;8887:53;;:::o;8946:118::-;9033:24;9051:5;9033:24;:::i;:::-;9028:3;9021:37;9011:53;;:::o;9070:157::-;9175:45;9195:24;9213:5;9195:24;:::i;:::-;9175:45;:::i;:::-;9170:3;9163:58;9153:74;;:::o;9233:109::-;9314:21;9329:5;9314:21;:::i;:::-;9309:3;9302:34;9292:50;;:::o;9348:360::-;9434:3;9462:38;9494:5;9462:38;:::i;:::-;9516:70;9579:6;9574:3;9516:70;:::i;:::-;9509:77;;9595:52;9640:6;9635:3;9628:4;9621:5;9617:16;9595:52;:::i;:::-;9672:29;9694:6;9672:29;:::i;:::-;9667:3;9663:39;9656:46;;9438:270;;;;;:::o;9714:364::-;9802:3;9830:39;9863:5;9830:39;:::i;:::-;9885:71;9949:6;9944:3;9885:71;:::i;:::-;9878:78;;9965:52;10010:6;10005:3;9998:4;9991:5;9987:16;9965:52;:::i;:::-;10042:29;10064:6;10042:29;:::i;:::-;10037:3;10033:39;10026:46;;9806:272;;;;;:::o;10084:377::-;10190:3;10218:39;10251:5;10218:39;:::i;:::-;10273:89;10355:6;10350:3;10273:89;:::i;:::-;10266:96;;10371:52;10416:6;10411:3;10404:4;10397:5;10393:16;10371:52;:::i;:::-;10448:6;10443:3;10439:16;10432:23;;10194:267;;;;;:::o;10467:366::-;10609:3;10630:67;10694:2;10689:3;10630:67;:::i;:::-;10623:74;;10706:93;10795:3;10706:93;:::i;:::-;10824:2;10819:3;10815:12;10808:19;;10613:220;;;:::o;10839:366::-;10981:3;11002:67;11066:2;11061:3;11002:67;:::i;:::-;10995:74;;11078:93;11167:3;11078:93;:::i;:::-;11196:2;11191:3;11187:12;11180:19;;10985:220;;;:::o;11211:366::-;11353:3;11374:67;11438:2;11433:3;11374:67;:::i;:::-;11367:74;;11450:93;11539:3;11450:93;:::i;:::-;11568:2;11563:3;11559:12;11552:19;;11357:220;;;:::o;11583:366::-;11725:3;11746:67;11810:2;11805:3;11746:67;:::i;:::-;11739:74;;11822:93;11911:3;11822:93;:::i;:::-;11940:2;11935:3;11931:12;11924:19;;11729:220;;;:::o;11955:366::-;12097:3;12118:67;12182:2;12177:3;12118:67;:::i;:::-;12111:74;;12194:93;12283:3;12194:93;:::i;:::-;12312:2;12307:3;12303:12;12296:19;;12101:220;;;:::o;12327:366::-;12469:3;12490:67;12554:2;12549:3;12490:67;:::i;:::-;12483:74;;12566:93;12655:3;12566:93;:::i;:::-;12684:2;12679:3;12675:12;12668:19;;12473:220;;;:::o;12699:366::-;12841:3;12862:67;12926:2;12921:3;12862:67;:::i;:::-;12855:74;;12938:93;13027:3;12938:93;:::i;:::-;13056:2;13051:3;13047:12;13040:19;;12845:220;;;:::o;13071:366::-;13213:3;13234:67;13298:2;13293:3;13234:67;:::i;:::-;13227:74;;13310:93;13399:3;13310:93;:::i;:::-;13428:2;13423:3;13419:12;13412:19;;13217:220;;;:::o;13443:366::-;13585:3;13606:67;13670:2;13665:3;13606:67;:::i;:::-;13599:74;;13682:93;13771:3;13682:93;:::i;:::-;13800:2;13795:3;13791:12;13784:19;;13589:220;;;:::o;13815:366::-;13957:3;13978:67;14042:2;14037:3;13978:67;:::i;:::-;13971:74;;14054:93;14143:3;14054:93;:::i;:::-;14172:2;14167:3;14163:12;14156:19;;13961:220;;;:::o;14187:366::-;14329:3;14350:67;14414:2;14409:3;14350:67;:::i;:::-;14343:74;;14426:93;14515:3;14426:93;:::i;:::-;14544:2;14539:3;14535:12;14528:19;;14333:220;;;:::o;14559:366::-;14701:3;14722:67;14786:2;14781:3;14722:67;:::i;:::-;14715:74;;14798:93;14887:3;14798:93;:::i;:::-;14916:2;14911:3;14907:12;14900:19;;14705:220;;;:::o;14931:366::-;15073:3;15094:67;15158:2;15153:3;15094:67;:::i;:::-;15087:74;;15170:93;15259:3;15170:93;:::i;:::-;15288:2;15283:3;15279:12;15272:19;;15077:220;;;:::o;15303:366::-;15445:3;15466:67;15530:2;15525:3;15466:67;:::i;:::-;15459:74;;15542:93;15631:3;15542:93;:::i;:::-;15660:2;15655:3;15651:12;15644:19;;15449:220;;;:::o;15675:400::-;15835:3;15856:84;15938:1;15933:3;15856:84;:::i;:::-;15849:91;;15949:93;16038:3;15949:93;:::i;:::-;16067:1;16062:3;16058:11;16051:18;;15839:236;;;:::o;16081:366::-;16223:3;16244:67;16308:2;16303:3;16244:67;:::i;:::-;16237:74;;16320:93;16409:3;16320:93;:::i;:::-;16438:2;16433:3;16429:12;16422:19;;16227:220;;;:::o;16453:366::-;16595:3;16616:67;16680:2;16675:3;16616:67;:::i;:::-;16609:74;;16692:93;16781:3;16692:93;:::i;:::-;16810:2;16805:3;16801:12;16794:19;;16599:220;;;:::o;16825:366::-;16967:3;16988:67;17052:2;17047:3;16988:67;:::i;:::-;16981:74;;17064:93;17153:3;17064:93;:::i;:::-;17182:2;17177:3;17173:12;17166:19;;16971:220;;;:::o;17197:366::-;17339:3;17360:67;17424:2;17419:3;17360:67;:::i;:::-;17353:74;;17436:93;17525:3;17436:93;:::i;:::-;17554:2;17549:3;17545:12;17538:19;;17343:220;;;:::o;17569:366::-;17711:3;17732:67;17796:2;17791:3;17732:67;:::i;:::-;17725:74;;17808:93;17897:3;17808:93;:::i;:::-;17926:2;17921:3;17917:12;17910:19;;17715:220;;;:::o;17941:366::-;18083:3;18104:67;18168:2;18163:3;18104:67;:::i;:::-;18097:74;;18180:93;18269:3;18180:93;:::i;:::-;18298:2;18293:3;18289:12;18282:19;;18087:220;;;:::o;18313:366::-;18455:3;18476:67;18540:2;18535:3;18476:67;:::i;:::-;18469:74;;18552:93;18641:3;18552:93;:::i;:::-;18670:2;18665:3;18661:12;18654:19;;18459:220;;;:::o;18685:366::-;18827:3;18848:67;18912:2;18907:3;18848:67;:::i;:::-;18841:74;;18924:93;19013:3;18924:93;:::i;:::-;19042:2;19037:3;19033:12;19026:19;;18831:220;;;:::o;19057:366::-;19199:3;19220:67;19284:2;19279:3;19220:67;:::i;:::-;19213:74;;19296:93;19385:3;19296:93;:::i;:::-;19414:2;19409:3;19405:12;19398:19;;19203:220;;;:::o;19429:366::-;19571:3;19592:67;19656:2;19651:3;19592:67;:::i;:::-;19585:74;;19668:93;19757:3;19668:93;:::i;:::-;19786:2;19781:3;19777:12;19770:19;;19575:220;;;:::o;19801:366::-;19943:3;19964:67;20028:2;20023:3;19964:67;:::i;:::-;19957:74;;20040:93;20129:3;20040:93;:::i;:::-;20158:2;20153:3;20149:12;20142:19;;19947:220;;;:::o;20173:366::-;20315:3;20336:67;20400:2;20395:3;20336:67;:::i;:::-;20329:74;;20412:93;20501:3;20412:93;:::i;:::-;20530:2;20525:3;20521:12;20514:19;;20319:220;;;:::o;20545:366::-;20687:3;20708:67;20772:2;20767:3;20708:67;:::i;:::-;20701:74;;20784:93;20873:3;20784:93;:::i;:::-;20902:2;20897:3;20893:12;20886:19;;20691:220;;;:::o;20917:366::-;21059:3;21080:67;21144:2;21139:3;21080:67;:::i;:::-;21073:74;;21156:93;21245:3;21156:93;:::i;:::-;21274:2;21269:3;21265:12;21258:19;;21063:220;;;:::o;21289:366::-;21431:3;21452:67;21516:2;21511:3;21452:67;:::i;:::-;21445:74;;21528:93;21617:3;21528:93;:::i;:::-;21646:2;21641:3;21637:12;21630:19;;21435:220;;;:::o;21661:366::-;21803:3;21824:67;21888:2;21883:3;21824:67;:::i;:::-;21817:74;;21900:93;21989:3;21900:93;:::i;:::-;22018:2;22013:3;22009:12;22002:19;;21807:220;;;:::o;22103:527::-;22262:4;22257:3;22253:14;22349:4;22342:5;22338:16;22332:23;22368:63;22425:4;22420:3;22416:14;22402:12;22368:63;:::i;:::-;22277:164;22533:4;22526:5;22522:16;22516:23;22552:61;22607:4;22602:3;22598:14;22584:12;22552:61;:::i;:::-;22451:172;22231:399;;;:::o;22636:118::-;22723:24;22741:5;22723:24;:::i;:::-;22718:3;22711:37;22701:53;;:::o;22760:105::-;22835:23;22852:5;22835:23;:::i;:::-;22830:3;22823:36;22813:52;;:::o;22871:256::-;22983:3;22998:75;23069:3;23060:6;22998:75;:::i;:::-;23098:2;23093:3;23089:12;23082:19;;23118:3;23111:10;;22987:140;;;;:::o;23133:435::-;23313:3;23335:95;23426:3;23417:6;23335:95;:::i;:::-;23328:102;;23447:95;23538:3;23529:6;23447:95;:::i;:::-;23440:102;;23559:3;23552:10;;23317:251;;;;;:::o;23574:541::-;23807:3;23829:95;23920:3;23911:6;23829:95;:::i;:::-;23822:102;;23941:148;24085:3;23941:148;:::i;:::-;23934:155;;24106:3;24099:10;;23811:304;;;;:::o;24121:222::-;24214:4;24252:2;24241:9;24237:18;24229:26;;24265:71;24333:1;24322:9;24318:17;24309:6;24265:71;:::i;:::-;24219:124;;;;:::o;24349:640::-;24544:4;24582:3;24571:9;24567:19;24559:27;;24596:71;24664:1;24653:9;24649:17;24640:6;24596:71;:::i;:::-;24677:72;24745:2;24734:9;24730:18;24721:6;24677:72;:::i;:::-;24759;24827:2;24816:9;24812:18;24803:6;24759:72;:::i;:::-;24878:9;24872:4;24868:20;24863:2;24852:9;24848:18;24841:48;24906:76;24977:4;24968:6;24906:76;:::i;:::-;24898:84;;24549:440;;;;;;;:::o;24995:210::-;25082:4;25120:2;25109:9;25105:18;25097:26;;25133:65;25195:1;25184:9;25180:17;25171:6;25133:65;:::i;:::-;25087:118;;;;:::o;25211:313::-;25324:4;25362:2;25351:9;25347:18;25339:26;;25411:9;25405:4;25401:20;25397:1;25386:9;25382:17;25375:47;25439:78;25512:4;25503:6;25439:78;:::i;:::-;25431:86;;25329:195;;;;:::o;25530:419::-;25696:4;25734:2;25723:9;25719:18;25711:26;;25783:9;25777:4;25773:20;25769:1;25758:9;25754:17;25747:47;25811:131;25937:4;25811:131;:::i;:::-;25803:139;;25701:248;;;:::o;25955:419::-;26121:4;26159:2;26148:9;26144:18;26136:26;;26208:9;26202:4;26198:20;26194:1;26183:9;26179:17;26172:47;26236:131;26362:4;26236:131;:::i;:::-;26228:139;;26126:248;;;:::o;26380:419::-;26546:4;26584:2;26573:9;26569:18;26561:26;;26633:9;26627:4;26623:20;26619:1;26608:9;26604:17;26597:47;26661:131;26787:4;26661:131;:::i;:::-;26653:139;;26551:248;;;:::o;26805:419::-;26971:4;27009:2;26998:9;26994:18;26986:26;;27058:9;27052:4;27048:20;27044:1;27033:9;27029:17;27022:47;27086:131;27212:4;27086:131;:::i;:::-;27078:139;;26976:248;;;:::o;27230:419::-;27396:4;27434:2;27423:9;27419:18;27411:26;;27483:9;27477:4;27473:20;27469:1;27458:9;27454:17;27447:47;27511:131;27637:4;27511:131;:::i;:::-;27503:139;;27401:248;;;:::o;27655:419::-;27821:4;27859:2;27848:9;27844:18;27836:26;;27908:9;27902:4;27898:20;27894:1;27883:9;27879:17;27872:47;27936:131;28062:4;27936:131;:::i;:::-;27928:139;;27826:248;;;:::o;28080:419::-;28246:4;28284:2;28273:9;28269:18;28261:26;;28333:9;28327:4;28323:20;28319:1;28308:9;28304:17;28297:47;28361:131;28487:4;28361:131;:::i;:::-;28353:139;;28251:248;;;:::o;28505:419::-;28671:4;28709:2;28698:9;28694:18;28686:26;;28758:9;28752:4;28748:20;28744:1;28733:9;28729:17;28722:47;28786:131;28912:4;28786:131;:::i;:::-;28778:139;;28676:248;;;:::o;28930:419::-;29096:4;29134:2;29123:9;29119:18;29111:26;;29183:9;29177:4;29173:20;29169:1;29158:9;29154:17;29147:47;29211:131;29337:4;29211:131;:::i;:::-;29203:139;;29101:248;;;:::o;29355:419::-;29521:4;29559:2;29548:9;29544:18;29536:26;;29608:9;29602:4;29598:20;29594:1;29583:9;29579:17;29572:47;29636:131;29762:4;29636:131;:::i;:::-;29628:139;;29526:248;;;:::o;29780:419::-;29946:4;29984:2;29973:9;29969:18;29961:26;;30033:9;30027:4;30023:20;30019:1;30008:9;30004:17;29997:47;30061:131;30187:4;30061:131;:::i;:::-;30053:139;;29951:248;;;:::o;30205:419::-;30371:4;30409:2;30398:9;30394:18;30386:26;;30458:9;30452:4;30448:20;30444:1;30433:9;30429:17;30422:47;30486:131;30612:4;30486:131;:::i;:::-;30478:139;;30376:248;;;:::o;30630:419::-;30796:4;30834:2;30823:9;30819:18;30811:26;;30883:9;30877:4;30873:20;30869:1;30858:9;30854:17;30847:47;30911:131;31037:4;30911:131;:::i;:::-;30903:139;;30801:248;;;:::o;31055:419::-;31221:4;31259:2;31248:9;31244:18;31236:26;;31308:9;31302:4;31298:20;31294:1;31283:9;31279:17;31272:47;31336:131;31462:4;31336:131;:::i;:::-;31328:139;;31226:248;;;:::o;31480:419::-;31646:4;31684:2;31673:9;31669:18;31661:26;;31733:9;31727:4;31723:20;31719:1;31708:9;31704:17;31697:47;31761:131;31887:4;31761:131;:::i;:::-;31753:139;;31651:248;;;:::o;31905:419::-;32071:4;32109:2;32098:9;32094:18;32086:26;;32158:9;32152:4;32148:20;32144:1;32133:9;32129:17;32122:47;32186:131;32312:4;32186:131;:::i;:::-;32178:139;;32076:248;;;:::o;32330:419::-;32496:4;32534:2;32523:9;32519:18;32511:26;;32583:9;32577:4;32573:20;32569:1;32558:9;32554:17;32547:47;32611:131;32737:4;32611:131;:::i;:::-;32603:139;;32501:248;;;:::o;32755:419::-;32921:4;32959:2;32948:9;32944:18;32936:26;;33008:9;33002:4;32998:20;32994:1;32983:9;32979:17;32972:47;33036:131;33162:4;33036:131;:::i;:::-;33028:139;;32926:248;;;:::o;33180:419::-;33346:4;33384:2;33373:9;33369:18;33361:26;;33433:9;33427:4;33423:20;33419:1;33408:9;33404:17;33397:47;33461:131;33587:4;33461:131;:::i;:::-;33453:139;;33351:248;;;:::o;33605:419::-;33771:4;33809:2;33798:9;33794:18;33786:26;;33858:9;33852:4;33848:20;33844:1;33833:9;33829:17;33822:47;33886:131;34012:4;33886:131;:::i;:::-;33878:139;;33776:248;;;:::o;34030:419::-;34196:4;34234:2;34223:9;34219:18;34211:26;;34283:9;34277:4;34273:20;34269:1;34258:9;34254:17;34247:47;34311:131;34437:4;34311:131;:::i;:::-;34303:139;;34201:248;;;:::o;34455:419::-;34621:4;34659:2;34648:9;34644:18;34636:26;;34708:9;34702:4;34698:20;34694:1;34683:9;34679:17;34672:47;34736:131;34862:4;34736:131;:::i;:::-;34728:139;;34626:248;;;:::o;34880:419::-;35046:4;35084:2;35073:9;35069:18;35061:26;;35133:9;35127:4;35123:20;35119:1;35108:9;35104:17;35097:47;35161:131;35287:4;35161:131;:::i;:::-;35153:139;;35051:248;;;:::o;35305:419::-;35471:4;35509:2;35498:9;35494:18;35486:26;;35558:9;35552:4;35548:20;35544:1;35533:9;35529:17;35522:47;35586:131;35712:4;35586:131;:::i;:::-;35578:139;;35476:248;;;:::o;35730:419::-;35896:4;35934:2;35923:9;35919:18;35911:26;;35983:9;35977:4;35973:20;35969:1;35958:9;35954:17;35947:47;36011:131;36137:4;36011:131;:::i;:::-;36003:139;;35901:248;;;:::o;36155:419::-;36321:4;36359:2;36348:9;36344:18;36336:26;;36408:9;36402:4;36398:20;36394:1;36383:9;36379:17;36372:47;36436:131;36562:4;36436:131;:::i;:::-;36428:139;;36326:248;;;:::o;36580:419::-;36746:4;36784:2;36773:9;36769:18;36761:26;;36833:9;36827:4;36823:20;36819:1;36808:9;36804:17;36797:47;36861:131;36987:4;36861:131;:::i;:::-;36853:139;;36751:248;;;:::o;37005:419::-;37171:4;37209:2;37198:9;37194:18;37186:26;;37258:9;37252:4;37248:20;37244:1;37233:9;37229:17;37222:47;37286:131;37412:4;37286:131;:::i;:::-;37278:139;;37176:248;;;:::o;37430:419::-;37596:4;37634:2;37623:9;37619:18;37611:26;;37683:9;37677:4;37673:20;37669:1;37658:9;37654:17;37647:47;37711:131;37837:4;37711:131;:::i;:::-;37703:139;;37601:248;;;:::o;37855:419::-;38021:4;38059:2;38048:9;38044:18;38036:26;;38108:9;38102:4;38098:20;38094:1;38083:9;38079:17;38072:47;38136:131;38262:4;38136:131;:::i;:::-;38128:139;;38026:248;;;:::o;38280:346::-;38435:4;38473:2;38462:9;38458:18;38450:26;;38486:133;38616:1;38605:9;38601:17;38592:6;38486:133;:::i;:::-;38440:186;;;;:::o;38632:222::-;38725:4;38763:2;38752:9;38748:18;38740:26;;38776:71;38844:1;38833:9;38829:17;38820:6;38776:71;:::i;:::-;38730:124;;;;:::o;38860:129::-;38894:6;38921:20;;:::i;:::-;38911:30;;38950:33;38978:4;38970:6;38950:33;:::i;:::-;38901:88;;;:::o;38995:75::-;39028:6;39061:2;39055:9;39045:19;;39035:35;:::o;39076:311::-;39153:4;39243:18;39235:6;39232:30;39229:2;;;39265:18;;:::i;:::-;39229:2;39315:4;39307:6;39303:17;39295:25;;39375:4;39369;39365:15;39357:23;;39158:229;;;:::o;39393:307::-;39454:4;39544:18;39536:6;39533:30;39530:2;;;39566:18;;:::i;:::-;39530:2;39604:29;39626:6;39604:29;:::i;:::-;39596:37;;39688:4;39682;39678:15;39670:23;;39459:241;;;:::o;39706:308::-;39768:4;39858:18;39850:6;39847:30;39844:2;;;39880:18;;:::i;:::-;39844:2;39918:29;39940:6;39918:29;:::i;:::-;39910:37;;40002:4;39996;39992:15;39984:23;;39773:241;;;:::o;40020:98::-;40071:6;40105:5;40099:12;40089:22;;40078:40;;;:::o;40124:99::-;40176:6;40210:5;40204:12;40194:22;;40183:40;;;:::o;40229:168::-;40312:11;40346:6;40341:3;40334:19;40386:4;40381:3;40377:14;40362:29;;40324:73;;;;:::o;40403:169::-;40487:11;40521:6;40516:3;40509:19;40561:4;40556:3;40552:14;40537:29;;40499:73;;;;:::o;40578:148::-;40680:11;40717:3;40702:18;;40692:34;;;;:::o;40732:273::-;40772:3;40791:20;40809:1;40791:20;:::i;:::-;40786:25;;40825:20;40843:1;40825:20;:::i;:::-;40820:25;;40947:1;40911:34;40907:42;40904:1;40901:49;40898:2;;;40953:18;;:::i;:::-;40898:2;40997:1;40994;40990:9;40983:16;;40776:229;;;;:::o;41011:305::-;41051:3;41070:20;41088:1;41070:20;:::i;:::-;41065:25;;41104:20;41122:1;41104:20;:::i;:::-;41099:25;;41258:1;41190:66;41186:74;41183:1;41180:81;41177:2;;;41264:18;;:::i;:::-;41177:2;41308:1;41305;41301:9;41294:16;;41055:261;;;;:::o;41322:185::-;41362:1;41379:20;41397:1;41379:20;:::i;:::-;41374:25;;41413:20;41431:1;41413:20;:::i;:::-;41408:25;;41452:1;41442:2;;41457:18;;:::i;:::-;41442:2;41499:1;41496;41492:9;41487:14;;41364:143;;;;:::o;41513:348::-;41553:7;41576:20;41594:1;41576:20;:::i;:::-;41571:25;;41610:20;41628:1;41610:20;:::i;:::-;41605:25;;41798:1;41730:66;41726:74;41723:1;41720:81;41715:1;41708:9;41701:17;41697:105;41694:2;;;41805:18;;:::i;:::-;41694:2;41853:1;41850;41846:9;41835:20;;41561:300;;;;:::o;41867:191::-;41907:4;41927:20;41945:1;41927:20;:::i;:::-;41922:25;;41961:20;41979:1;41961:20;:::i;:::-;41956:25;;42000:1;41997;41994:8;41991:2;;;42005:18;;:::i;:::-;41991:2;42050:1;42047;42043:9;42035:17;;41912:146;;;;:::o;42064:191::-;42104:4;42124:20;42142:1;42124:20;:::i;:::-;42119:25;;42158:20;42176:1;42158:20;:::i;:::-;42153:25;;42197:1;42194;42191:8;42188:2;;;42202:18;;:::i;:::-;42188:2;42247:1;42244;42240:9;42232:17;;42109:146;;;;:::o;42261:96::-;42298:7;42327:24;42345:5;42327:24;:::i;:::-;42316:35;;42306:51;;;:::o;42363:90::-;42397:7;42440:5;42433:13;42426:21;42415:32;;42405:48;;;:::o;42459:77::-;42496:7;42525:5;42514:16;;42504:32;;;:::o;42542:149::-;42578:7;42618:66;42611:5;42607:78;42596:89;;42586:105;;;:::o;42697:118::-;42734:7;42774:34;42767:5;42763:46;42752:57;;42742:73;;;:::o;42821:126::-;42858:7;42898:42;42891:5;42887:54;42876:65;;42866:81;;;:::o;42953:77::-;42990:7;43019:5;43008:16;;42998:32;;;:::o;43036:101::-;43072:7;43112:18;43105:5;43101:30;43090:41;;43080:57;;;:::o;43143:154::-;43227:6;43222:3;43217;43204:30;43289:1;43280:6;43275:3;43271:16;43264:27;43194:103;;;:::o;43303:307::-;43371:1;43381:113;43395:6;43392:1;43389:13;43381:113;;;43480:1;43475:3;43471:11;43465:18;43461:1;43456:3;43452:11;43445:39;43417:2;43414:1;43410:10;43405:15;;43381:113;;;43512:6;43509:1;43506:13;43503:2;;;43592:1;43583:6;43578:3;43574:16;43567:27;43503:2;43352:258;;;;:::o;43616:171::-;43655:3;43678:24;43696:5;43678:24;:::i;:::-;43669:33;;43724:4;43717:5;43714:15;43711:2;;;43732:18;;:::i;:::-;43711:2;43779:1;43772:5;43768:13;43761:20;;43659:128;;;:::o;43793:320::-;43837:6;43874:1;43868:4;43864:12;43854:22;;43921:1;43915:4;43911:12;43942:18;43932:2;;43998:4;43990:6;43986:17;43976:27;;43932:2;44060;44052:6;44049:14;44029:18;44026:38;44023:2;;;44079:18;;:::i;:::-;44023:2;43844:269;;;;:::o;44119:281::-;44202:27;44224:4;44202:27;:::i;:::-;44194:6;44190:40;44332:6;44320:10;44317:22;44296:18;44284:10;44281:34;44278:62;44275:2;;;44343:18;;:::i;:::-;44275:2;44383:10;44379:2;44372:22;44162:238;;;:::o;44406:233::-;44445:3;44468:24;44486:5;44468:24;:::i;:::-;44459:33;;44514:66;44507:5;44504:77;44501:2;;;44584:18;;:::i;:::-;44501:2;44631:1;44624:5;44620:13;44613:20;;44449:190;;;:::o;44645:100::-;44684:7;44713:26;44733:5;44713:26;:::i;:::-;44702:37;;44692:53;;;:::o;44751:94::-;44790:7;44819:20;44833:5;44819:20;:::i;:::-;44808:31;;44798:47;;;:::o;44851:176::-;44883:1;44900:20;44918:1;44900:20;:::i;:::-;44895:25;;44934:20;44952:1;44934:20;:::i;:::-;44929:25;;44973:1;44963:2;;44978:18;;:::i;:::-;44963:2;45019:1;45016;45012:9;45007:14;;44885:142;;;;:::o;45033:180::-;45081:77;45078:1;45071:88;45178:4;45175:1;45168:15;45202:4;45199:1;45192:15;45219:180;45267:77;45264:1;45257:88;45364:4;45361:1;45354:15;45388:4;45385:1;45378:15;45405:180;45453:77;45450:1;45443:88;45550:4;45547:1;45540:15;45574:4;45571:1;45564:15;45591:180;45639:77;45636:1;45629:88;45736:4;45733:1;45726:15;45760:4;45757:1;45750:15;45777:102;45818:6;45869:2;45865:7;45860:2;45853:5;45849:14;45845:28;45835:38;;45825:54;;;:::o;45885:94::-;45918:8;45966:5;45962:2;45958:14;45937:35;;45927:52;;;:::o;45985:221::-;46125:34;46121:1;46113:6;46109:14;46102:58;46194:4;46189:2;46181:6;46177:15;46170:29;46091:115;:::o;46212:171::-;46352:23;46348:1;46340:6;46336:14;46329:47;46318:65;:::o;46389:225::-;46529:34;46525:1;46517:6;46513:14;46506:58;46598:8;46593:2;46585:6;46581:15;46574:33;46495:119;:::o;46620:161::-;46760:13;46756:1;46748:6;46744:14;46737:37;46726:55;:::o;46787:229::-;46927:34;46923:1;46915:6;46911:14;46904:58;46996:12;46991:2;46983:6;46979:15;46972:37;46893:123;:::o;47022:173::-;47162:25;47158:1;47150:6;47146:14;47139:49;47128:67;:::o;47201:222::-;47341:34;47337:1;47329:6;47325:14;47318:58;47410:5;47405:2;47397:6;47393:15;47386:30;47307:116;:::o;47429:224::-;47569:34;47565:1;47557:6;47553:14;47546:58;47638:7;47633:2;47625:6;47621:15;47614:32;47535:118;:::o;47659:236::-;47799:34;47795:1;47787:6;47783:14;47776:58;47868:19;47863:2;47855:6;47851:15;47844:44;47765:130;:::o;47901:180::-;48041:32;48037:1;48029:6;48025:14;48018:56;48007:74;:::o;48087:174::-;48227:26;48223:1;48215:6;48211:14;48204:50;48193:68;:::o;48267:244::-;48407:34;48403:1;48395:6;48391:14;48384:58;48476:27;48471:2;48463:6;48459:15;48452:52;48373:138;:::o;48517:230::-;48657:34;48653:1;48645:6;48641:14;48634:58;48726:13;48721:2;48713:6;48709:15;48702:38;48623:124;:::o;48753:225::-;48893:34;48889:1;48881:6;48877:14;48870:58;48962:8;48957:2;48949:6;48945:15;48938:33;48859:119;:::o;48984:155::-;49124:7;49120:1;49112:6;49108:14;49101:31;49090:49;:::o;49145:182::-;49285:34;49281:1;49273:6;49269:14;49262:58;49251:76;:::o;49333:234::-;49473:34;49469:1;49461:6;49457:14;49450:58;49542:17;49537:2;49529:6;49525:15;49518:42;49439:128;:::o;49573:176::-;49713:28;49709:1;49701:6;49697:14;49690:52;49679:70;:::o;49755:237::-;49895:34;49891:1;49883:6;49879:14;49872:58;49964:20;49959:2;49951:6;49947:15;49940:45;49861:131;:::o;49998:227::-;50138:34;50134:1;50126:6;50122:14;50115:58;50207:10;50202:2;50194:6;50190:15;50183:35;50104:121;:::o;50231:221::-;50371:34;50367:1;50359:6;50355:14;50348:58;50440:4;50435:2;50427:6;50423:15;50416:29;50337:115;:::o;50458:174::-;50598:26;50594:1;50586:6;50582:14;50575:50;50564:68;:::o;50638:238::-;50778:34;50774:1;50766:6;50762:14;50755:58;50847:21;50842:2;50834:6;50830:15;50823:46;50744:132;:::o;50882:179::-;51022:31;51018:1;51010:6;51006:14;50999:55;50988:73;:::o;51067:220::-;51207:34;51203:1;51195:6;51191:14;51184:58;51276:3;51271:2;51263:6;51259:15;51252:28;51173:114;:::o;51293:231::-;51433:34;51429:1;51421:6;51417:14;51410:58;51502:14;51497:2;51489:6;51485:15;51478:39;51399:125;:::o;51530:166::-;51670:18;51666:1;51658:6;51654:14;51647:42;51636:60;:::o;51702:233::-;51842:34;51838:1;51830:6;51826:14;51819:58;51911:16;51906:2;51898:6;51894:15;51887:41;51808:127;:::o;51941:234::-;52081:34;52077:1;52069:6;52065:14;52058:58;52150:17;52145:2;52137:6;52133:15;52126:42;52047:128;:::o;52181:232::-;52321:34;52317:1;52309:6;52305:14;52298:58;52390:15;52385:2;52377:6;52373:15;52366:40;52287:126;:::o;52419:221::-;52559:34;52555:1;52547:6;52543:14;52536:58;52628:4;52623:2;52615:6;52611:15;52604:29;52525:115;:::o;52646:122::-;52719:24;52737:5;52719:24;:::i;:::-;52712:5;52709:35;52699:2;;52758:1;52755;52748:12;52699:2;52689:79;:::o;52774:116::-;52844:21;52859:5;52844:21;:::i;:::-;52837:5;52834:32;52824:2;;52880:1;52877;52870:12;52824:2;52814:76;:::o;52896:122::-;52969:24;52987:5;52969:24;:::i;:::-;52962:5;52959:35;52949:2;;53008:1;53005;52998:12;52949:2;52939:79;:::o;53024:120::-;53096:23;53113:5;53096:23;:::i;:::-;53089:5;53086:34;53076:2;;53134:1;53131;53124:12;53076:2;53066:78;:::o;53150:122::-;53223:24;53241:5;53223:24;:::i;:::-;53216:5;53213:35;53203:2;;53262:1;53259;53252:12;53203:2;53193:79;:::o

Swarm Source

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