ETH Price: $3,433.66 (+3.12%)

Token

Spicy Pumpkins (SP)
 

Overview

Max Total Supply

4,444 SP

Holders

1,822

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
2 SP
0xd25e36F54F6ABb2529100034426bb3BE74147837
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
ERC721

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;


interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

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

    function ownerOf(uint256 _tokenId) external view returns (address);
    
    function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) external;

    function safeTransferFrom(address _from, address _to, uint256 _tokenId) external;

    function transferFrom(address _from, address _to, uint256 _tokenId) external;

    function approve(address _approved, uint256 _tokenId) external;

    function setApprovalForAll(address _operator, bool _approved) external;

    function getApproved(uint256 _tokenId) external view returns (address);

    function isApprovedForAll(address _owner, address _operator) external view returns (bool);
    
}

interface IERC721Receiver {
    /**
     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
     * by `operator` from `from`, this function is called.
     *
     * It must return its Solidity selector to confirm the token transfer.
     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
     *
     * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.
     */
    function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);
}

interface IERC721Metadata is IERC721 {

    /**
     * @dev Returns the token collection name.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the token collection symbol.
     */
    function symbol() external view returns (string memory);
    
    function totalSupply() external view returns(uint256);
    
    /**
     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
     */
    function tokenURI(uint256 tokenId) external view returns (string memory);
}

library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

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

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

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

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    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");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

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

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

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

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

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

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

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

library Strings {
    bytes16 private constant alphabet = "0123456789abcdef";

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

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

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    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);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = alphabet[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }

}

abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

contract ERC721 is ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;
    
    uint256 private _totalMintsAllowed = 4;
    
    string private uriLink = "https://spicypumpkins.com/api/json";
    
    bool private _minting = true;
    
    address payable private _owner;
    
    uint256 private _count;
    
    string private _name;

    string private _symbol;

    mapping(uint256 => address) private _owners;
    
    mapping(uint256 => string) private _uri;

    mapping(address => uint256) private _balances;

    mapping(uint256 => address) private _tokenApprovals;
    
    mapping(address => uint256) private _minted;

    mapping(address => mapping(address => bool)) private _operatorApprovals;

    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
        _owners[0] = msg.sender;
        _balances[msg.sender] = 1;
        _owner = payable(msg.sender);
    }
    
    function setMinting(bool boolean) external {
        require(msg.sender == _owner);
        _minting = boolean;
    }
    
    function transferOwnership(address to) external {
        require(msg.sender == _owner);
        _owner = payable(to);
    }
    
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return interfaceId == type(IERC721).interfaceId
            || interfaceId == type(IERC721Metadata).interfaceId
            || super.supportsInterface(interfaceId);
    }

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

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

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

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

    function tokenURI(uint256 tokenId) external view override returns (string memory) {
        return _uri[tokenId];
    }

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

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

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

        _approve(to, tokenId);
    }

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

        return _tokenApprovals[tokenId];
    }

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

        _operatorApprovals[msg.sender][operator] = approved;
        emit ApprovalForAll(msg.sender, 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) external override {
        //solhint-disable-next-line max-line-length
        require(_isApprovedOrOwner(msg.sender, tokenId), "ERC721: transfer caller is not owner nor approved");

        _transfer(from, to, tokenId);
    }

    function safeTransferFrom(address from, address to, uint256 tokenId) external override {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, ""), "ERC721: transfer to non ERC721Receiver implementer");
    }

    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) external override {
        require(_isApprovedOrOwner(msg.sender, tokenId), "ERC721: transfer caller is not owner nor approved");
        _safeTransfer(from, to, tokenId, _data);
    }

    function _safeTransfer(address from, address to, uint256 tokenId, bytes memory _data) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
    }

    function _exists(uint256 tokenId) internal view returns (bool) {
        return _owners[tokenId] != address(0);
    }

    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view returns (bool) {
        require(_exists(tokenId), "ERC721: operator query for nonexistent token");
        address owner = _owners[tokenId];
        require(spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender), "ERC721: Not approved or owner");
        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
    }
    
    function mint(address to) external payable returns(uint256 ID) {return internalMint(to);}
    
    function internalMint(address to) internal returns(uint256 ID){
        require(_minted[msg.sender] < _totalMintsAllowed);
        require(_count < 4444, "All NFT's minted");
        require(_minting, "Minting disabeled");
        require(msg.value == 50000000000000000, "Insufficient Eth");
        _owner.transfer(address(this).balance);
        require(to != address(0), "ERC721: mint to the zero address");
        
        uint256 count = _count;
        string memory link = uriLink;
        
        ++_balances[to];
        _owners[count] = to;
            
        string memory uri = concat(link, count.toString());
        uri = concat(uri, ".json");
        _uri[count] = uri;
        
        ++_count;
        
        emit Transfer(address(0), to, count);
        
        ++_minted[msg.sender];
        return count;
    }

    function concat(string memory _base, string memory _value) pure internal returns (string memory) {
        bytes memory _baseBytes = bytes(_base);
        bytes memory _valueBytes = bytes(_value);
        
        string memory _tmpValue = new string(_baseBytes.length + _valueBytes.length);
        bytes memory _newValue = bytes(_tmpValue);
        
        uint i;
        uint j;
        
        for(i=0;i<_baseBytes.length;i++) {
            _newValue[j++] = _baseBytes[i];
        }
        
        for(i=0;i<_valueBytes.length;i++) {
            _newValue[j++] = _valueBytes[i];
        }
        
        return string(_newValue);
    }
    
    function multiMint(address to, uint256 amount) external payable returns(uint256[] memory IDs){
        require(msg.value == 50000000000000000 * amount, "Insufficient Eth");
        IDs = new uint256[](amount);
        for(uint256 t; t < amount; ++t) {
            IDs[t] = internalMint(to);
        }
        
    }
    
    function changeMax(uint256 newMax) external {
        require(msg.sender == _owner);
        _totalMintsAllowed = newMax;
    }
    function _transfer(address from, address to, uint256 tokenId) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own");
        require(to != address(0), "ERC721: transfer to the zero address");

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

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

        emit Transfer(from, to, tokenId);
    }

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

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

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":"_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":[{"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"changeMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"ID","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"multiMint","outputs":[{"internalType":"uint256[]","name":"IDs","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"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":"bool","name":"boolean","type":"bool"}],"name":"setMinting","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":"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":"to","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526004600055604051806060016040528060228152602001620036d260229139600190805190602001906200003a9291906200019b565b506001600260006101000a81548160ff0219169083151502179055503480156200006357600080fd5b50604051620036f4380380620036f48339818101604052810190620000899190620002bd565b8160049080519060200190620000a19291906200019b565b508060059080519060200190620000ba9291906200019b565b50336006600080815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505062000461565b828054620001a990620003cd565b90600052602060002090601f016020900481019282620001cd576000855562000219565b82601f10620001e857805160ff191683800117855562000219565b8280016001018555821562000219579182015b8281111562000218578251825591602001919060010190620001fb565b5b5090506200022891906200022c565b5090565b5b80821115620002475760008160009055506001016200022d565b5090565b6000620002626200025c8462000364565b62000330565b9050828152602081018484840111156200027b57600080fd5b6200028884828562000397565b509392505050565b600082601f830112620002a257600080fd5b8151620002b48482602086016200024b565b91505092915050565b60008060408385031215620002d157600080fd5b600083015167ffffffffffffffff811115620002ec57600080fd5b620002fa8582860162000290565b925050602083015167ffffffffffffffff8111156200031857600080fd5b620003268582860162000290565b9150509250929050565b6000604051905081810181811067ffffffffffffffff821117156200035a576200035962000432565b5b8060405250919050565b600067ffffffffffffffff82111562000382576200038162000432565b5b601f19601f8301169050602081019050919050565b60005b83811015620003b75780820151818401526020810190506200039a565b83811115620003c7576000848401525b50505050565b60006002820490506001821680620003e657607f821691505b60208210811415620003fd57620003fc62000403565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61326180620004716000396000f3fe6080604052600436106101145760003560e01c80636352211e116100a0578063b4c7f06611610064578063b4c7f066146103bb578063b88d4fde146103e4578063c87b56dd1461040d578063e985e9c51461044a578063f2fde38b1461048757610114565b80636352211e146102bd5780636a627842146102fa57806370a082311461032a57806395d89b4114610367578063a22cb4651461039257610114565b8063121dbc31116100e7578063121dbc31146101e757806318160ddd1461021057806323b872dd1461023b5780632649d62e1461026457806342842e0e1461029457610114565b806301ffc9a71461011957806306fdde0314610156578063081812fc14610181578063095ea7b3146101be575b600080fd5b34801561012557600080fd5b50610140600480360381019061013b91906123bd565b6104b0565b60405161014d9190612b61565b60405180910390f35b34801561016257600080fd5b5061016b610592565b6040516101789190612b7c565b60405180910390f35b34801561018d57600080fd5b506101a860048036038101906101a3919061240f565b610624565b6040516101b59190612ad8565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e09190612358565b6106a9565b005b3480156101f357600080fd5b5061020e6004803603810190610209919061240f565b6107b3565b005b34801561021c57600080fd5b50610225610817565b6040516102329190612d9e565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190612252565b610821565b005b61027e60048036038101906102799190612358565b61087a565b60405161028b9190612b3f565b60405180910390f35b3480156102a057600080fd5b506102bb60048036038101906102b69190612252565b6109b2565b005b3480156102c957600080fd5b506102e460048036038101906102df919061240f565b610a1c565b6040516102f19190612ad8565b60405180910390f35b610314600480360381019061030f91906121ed565b610ace565b6040516103219190612d9e565b60405180910390f35b34801561033657600080fd5b50610351600480360381019061034c91906121ed565b610ae0565b60405161035e9190612d9e565b60405180910390f35b34801561037357600080fd5b5061037c610b98565b6040516103899190612b7c565b60405180910390f35b34801561039e57600080fd5b506103b960048036038101906103b4919061231c565b610c2a565b005b3480156103c757600080fd5b506103e260048036038101906103dd9190612394565b610d96565b005b3480156103f057600080fd5b5061040b600480360381019061040691906122a1565b610e0d565b005b34801561041957600080fd5b50610434600480360381019061042f919061240f565b610e68565b6040516104419190612b7c565b60405180910390f35b34801561045657600080fd5b50610471600480360381019061046c9190612216565b610f0d565b60405161047e9190612b61565b60405180910390f35b34801561049357600080fd5b506104ae60048036038101906104a991906121ed565b610fa1565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057b57507f43481e42000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061058b575061058a8261103f565b5b9050919050565b6060600480546105a190613056565b80601f01602080910402602001604051908101604052809291908181526020018280546105cd90613056565b801561061a5780601f106105ef5761010080835404028352916020019161061a565b820191906000526020600020905b8154815290600101906020018083116105fd57829003601f168201915b5050505050905090565b600061062f826110a9565b61066e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066590612cfe565b60405180910390fd5b6009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006106b482610a1c565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071c90612d3e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061076557506107648133610f0d565b5b6107a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079b90612c5e565b60405180910390fd5b6107ae8383611115565b505050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461080d57600080fd5b8060008190555050565b600061115c905090565b61082b33826111ce565b61086a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086190612d7e565b60405180910390fd5b610875838383611394565b505050565b60608166b1a2bc2ec5000061088f9190612f12565b34146108d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c790612cbe565b60405180910390fd5b8167ffffffffffffffff811115610910577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561093e5781602001602082028036833780820191505090505b50905060005b828110156109ab57610955846115e5565b82828151811061098e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001018181525050806109a490613088565b9050610944565b5092915050565b6109bd838383611394565b6109d883838360405180602001604052806000815250611a74565b610a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0e90612b9e565b60405180910390fd5b505050565b6000806006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abc90612c9e565b60405180910390fd5b80915050919050565b6000610ad9826115e5565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4890612c7e565b60405180910390fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060058054610ba790613056565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd390613056565b8015610c205780601f10610bf557610100808354040283529160200191610c20565b820191906000526020600020905b815481529060010190602001808311610c0357829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9090612bfe565b60405180910390fd5b80600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610d8a9190612b61565b60405180910390a35050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610df057600080fd5b80600260006101000a81548160ff02191690831515021790555050565b610e1733836111ce565b610e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4d90612d7e565b60405180910390fd5b610e6284848484611c04565b50505050565b6060600760008381526020019081526020016000208054610e8890613056565b80601f0160208091040260200160405190810160405280929190818152602001828054610eb490613056565b8015610f015780601f10610ed657610100808354040283529160200191610f01565b820191906000526020600020905b815481529060010190602001808311610ee457829003601f168201915b50505050509050919050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ffb57600080fd5b80600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816009600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661118883610a1c565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006111d9826110a9565b611218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120f90612c3e565b60405180910390fd5b60006006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806112bd57508373ffffffffffffffffffffffffffffffffffffffff166112a584610624565b73ffffffffffffffffffffffffffffffffffffffff16145b806112ce57506112cd8185610f0d565b5b61130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130490612d5e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061137a57508373ffffffffffffffffffffffffffffffffffffffff1661136284610624565b73ffffffffffffffffffffffffffffffffffffffff16145b8061138b575061138a8185610f0d565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166113b482610a1c565b73ffffffffffffffffffffffffffffffffffffffff161461140a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140190612d1e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561147a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147190612bde565b60405180910390fd5b611485600082611115565b6001600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114d59190612f6c565b925050819055506001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461152c9190612e8b565b92505081905550816006600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60008054600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061163357600080fd5b61115c60035410611679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167090612bbe565b60405180910390fd5b600260009054906101000a900460ff166116c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bf90612c1e565b60405180910390fd5b66b1a2bc2ec500003414611711576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170890612cbe565b60405180910390fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611779573d6000803e3d6000fd5b50600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e190612cde565b60405180910390fd5b6000600354905060006001805461180090613056565b80601f016020809104026020016040519081016040528092919081815260200182805461182c90613056565b80156118795780601f1061184e57610100808354040283529160200191611879565b820191906000526020600020905b81548152906001019060200180831161185c57829003601f168201915b50505050509050600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546118cc90613088565b91905081905550836006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006119398261193485611c60565b611e0d565b905061197a816040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250611e0d565b9050806007600085815260200190815260200160002090805190602001906119a3929190612079565b506003600081546119b390613088565b91905081905550828573ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154611a6290613088565b91905081905550829350505050919050565b6000611a958473ffffffffffffffffffffffffffffffffffffffff16612066565b15611bf7578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040518563ffffffff1660e01b8152600401611ad99493929190612af3565b602060405180830381600087803b158015611af357600080fd5b505af1925050508015611b2457506040513d601f19601f82011682018060405250810190611b2191906123e6565b60015b611ba7573d8060008114611b54576040519150601f19603f3d011682016040523d82523d6000602084013e611b59565b606091505b50600081511415611b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9690612b9e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611bfc565b600190505b949350505050565b611c0f848484611394565b611c1b84848484611a74565b611c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5190612b9e565b60405180910390fd5b50505050565b60606000821415611ca8576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611e08565b600082905060005b60008214611cda578080611cc390613088565b915050600a82611cd39190612ee1565b9150611cb0565b60008167ffffffffffffffff811115611d1c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611d4e5781602001600182028036833780820191505090505b5090505b60008514611e0157600182611d679190612f6c565b9150600a85611d7691906130d1565b6030611d829190612e8b565b60f81b818381518110611dbe577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611dfa9190612ee1565b9450611d52565b8093505050505b919050565b606060008390506000839050600081518351611e299190612e8b565b67ffffffffffffffff811115611e68577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611e9a5781602001600182028036833780820191505090505b5090506000819050600080600091505b8551821015611f7e57858281518110611eec577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b838280611f0390613088565b935081518110611f3c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508180611f7690613088565b925050611eaa565b600091505b845182101561205757848281518110611fc5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b838280611fdc90613088565b935081518110612015577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350818061204f90613088565b925050611f83565b82965050505050505092915050565b600080823b905060008111915050919050565b82805461208590613056565b90600052602060002090601f0160209004810192826120a757600085556120ee565b82601f106120c057805160ff19168380011785556120ee565b828001600101855582156120ee579182015b828111156120ed5782518255916020019190600101906120d2565b5b5090506120fb91906120ff565b5090565b5b80821115612118576000816000905550600101612100565b5090565b600061212f61212a84612dea565b612db9565b90508281526020810184848401111561214757600080fd5b612152848285613014565b509392505050565b600081359050612169816131cf565b92915050565b60008135905061217e816131e6565b92915050565b600081359050612193816131fd565b92915050565b6000815190506121a8816131fd565b92915050565b600082601f8301126121bf57600080fd5b81356121cf84826020860161211c565b91505092915050565b6000813590506121e781613214565b92915050565b6000602082840312156121ff57600080fd5b600061220d8482850161215a565b91505092915050565b6000806040838503121561222957600080fd5b60006122378582860161215a565b92505060206122488582860161215a565b9150509250929050565b60008060006060848603121561226757600080fd5b60006122758682870161215a565b93505060206122868682870161215a565b9250506040612297868287016121d8565b9150509250925092565b600080600080608085870312156122b757600080fd5b60006122c58782880161215a565b94505060206122d68782880161215a565b93505060406122e7878288016121d8565b925050606085013567ffffffffffffffff81111561230457600080fd5b612310878288016121ae565b91505092959194509250565b6000806040838503121561232f57600080fd5b600061233d8582860161215a565b925050602061234e8582860161216f565b9150509250929050565b6000806040838503121561236b57600080fd5b60006123798582860161215a565b925050602061238a858286016121d8565b9150509250929050565b6000602082840312156123a657600080fd5b60006123b48482850161216f565b91505092915050565b6000602082840312156123cf57600080fd5b60006123dd84828501612184565b91505092915050565b6000602082840312156123f857600080fd5b600061240684828501612199565b91505092915050565b60006020828403121561242157600080fd5b600061242f848285016121d8565b91505092915050565b60006124448383612aba565b60208301905092915050565b61245981612fa0565b82525050565b600061246a82612e2a565b6124748185612e58565b935061247f83612e1a565b8060005b838110156124b05781516124978882612438565b97506124a283612e4b565b925050600181019050612483565b5085935050505092915050565b6124c681612fb2565b82525050565b60006124d782612e35565b6124e18185612e69565b93506124f1818560208601613023565b6124fa816131be565b840191505092915050565b600061251082612e40565b61251a8185612e7a565b935061252a818560208601613023565b612533816131be565b840191505092915050565b600061254b603283612e7a565b91507f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008301527f63656976657220696d706c656d656e74657200000000000000000000000000006020830152604082019050919050565b60006125b1601083612e7a565b91507f416c6c204e46542773206d696e746564000000000000000000000000000000006000830152602082019050919050565b60006125f1602483612e7a565b91507f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612657601983612e7a565b91507f4552433732313a20617070726f766520746f2063616c6c6572000000000000006000830152602082019050919050565b6000612697601183612e7a565b91507f4d696e74696e67206469736162656c65640000000000000000000000000000006000830152602082019050919050565b60006126d7602c83612e7a565b91507f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b600061273d603883612e7a565b91507f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008301527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006020830152604082019050919050565b60006127a3602a83612e7a565b91507f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008301527f726f2061646472657373000000000000000000000000000000000000000000006020830152604082019050919050565b6000612809602983612e7a565b91507f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008301527f656e7420746f6b656e00000000000000000000000000000000000000000000006020830152604082019050919050565b600061286f601083612e7a565b91507f496e73756666696369656e7420457468000000000000000000000000000000006000830152602082019050919050565b60006128af602083612e7a565b91507f4552433732313a206d696e7420746f20746865207a65726f20616464726573736000830152602082019050919050565b60006128ef602c83612e7a565b91507f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b6000612955602983612e7a565b91507f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008301527f73206e6f74206f776e00000000000000000000000000000000000000000000006020830152604082019050919050565b60006129bb602183612e7a565b91507f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008301527f72000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a21601d83612e7a565b91507f4552433732313a204e6f7420617070726f766564206f72206f776e65720000006000830152602082019050919050565b6000612a61603183612e7a565b91507f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008301527f776e6572206e6f7220617070726f7665640000000000000000000000000000006020830152604082019050919050565b612ac38161300a565b82525050565b612ad28161300a565b82525050565b6000602082019050612aed6000830184612450565b92915050565b6000608082019050612b086000830187612450565b612b156020830186612450565b612b226040830185612ac9565b8181036060830152612b3481846124cc565b905095945050505050565b60006020820190508181036000830152612b59818461245f565b905092915050565b6000602082019050612b7660008301846124bd565b92915050565b60006020820190508181036000830152612b968184612505565b905092915050565b60006020820190508181036000830152612bb78161253e565b9050919050565b60006020820190508181036000830152612bd7816125a4565b9050919050565b60006020820190508181036000830152612bf7816125e4565b9050919050565b60006020820190508181036000830152612c178161264a565b9050919050565b60006020820190508181036000830152612c378161268a565b9050919050565b60006020820190508181036000830152612c57816126ca565b9050919050565b60006020820190508181036000830152612c7781612730565b9050919050565b60006020820190508181036000830152612c9781612796565b9050919050565b60006020820190508181036000830152612cb7816127fc565b9050919050565b60006020820190508181036000830152612cd781612862565b9050919050565b60006020820190508181036000830152612cf7816128a2565b9050919050565b60006020820190508181036000830152612d17816128e2565b9050919050565b60006020820190508181036000830152612d3781612948565b9050919050565b60006020820190508181036000830152612d57816129ae565b9050919050565b60006020820190508181036000830152612d7781612a14565b9050919050565b60006020820190508181036000830152612d9781612a54565b9050919050565b6000602082019050612db36000830184612ac9565b92915050565b6000604051905081810181811067ffffffffffffffff82111715612de057612ddf61318f565b5b8060405250919050565b600067ffffffffffffffff821115612e0557612e0461318f565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612e968261300a565b9150612ea18361300a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612ed657612ed5613102565b5b828201905092915050565b6000612eec8261300a565b9150612ef78361300a565b925082612f0757612f06613131565b5b828204905092915050565b6000612f1d8261300a565b9150612f288361300a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f6157612f60613102565b5b828202905092915050565b6000612f778261300a565b9150612f828361300a565b925082821015612f9557612f94613102565b5b828203905092915050565b6000612fab82612fea565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613041578082015181840152602081019050613026565b83811115613050576000848401525b50505050565b6000600282049050600182168061306e57607f821691505b6020821081141561308257613081613160565b5b50919050565b60006130938261300a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156130c6576130c5613102565b5b600182019050919050565b60006130dc8261300a565b91506130e78361300a565b9250826130f7576130f6613131565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6131d881612fa0565b81146131e357600080fd5b50565b6131ef81612fb2565b81146131fa57600080fd5b50565b61320681612fbe565b811461321157600080fd5b50565b61321d8161300a565b811461322857600080fd5b5056fea2646970667358221220b1a82e20083911d0bcc3517682561bb50e696d5a0bb035de1511fc94926bbe6564736f6c6343000800003368747470733a2f2f737069637970756d706b696e732e636f6d2f6170692f6a736f6e00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000e53706963792050756d706b696e7300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025350000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106101145760003560e01c80636352211e116100a0578063b4c7f06611610064578063b4c7f066146103bb578063b88d4fde146103e4578063c87b56dd1461040d578063e985e9c51461044a578063f2fde38b1461048757610114565b80636352211e146102bd5780636a627842146102fa57806370a082311461032a57806395d89b4114610367578063a22cb4651461039257610114565b8063121dbc31116100e7578063121dbc31146101e757806318160ddd1461021057806323b872dd1461023b5780632649d62e1461026457806342842e0e1461029457610114565b806301ffc9a71461011957806306fdde0314610156578063081812fc14610181578063095ea7b3146101be575b600080fd5b34801561012557600080fd5b50610140600480360381019061013b91906123bd565b6104b0565b60405161014d9190612b61565b60405180910390f35b34801561016257600080fd5b5061016b610592565b6040516101789190612b7c565b60405180910390f35b34801561018d57600080fd5b506101a860048036038101906101a3919061240f565b610624565b6040516101b59190612ad8565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e09190612358565b6106a9565b005b3480156101f357600080fd5b5061020e6004803603810190610209919061240f565b6107b3565b005b34801561021c57600080fd5b50610225610817565b6040516102329190612d9e565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190612252565b610821565b005b61027e60048036038101906102799190612358565b61087a565b60405161028b9190612b3f565b60405180910390f35b3480156102a057600080fd5b506102bb60048036038101906102b69190612252565b6109b2565b005b3480156102c957600080fd5b506102e460048036038101906102df919061240f565b610a1c565b6040516102f19190612ad8565b60405180910390f35b610314600480360381019061030f91906121ed565b610ace565b6040516103219190612d9e565b60405180910390f35b34801561033657600080fd5b50610351600480360381019061034c91906121ed565b610ae0565b60405161035e9190612d9e565b60405180910390f35b34801561037357600080fd5b5061037c610b98565b6040516103899190612b7c565b60405180910390f35b34801561039e57600080fd5b506103b960048036038101906103b4919061231c565b610c2a565b005b3480156103c757600080fd5b506103e260048036038101906103dd9190612394565b610d96565b005b3480156103f057600080fd5b5061040b600480360381019061040691906122a1565b610e0d565b005b34801561041957600080fd5b50610434600480360381019061042f919061240f565b610e68565b6040516104419190612b7c565b60405180910390f35b34801561045657600080fd5b50610471600480360381019061046c9190612216565b610f0d565b60405161047e9190612b61565b60405180910390f35b34801561049357600080fd5b506104ae60048036038101906104a991906121ed565b610fa1565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057b57507f43481e42000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061058b575061058a8261103f565b5b9050919050565b6060600480546105a190613056565b80601f01602080910402602001604051908101604052809291908181526020018280546105cd90613056565b801561061a5780601f106105ef5761010080835404028352916020019161061a565b820191906000526020600020905b8154815290600101906020018083116105fd57829003601f168201915b5050505050905090565b600061062f826110a9565b61066e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066590612cfe565b60405180910390fd5b6009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006106b482610a1c565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071c90612d3e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061076557506107648133610f0d565b5b6107a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079b90612c5e565b60405180910390fd5b6107ae8383611115565b505050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461080d57600080fd5b8060008190555050565b600061115c905090565b61082b33826111ce565b61086a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086190612d7e565b60405180910390fd5b610875838383611394565b505050565b60608166b1a2bc2ec5000061088f9190612f12565b34146108d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c790612cbe565b60405180910390fd5b8167ffffffffffffffff811115610910577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561093e5781602001602082028036833780820191505090505b50905060005b828110156109ab57610955846115e5565b82828151811061098e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001018181525050806109a490613088565b9050610944565b5092915050565b6109bd838383611394565b6109d883838360405180602001604052806000815250611a74565b610a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0e90612b9e565b60405180910390fd5b505050565b6000806006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abc90612c9e565b60405180910390fd5b80915050919050565b6000610ad9826115e5565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4890612c7e565b60405180910390fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060058054610ba790613056565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd390613056565b8015610c205780601f10610bf557610100808354040283529160200191610c20565b820191906000526020600020905b815481529060010190602001808311610c0357829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9090612bfe565b60405180910390fd5b80600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610d8a9190612b61565b60405180910390a35050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610df057600080fd5b80600260006101000a81548160ff02191690831515021790555050565b610e1733836111ce565b610e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4d90612d7e565b60405180910390fd5b610e6284848484611c04565b50505050565b6060600760008381526020019081526020016000208054610e8890613056565b80601f0160208091040260200160405190810160405280929190818152602001828054610eb490613056565b8015610f015780601f10610ed657610100808354040283529160200191610f01565b820191906000526020600020905b815481529060010190602001808311610ee457829003601f168201915b50505050509050919050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ffb57600080fd5b80600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816009600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661118883610a1c565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006111d9826110a9565b611218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120f90612c3e565b60405180910390fd5b60006006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806112bd57508373ffffffffffffffffffffffffffffffffffffffff166112a584610624565b73ffffffffffffffffffffffffffffffffffffffff16145b806112ce57506112cd8185610f0d565b5b61130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130490612d5e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061137a57508373ffffffffffffffffffffffffffffffffffffffff1661136284610624565b73ffffffffffffffffffffffffffffffffffffffff16145b8061138b575061138a8185610f0d565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166113b482610a1c565b73ffffffffffffffffffffffffffffffffffffffff161461140a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140190612d1e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561147a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147190612bde565b60405180910390fd5b611485600082611115565b6001600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114d59190612f6c565b925050819055506001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461152c9190612e8b565b92505081905550816006600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60008054600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061163357600080fd5b61115c60035410611679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167090612bbe565b60405180910390fd5b600260009054906101000a900460ff166116c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bf90612c1e565b60405180910390fd5b66b1a2bc2ec500003414611711576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170890612cbe565b60405180910390fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611779573d6000803e3d6000fd5b50600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e190612cde565b60405180910390fd5b6000600354905060006001805461180090613056565b80601f016020809104026020016040519081016040528092919081815260200182805461182c90613056565b80156118795780601f1061184e57610100808354040283529160200191611879565b820191906000526020600020905b81548152906001019060200180831161185c57829003601f168201915b50505050509050600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546118cc90613088565b91905081905550836006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006119398261193485611c60565b611e0d565b905061197a816040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250611e0d565b9050806007600085815260200190815260200160002090805190602001906119a3929190612079565b506003600081546119b390613088565b91905081905550828573ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154611a6290613088565b91905081905550829350505050919050565b6000611a958473ffffffffffffffffffffffffffffffffffffffff16612066565b15611bf7578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040518563ffffffff1660e01b8152600401611ad99493929190612af3565b602060405180830381600087803b158015611af357600080fd5b505af1925050508015611b2457506040513d601f19601f82011682018060405250810190611b2191906123e6565b60015b611ba7573d8060008114611b54576040519150601f19603f3d011682016040523d82523d6000602084013e611b59565b606091505b50600081511415611b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9690612b9e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611bfc565b600190505b949350505050565b611c0f848484611394565b611c1b84848484611a74565b611c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5190612b9e565b60405180910390fd5b50505050565b60606000821415611ca8576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611e08565b600082905060005b60008214611cda578080611cc390613088565b915050600a82611cd39190612ee1565b9150611cb0565b60008167ffffffffffffffff811115611d1c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611d4e5781602001600182028036833780820191505090505b5090505b60008514611e0157600182611d679190612f6c565b9150600a85611d7691906130d1565b6030611d829190612e8b565b60f81b818381518110611dbe577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611dfa9190612ee1565b9450611d52565b8093505050505b919050565b606060008390506000839050600081518351611e299190612e8b565b67ffffffffffffffff811115611e68577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611e9a5781602001600182028036833780820191505090505b5090506000819050600080600091505b8551821015611f7e57858281518110611eec577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b838280611f0390613088565b935081518110611f3c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508180611f7690613088565b925050611eaa565b600091505b845182101561205757848281518110611fc5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b838280611fdc90613088565b935081518110612015577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350818061204f90613088565b925050611f83565b82965050505050505092915050565b600080823b905060008111915050919050565b82805461208590613056565b90600052602060002090601f0160209004810192826120a757600085556120ee565b82601f106120c057805160ff19168380011785556120ee565b828001600101855582156120ee579182015b828111156120ed5782518255916020019190600101906120d2565b5b5090506120fb91906120ff565b5090565b5b80821115612118576000816000905550600101612100565b5090565b600061212f61212a84612dea565b612db9565b90508281526020810184848401111561214757600080fd5b612152848285613014565b509392505050565b600081359050612169816131cf565b92915050565b60008135905061217e816131e6565b92915050565b600081359050612193816131fd565b92915050565b6000815190506121a8816131fd565b92915050565b600082601f8301126121bf57600080fd5b81356121cf84826020860161211c565b91505092915050565b6000813590506121e781613214565b92915050565b6000602082840312156121ff57600080fd5b600061220d8482850161215a565b91505092915050565b6000806040838503121561222957600080fd5b60006122378582860161215a565b92505060206122488582860161215a565b9150509250929050565b60008060006060848603121561226757600080fd5b60006122758682870161215a565b93505060206122868682870161215a565b9250506040612297868287016121d8565b9150509250925092565b600080600080608085870312156122b757600080fd5b60006122c58782880161215a565b94505060206122d68782880161215a565b93505060406122e7878288016121d8565b925050606085013567ffffffffffffffff81111561230457600080fd5b612310878288016121ae565b91505092959194509250565b6000806040838503121561232f57600080fd5b600061233d8582860161215a565b925050602061234e8582860161216f565b9150509250929050565b6000806040838503121561236b57600080fd5b60006123798582860161215a565b925050602061238a858286016121d8565b9150509250929050565b6000602082840312156123a657600080fd5b60006123b48482850161216f565b91505092915050565b6000602082840312156123cf57600080fd5b60006123dd84828501612184565b91505092915050565b6000602082840312156123f857600080fd5b600061240684828501612199565b91505092915050565b60006020828403121561242157600080fd5b600061242f848285016121d8565b91505092915050565b60006124448383612aba565b60208301905092915050565b61245981612fa0565b82525050565b600061246a82612e2a565b6124748185612e58565b935061247f83612e1a565b8060005b838110156124b05781516124978882612438565b97506124a283612e4b565b925050600181019050612483565b5085935050505092915050565b6124c681612fb2565b82525050565b60006124d782612e35565b6124e18185612e69565b93506124f1818560208601613023565b6124fa816131be565b840191505092915050565b600061251082612e40565b61251a8185612e7a565b935061252a818560208601613023565b612533816131be565b840191505092915050565b600061254b603283612e7a565b91507f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008301527f63656976657220696d706c656d656e74657200000000000000000000000000006020830152604082019050919050565b60006125b1601083612e7a565b91507f416c6c204e46542773206d696e746564000000000000000000000000000000006000830152602082019050919050565b60006125f1602483612e7a565b91507f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612657601983612e7a565b91507f4552433732313a20617070726f766520746f2063616c6c6572000000000000006000830152602082019050919050565b6000612697601183612e7a565b91507f4d696e74696e67206469736162656c65640000000000000000000000000000006000830152602082019050919050565b60006126d7602c83612e7a565b91507f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b600061273d603883612e7a565b91507f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008301527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006020830152604082019050919050565b60006127a3602a83612e7a565b91507f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008301527f726f2061646472657373000000000000000000000000000000000000000000006020830152604082019050919050565b6000612809602983612e7a565b91507f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008301527f656e7420746f6b656e00000000000000000000000000000000000000000000006020830152604082019050919050565b600061286f601083612e7a565b91507f496e73756666696369656e7420457468000000000000000000000000000000006000830152602082019050919050565b60006128af602083612e7a565b91507f4552433732313a206d696e7420746f20746865207a65726f20616464726573736000830152602082019050919050565b60006128ef602c83612e7a565b91507f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b6000612955602983612e7a565b91507f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008301527f73206e6f74206f776e00000000000000000000000000000000000000000000006020830152604082019050919050565b60006129bb602183612e7a565b91507f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008301527f72000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a21601d83612e7a565b91507f4552433732313a204e6f7420617070726f766564206f72206f776e65720000006000830152602082019050919050565b6000612a61603183612e7a565b91507f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008301527f776e6572206e6f7220617070726f7665640000000000000000000000000000006020830152604082019050919050565b612ac38161300a565b82525050565b612ad28161300a565b82525050565b6000602082019050612aed6000830184612450565b92915050565b6000608082019050612b086000830187612450565b612b156020830186612450565b612b226040830185612ac9565b8181036060830152612b3481846124cc565b905095945050505050565b60006020820190508181036000830152612b59818461245f565b905092915050565b6000602082019050612b7660008301846124bd565b92915050565b60006020820190508181036000830152612b968184612505565b905092915050565b60006020820190508181036000830152612bb78161253e565b9050919050565b60006020820190508181036000830152612bd7816125a4565b9050919050565b60006020820190508181036000830152612bf7816125e4565b9050919050565b60006020820190508181036000830152612c178161264a565b9050919050565b60006020820190508181036000830152612c378161268a565b9050919050565b60006020820190508181036000830152612c57816126ca565b9050919050565b60006020820190508181036000830152612c7781612730565b9050919050565b60006020820190508181036000830152612c9781612796565b9050919050565b60006020820190508181036000830152612cb7816127fc565b9050919050565b60006020820190508181036000830152612cd781612862565b9050919050565b60006020820190508181036000830152612cf7816128a2565b9050919050565b60006020820190508181036000830152612d17816128e2565b9050919050565b60006020820190508181036000830152612d3781612948565b9050919050565b60006020820190508181036000830152612d57816129ae565b9050919050565b60006020820190508181036000830152612d7781612a14565b9050919050565b60006020820190508181036000830152612d9781612a54565b9050919050565b6000602082019050612db36000830184612ac9565b92915050565b6000604051905081810181811067ffffffffffffffff82111715612de057612ddf61318f565b5b8060405250919050565b600067ffffffffffffffff821115612e0557612e0461318f565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612e968261300a565b9150612ea18361300a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612ed657612ed5613102565b5b828201905092915050565b6000612eec8261300a565b9150612ef78361300a565b925082612f0757612f06613131565b5b828204905092915050565b6000612f1d8261300a565b9150612f288361300a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f6157612f60613102565b5b828202905092915050565b6000612f778261300a565b9150612f828361300a565b925082821015612f9557612f94613102565b5b828203905092915050565b6000612fab82612fea565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613041578082015181840152602081019050613026565b83811115613050576000848401525b50505050565b6000600282049050600182168061306e57607f821691505b6020821081141561308257613081613160565b5b50919050565b60006130938261300a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156130c6576130c5613102565b5b600182019050919050565b60006130dc8261300a565b91506130e78361300a565b9250826130f7576130f6613131565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6131d881612fa0565b81146131e357600080fd5b50565b6131ef81612fb2565b81146131fa57600080fd5b50565b61320681612fbe565b811461321157600080fd5b50565b61321d8161300a565b811461322857600080fd5b5056fea2646970667358221220b1a82e20083911d0bcc3517682561bb50e696d5a0bb035de1511fc94926bbe6564736f6c63430008000033

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

00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000e53706963792050756d706b696e7300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025350000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name_ (string): Spicy Pumpkins
Arg [1] : symbol_ (string): SP

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000e
Arg [3] : 53706963792050756d706b696e73000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [5] : 5350000000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

12918:9078:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14214:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14977:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15911:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15516:387;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20334:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15201:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16609:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20000:322;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16914:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14730:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18352:89;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14514:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15085:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16140:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13943:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17175:277;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15285:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16437:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14075:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14214:292;14316:4;14355:25;14340:40;;;:11;:40;;;;:105;;;;14412:33;14397:48;;;:11;:48;;;;14340:105;:158;;;;14462:36;14486:11;14462:23;:36::i;:::-;14340:158;14333:165;;14214:292;;;:::o;14977:100::-;15031:13;15064:5;15057:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14977:100;:::o;15911:221::-;15987:7;16015:16;16023:7;16015;:16::i;:::-;16007:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;16100:15;:24;16116:7;16100:24;;;;;;;;;;;;;;;;;;;;;16093:31;;15911:221;;;:::o;15516:387::-;15591:13;15607:23;15622:7;15607:14;:23::i;:::-;15591:39;;15655:5;15649:11;;:2;:11;;;;15641:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;15733:5;15719:19;;:10;:19;;;:58;;;;15742:35;15759:5;15766:10;15742:16;:35::i;:::-;15719:58;15711:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;15874:21;15883:2;15887:7;15874:8;:21::i;:::-;15516:387;;;:::o;20334:130::-;20411:6;;;;;;;;;;;20397:20;;:10;:20;;;20389:29;;;;;;20450:6;20429:18;:27;;;;20334:130;:::o;15201:76::-;15255:7;15271:4;15264:11;;15201:76;:::o;16609:297::-;16764:39;16783:10;16795:7;16764:18;:39::i;:::-;16756:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;16870:28;16880:4;16886:2;16890:7;16870:9;:28::i;:::-;16609:297;;;:::o;20000:322::-;20072:20;20145:6;20125:17;:26;;;;:::i;:::-;20112:9;:39;20104:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20203:6;20189:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20183:27;;20225:9;20221:84;20240:6;20236:1;:10;20221:84;;;20277:16;20290:2;20277:12;:16::i;:::-;20268:3;20272:1;20268:6;;;;;;;;;;;;;;;;;;;;;:25;;;;;20248:3;;;;:::i;:::-;;;20221:84;;;;20000:322;;;;:::o;16914:253::-;17012:28;17022:4;17028:2;17032:7;17012:9;:28::i;:::-;17059:45;17082:4;17088:2;17092:7;17059:45;;;;;;;;;;;;:22;:45::i;:::-;17051:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;16914:253;;;:::o;14730:239::-;14802:7;14822:13;14838:7;:16;14846:7;14838:16;;;;;;;;;;;;;;;;;;;;;14822:32;;14890:1;14873:19;;:5;:19;;;;14865:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;14956:5;14949:12;;;14730:239;;;:::o;18352:89::-;18403:10;18423:16;18436:2;18423:12;:16::i;:::-;18416:23;;18352:89;;;:::o;14514:208::-;14586:7;14631:1;14614:19;;:5;:19;;;;14606:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14698:9;:16;14708:5;14698:16;;;;;;;;;;;;;;;;14691:23;;14514:208;;;:::o;15085:104::-;15141:13;15174:7;15167:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15085:104;:::o;16140:289::-;16255:10;16243:22;;:8;:22;;;;16235:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;16351:8;16308:18;:30;16327:10;16308:30;;;;;;;;;;;;;;;:40;16339:8;16308:40;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;16402:8;16375:46;;16390:10;16375:46;;;16412:8;16375:46;;;;;;:::i;:::-;;;;;;;;16140:289;;:::o;13943:120::-;14019:6;;;;;;;;;;;14005:20;;:10;:20;;;13997:29;;;;;;14048:7;14037:8;;:18;;;;;;;;;;;;;;;;;;13943:120;:::o;17175:277::-;17301:39;17320:10;17332:7;17301:18;:39::i;:::-;17293:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;17405:39;17419:4;17425:2;17429:7;17438:5;17405:13;:39::i;:::-;17175:277;;;;:::o;15285:121::-;15352:13;15385:4;:13;15390:7;15385:13;;;;;;;;;;;15378:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15285:121;;;:::o;16437:164::-;16534:4;16558:18;:25;16577:5;16558:25;;;;;;;;;;;;;;;:35;16584:8;16558:35;;;;;;;;;;;;;;;;;;;;;;;;;16551:42;;16437:164;;;;:::o;14075:127::-;14156:6;;;;;;;;;;;14142:20;;:10;:20;;;14134:29;;;;;;14191:2;14174:6;;:20;;;;;;;;;;;;;;;;;;14075:127;:::o;12754:157::-;12839:4;12878:25;12863:40;;;:11;:40;;;;12856:47;;12754:157;;;:::o;17740:119::-;17797:4;17849:1;17821:30;;:7;:16;17829:7;17821:16;;;;;;;;;;;;;;;;;;;;;:30;;;;17814:37;;17740:119;;;:::o;20970:174::-;21072:2;21045:15;:24;21061:7;21045:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;21128:7;21124:2;21090:46;;21099:23;21114:7;21099:14;:23::i;:::-;21090:46;;;;;;;;;;;;20970:174;;:::o;17867:473::-;17952:4;17977:16;17985:7;17977;:16::i;:::-;17969:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;18053:13;18069:7;:16;18077:7;18069:16;;;;;;;;;;;;;;;;;;;;;18053:32;;18115:5;18104:16;;:7;:16;;;:51;;;;18148:7;18124:31;;:20;18136:7;18124:11;:20::i;:::-;:31;;;18104:51;:87;;;;18159:32;18176:5;18183:7;18159:16;:32::i;:::-;18104:87;18096:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;18255:5;18244:16;;:7;:16;;;:51;;;;18288:7;18264:31;;:20;18276:7;18264:11;:20::i;:::-;:31;;;18244:51;:87;;;;18299:32;18316:5;18323:7;18299:16;:32::i;:::-;18244:87;18236:96;;;17867:473;;;;:::o;20470:492::-;20595:4;20568:31;;:23;20583:7;20568:14;:23::i;:::-;:31;;;20560:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;20678:1;20664:16;;:2;:16;;;;20656:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;20786:29;20803:1;20807:7;20786:8;:29::i;:::-;20847:1;20828:9;:15;20838:4;20828:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;20876:1;20859:9;:13;20869:2;20859:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;20907:2;20888:7;:16;20896:7;20888:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;20946:7;20942:2;20927:27;;20936:4;20927:27;;;;;;;;;;;;20470:492;;;:::o;18453:862::-;18504:10;18556:18;;18534:7;:19;18542:10;18534:19;;;;;;;;;;;;;;;;:40;18526:49;;;;;;18603:4;18594:6;;:13;18586:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;18647:8;;;;;;;;;;;18639:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18709:17;18696:9;:30;18688:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;18758:6;;;;;;;;;;;:15;;:38;18774:21;18758:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18829:1;18815:16;;:2;:16;;;;18807:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;18889:13;18905:6;;18889:22;;18922:18;18943:7;18922:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18973:9;:13;18983:2;18973:13;;;;;;;;;;;;;;;;18971:15;;;;;:::i;:::-;;;;;;;;19014:2;18997:7;:14;19005:5;18997:14;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;19041:17;19061:30;19068:4;19074:16;:5;:14;:16::i;:::-;19061:6;:30::i;:::-;19041:50;;19108:20;19115:3;19108:20;;;;;;;;;;;;;;;;;:6;:20::i;:::-;19102:26;;19153:3;19139:4;:11;19144:5;19139:11;;;;;;;;;;;:17;;;;;;;;;;;;:::i;:::-;;19179:6;;19177:8;;;;;:::i;:::-;;;;;;;;19236:5;19232:2;19211:31;;19228:1;19211:31;;;;;;;;;;;;19265:7;:19;19273:10;19265:19;;;;;;;;;;;;;;;;19263:21;;;;;:::i;:::-;;;;;;;;19302:5;19295:12;;;;;18453:862;;;:::o;21152:841::-;21273:4;21299:15;:2;:13;;;:15::i;:::-;21295:691;;;21351:2;21335:36;;;21372:10;21384:4;21390:7;21399:5;21335:70;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;21331:600;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21596:1;21579:6;:13;:18;21575:341;;;21622:60;;;;;;;;;;:::i;:::-;;;;;;;;21575:341;21866:6;21860:13;21851:6;21847:2;21843:15;21836:38;21331:600;21466:45;;;21456:55;;;:6;:55;;;;21449:62;;;;;21295:691;21970:4;21963:11;;21152:841;;;;;;;:::o;17460:272::-;17574:28;17584:4;17590:2;17594:7;17574:9;:28::i;:::-;17621:48;17644:4;17650:2;17654:7;17663:5;17621:22;:48::i;:::-;17613:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;17460:272;;;;:::o;10890:723::-;10946:13;11176:1;11167:5;:10;11163:53;;;11194:10;;;;;;;;;;;;;;;;;;;;;11163:53;11226:12;11241:5;11226:20;;11257:14;11282:78;11297:1;11289:4;:9;11282:78;;11315:8;;;;;:::i;:::-;;;;11346:2;11338:10;;;;;:::i;:::-;;;11282:78;;;11370:19;11402:6;11392:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11370:39;;11420:154;11436:1;11427:5;:10;11420:154;;11464:1;11454:11;;;;;:::i;:::-;;;11531:2;11523:5;:10;;;;:::i;:::-;11510:2;:24;;;;:::i;:::-;11497:39;;11480:6;11487;11480:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;11560:2;11551:11;;;;;:::i;:::-;;;11420:154;;;11598:6;11584:21;;;;;10890:723;;;;:::o;19323:665::-;19405:13;19431:23;19463:5;19431:38;;19480:24;19513:6;19480:40;;19541:23;19598:11;:18;19578:10;:17;:38;;;;:::i;:::-;19567:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19541:76;;19628:22;19659:9;19628:41;;19690:6;19707;19740:1;19738:3;;19734:90;19744:10;:17;19742:1;:19;19734:90;;;19799:10;19810:1;19799:13;;;;;;;;;;;;;;;;;;;;;;;;19782:9;19792:3;;;;;:::i;:::-;;;19782:14;;;;;;;;;;;;;;;;;;;:30;;;;;;;;;;;19762:3;;;;;:::i;:::-;;;;19734:90;;;19850:1;19848:3;;19844:92;19854:11;:18;19852:1;:20;19844:92;;;19910:11;19922:1;19910:14;;;;;;;;;;;;;;;;;;;;;;;;19893:9;19903:3;;;;;:::i;:::-;;;19893:14;;;;;;;;;;;;;;;;;;;:31;;;;;;;;;;;19873:3;;;;;:::i;:::-;;;;19844:92;;;19970:9;19956:24;;;;;;;;19323:665;;;;:::o;3447:422::-;3507:4;3715:12;3826:7;3814:20;3806:28;;3860:1;3853:4;:8;3846:15;;;3447:422;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:342:1:-;;109:64;124:48;165:6;124:48;:::i;:::-;109:64;:::i;:::-;100:73;;196:6;189:5;182:21;234:4;227:5;223:16;272:3;263:6;258:3;254:16;251:25;248:2;;;289:1;286;279:12;248:2;302:41;336:6;331:3;326;302:41;:::i;:::-;90:259;;;;;;:::o;355:139::-;;439:6;426:20;417:29;;455:33;482:5;455:33;:::i;:::-;407:87;;;;:::o;500:133::-;;581:6;568:20;559:29;;597:30;621:5;597:30;:::i;:::-;549:84;;;;:::o;639:137::-;;722:6;709:20;700:29;;738:32;764:5;738:32;:::i;:::-;690:86;;;;:::o;782:141::-;;869:6;863:13;854:22;;885:32;911:5;885:32;:::i;:::-;844:79;;;;:::o;942:271::-;;1046:3;1039:4;1031:6;1027:17;1023:27;1013:2;;1064:1;1061;1054:12;1013:2;1104:6;1091:20;1129:78;1203:3;1195:6;1188:4;1180:6;1176:17;1129:78;:::i;:::-;1120:87;;1003:210;;;;;:::o;1219:139::-;;1303:6;1290:20;1281:29;;1319:33;1346:5;1319:33;:::i;:::-;1271:87;;;;:::o;1364:262::-;;1472:2;1460:9;1451:7;1447:23;1443:32;1440:2;;;1488:1;1485;1478:12;1440:2;1531:1;1556:53;1601:7;1592:6;1581:9;1577:22;1556:53;:::i;:::-;1546:63;;1502:117;1430:196;;;;:::o;1632:407::-;;;1757:2;1745:9;1736:7;1732:23;1728:32;1725:2;;;1773:1;1770;1763:12;1725:2;1816:1;1841:53;1886:7;1877:6;1866:9;1862:22;1841:53;:::i;:::-;1831:63;;1787:117;1943:2;1969:53;2014:7;2005:6;1994:9;1990:22;1969:53;:::i;:::-;1959:63;;1914:118;1715:324;;;;;:::o;2045:552::-;;;;2187:2;2175:9;2166:7;2162:23;2158:32;2155:2;;;2203:1;2200;2193:12;2155:2;2246:1;2271:53;2316:7;2307:6;2296:9;2292:22;2271:53;:::i;:::-;2261:63;;2217:117;2373:2;2399:53;2444:7;2435:6;2424:9;2420:22;2399:53;:::i;:::-;2389:63;;2344:118;2501:2;2527:53;2572:7;2563:6;2552:9;2548:22;2527:53;:::i;:::-;2517:63;;2472:118;2145:452;;;;;:::o;2603:809::-;;;;;2771:3;2759:9;2750:7;2746:23;2742:33;2739:2;;;2788:1;2785;2778:12;2739:2;2831:1;2856:53;2901:7;2892:6;2881:9;2877:22;2856:53;:::i;:::-;2846:63;;2802:117;2958:2;2984:53;3029:7;3020:6;3009:9;3005:22;2984:53;:::i;:::-;2974:63;;2929:118;3086:2;3112:53;3157:7;3148:6;3137:9;3133:22;3112:53;:::i;:::-;3102:63;;3057:118;3242:2;3231:9;3227:18;3214:32;3273:18;3265:6;3262:30;3259:2;;;3305:1;3302;3295:12;3259:2;3333:62;3387:7;3378:6;3367:9;3363:22;3333:62;:::i;:::-;3323:72;;3185:220;2729:683;;;;;;;:::o;3418:401::-;;;3540:2;3528:9;3519:7;3515:23;3511:32;3508:2;;;3556:1;3553;3546:12;3508:2;3599:1;3624:53;3669:7;3660:6;3649:9;3645:22;3624:53;:::i;:::-;3614:63;;3570:117;3726:2;3752:50;3794:7;3785:6;3774:9;3770:22;3752:50;:::i;:::-;3742:60;;3697:115;3498:321;;;;;:::o;3825:407::-;;;3950:2;3938:9;3929:7;3925:23;3921:32;3918:2;;;3966:1;3963;3956:12;3918:2;4009:1;4034:53;4079:7;4070:6;4059:9;4055:22;4034:53;:::i;:::-;4024:63;;3980:117;4136:2;4162:53;4207:7;4198:6;4187:9;4183:22;4162:53;:::i;:::-;4152:63;;4107:118;3908:324;;;;;:::o;4238:256::-;;4343:2;4331:9;4322:7;4318:23;4314:32;4311:2;;;4359:1;4356;4349:12;4311:2;4402:1;4427:50;4469:7;4460:6;4449:9;4445:22;4427:50;:::i;:::-;4417:60;;4373:114;4301:193;;;;:::o;4500:260::-;;4607:2;4595:9;4586:7;4582:23;4578:32;4575:2;;;4623:1;4620;4613:12;4575:2;4666:1;4691:52;4735:7;4726:6;4715:9;4711:22;4691:52;:::i;:::-;4681:62;;4637:116;4565:195;;;;:::o;4766:282::-;;4884:2;4872:9;4863:7;4859:23;4855:32;4852:2;;;4900:1;4897;4890:12;4852:2;4943:1;4968:63;5023:7;5014:6;5003:9;4999:22;4968:63;:::i;:::-;4958:73;;4914:127;4842:206;;;;:::o;5054:262::-;;5162:2;5150:9;5141:7;5137:23;5133:32;5130:2;;;5178:1;5175;5168:12;5130:2;5221:1;5246:53;5291:7;5282:6;5271:9;5267:22;5246:53;:::i;:::-;5236:63;;5192:117;5120:196;;;;:::o;5322:179::-;;5412:46;5454:3;5446:6;5412:46;:::i;:::-;5490:4;5485:3;5481:14;5467:28;;5402:99;;;;:::o;5507:118::-;5594:24;5612:5;5594:24;:::i;:::-;5589:3;5582:37;5572:53;;:::o;5661:732::-;;5809:54;5857:5;5809:54;:::i;:::-;5879:86;5958:6;5953:3;5879:86;:::i;:::-;5872:93;;5989:56;6039:5;5989:56;:::i;:::-;6068:7;6099:1;6084:284;6109:6;6106:1;6103:13;6084:284;;;6185:6;6179:13;6212:63;6271:3;6256:13;6212:63;:::i;:::-;6205:70;;6298:60;6351:6;6298:60;:::i;:::-;6288:70;;6144:224;6131:1;6128;6124:9;6119:14;;6084:284;;;6088:14;6384:3;6377:10;;5785:608;;;;;;;:::o;6399:109::-;6480:21;6495:5;6480:21;:::i;:::-;6475:3;6468:34;6458:50;;:::o;6514:360::-;;6628:38;6660:5;6628:38;:::i;:::-;6682:70;6745:6;6740:3;6682:70;:::i;:::-;6675:77;;6761:52;6806:6;6801:3;6794:4;6787:5;6783:16;6761:52;:::i;:::-;6838:29;6860:6;6838:29;:::i;:::-;6833:3;6829:39;6822:46;;6604:270;;;;;:::o;6880:364::-;;6996:39;7029:5;6996:39;:::i;:::-;7051:71;7115:6;7110:3;7051:71;:::i;:::-;7044:78;;7131:52;7176:6;7171:3;7164:4;7157:5;7153:16;7131:52;:::i;:::-;7208:29;7230:6;7208:29;:::i;:::-;7203:3;7199:39;7192:46;;6972:272;;;;;:::o;7250:382::-;;7413:67;7477:2;7472:3;7413:67;:::i;:::-;7406:74;;7510:34;7506:1;7501:3;7497:11;7490:55;7576:20;7571:2;7566:3;7562:12;7555:42;7623:2;7618:3;7614:12;7607:19;;7396:236;;;:::o;7638:314::-;;7801:67;7865:2;7860:3;7801:67;:::i;:::-;7794:74;;7898:18;7894:1;7889:3;7885:11;7878:39;7943:2;7938:3;7934:12;7927:19;;7784:168;;;:::o;7958:368::-;;8121:67;8185:2;8180:3;8121:67;:::i;:::-;8114:74;;8218:34;8214:1;8209:3;8205:11;8198:55;8284:6;8279:2;8274:3;8270:12;8263:28;8317:2;8312:3;8308:12;8301:19;;8104:222;;;:::o;8332:323::-;;8495:67;8559:2;8554:3;8495:67;:::i;:::-;8488:74;;8592:27;8588:1;8583:3;8579:11;8572:48;8646:2;8641:3;8637:12;8630:19;;8478:177;;;:::o;8661:315::-;;8824:67;8888:2;8883:3;8824:67;:::i;:::-;8817:74;;8921:19;8917:1;8912:3;8908:11;8901:40;8967:2;8962:3;8958:12;8951:19;;8807:169;;;:::o;8982:376::-;;9145:67;9209:2;9204:3;9145:67;:::i;:::-;9138:74;;9242:34;9238:1;9233:3;9229:11;9222:55;9308:14;9303:2;9298:3;9294:12;9287:36;9349:2;9344:3;9340:12;9333:19;;9128:230;;;:::o;9364:388::-;;9527:67;9591:2;9586:3;9527:67;:::i;:::-;9520:74;;9624:34;9620:1;9615:3;9611:11;9604:55;9690:26;9685:2;9680:3;9676:12;9669:48;9743:2;9738:3;9734:12;9727:19;;9510:242;;;:::o;9758:374::-;;9921:67;9985:2;9980:3;9921:67;:::i;:::-;9914:74;;10018:34;10014:1;10009:3;10005:11;9998:55;10084:12;10079:2;10074:3;10070:12;10063:34;10123:2;10118:3;10114:12;10107:19;;9904:228;;;:::o;10138:373::-;;10301:67;10365:2;10360:3;10301:67;:::i;:::-;10294:74;;10398:34;10394:1;10389:3;10385:11;10378:55;10464:11;10459:2;10454:3;10450:12;10443:33;10502:2;10497:3;10493:12;10486:19;;10284:227;;;:::o;10517:314::-;;10680:67;10744:2;10739:3;10680:67;:::i;:::-;10673:74;;10777:18;10773:1;10768:3;10764:11;10757:39;10822:2;10817:3;10813:12;10806:19;;10663:168;;;:::o;10837:330::-;;11000:67;11064:2;11059:3;11000:67;:::i;:::-;10993:74;;11097:34;11093:1;11088:3;11084:11;11077:55;11158:2;11153:3;11149:12;11142:19;;10983:184;;;:::o;11173:376::-;;11336:67;11400:2;11395:3;11336:67;:::i;:::-;11329:74;;11433:34;11429:1;11424:3;11420:11;11413:55;11499:14;11494:2;11489:3;11485:12;11478:36;11540:2;11535:3;11531:12;11524:19;;11319:230;;;:::o;11555:373::-;;11718:67;11782:2;11777:3;11718:67;:::i;:::-;11711:74;;11815:34;11811:1;11806:3;11802:11;11795:55;11881:11;11876:2;11871:3;11867:12;11860:33;11919:2;11914:3;11910:12;11903:19;;11701:227;;;:::o;11934:365::-;;12097:67;12161:2;12156:3;12097:67;:::i;:::-;12090:74;;12194:34;12190:1;12185:3;12181:11;12174:55;12260:3;12255:2;12250:3;12246:12;12239:25;12290:2;12285:3;12281:12;12274:19;;12080:219;;;:::o;12305:327::-;;12468:67;12532:2;12527:3;12468:67;:::i;:::-;12461:74;;12565:31;12561:1;12556:3;12552:11;12545:52;12623:2;12618:3;12614:12;12607:19;;12451:181;;;:::o;12638:381::-;;12801:67;12865:2;12860:3;12801:67;:::i;:::-;12794:74;;12898:34;12894:1;12889:3;12885:11;12878:55;12964:19;12959:2;12954:3;12950:12;12943:41;13010:2;13005:3;13001:12;12994:19;;12784:235;;;:::o;13025:108::-;13102:24;13120:5;13102:24;:::i;:::-;13097:3;13090:37;13080:53;;:::o;13139:118::-;13226:24;13244:5;13226:24;:::i;:::-;13221:3;13214:37;13204:53;;:::o;13263:222::-;;13394:2;13383:9;13379:18;13371:26;;13407:71;13475:1;13464:9;13460:17;13451:6;13407:71;:::i;:::-;13361:124;;;;:::o;13491:640::-;;13724:3;13713:9;13709:19;13701:27;;13738:71;13806:1;13795:9;13791:17;13782:6;13738:71;:::i;:::-;13819:72;13887:2;13876:9;13872:18;13863:6;13819:72;:::i;:::-;13901;13969:2;13958:9;13954:18;13945:6;13901:72;:::i;:::-;14020:9;14014:4;14010:20;14005:2;13994:9;13990:18;13983:48;14048:76;14119:4;14110:6;14048:76;:::i;:::-;14040:84;;13691:440;;;;;;;:::o;14137:373::-;;14318:2;14307:9;14303:18;14295:26;;14367:9;14361:4;14357:20;14353:1;14342:9;14338:17;14331:47;14395:108;14498:4;14489:6;14395:108;:::i;:::-;14387:116;;14285:225;;;;:::o;14516:210::-;;14641:2;14630:9;14626:18;14618:26;;14654:65;14716:1;14705:9;14701:17;14692:6;14654:65;:::i;:::-;14608:118;;;;:::o;14732:313::-;;14883:2;14872:9;14868:18;14860:26;;14932:9;14926:4;14922:20;14918:1;14907:9;14903:17;14896:47;14960:78;15033:4;15024:6;14960:78;:::i;:::-;14952:86;;14850:195;;;;:::o;15051:419::-;;15255:2;15244:9;15240:18;15232:26;;15304:9;15298:4;15294:20;15290:1;15279:9;15275:17;15268:47;15332:131;15458:4;15332:131;:::i;:::-;15324:139;;15222:248;;;:::o;15476:419::-;;15680:2;15669:9;15665:18;15657:26;;15729:9;15723:4;15719:20;15715:1;15704:9;15700:17;15693:47;15757:131;15883:4;15757:131;:::i;:::-;15749:139;;15647:248;;;:::o;15901:419::-;;16105:2;16094:9;16090:18;16082:26;;16154:9;16148:4;16144:20;16140:1;16129:9;16125:17;16118:47;16182:131;16308:4;16182:131;:::i;:::-;16174:139;;16072:248;;;:::o;16326:419::-;;16530:2;16519:9;16515:18;16507:26;;16579:9;16573:4;16569:20;16565:1;16554:9;16550:17;16543:47;16607:131;16733:4;16607:131;:::i;:::-;16599:139;;16497:248;;;:::o;16751:419::-;;16955:2;16944:9;16940:18;16932:26;;17004:9;16998:4;16994:20;16990:1;16979:9;16975:17;16968:47;17032:131;17158:4;17032:131;:::i;:::-;17024:139;;16922:248;;;:::o;17176:419::-;;17380:2;17369:9;17365:18;17357:26;;17429:9;17423:4;17419:20;17415:1;17404:9;17400:17;17393:47;17457:131;17583:4;17457:131;:::i;:::-;17449:139;;17347:248;;;:::o;17601:419::-;;17805:2;17794:9;17790:18;17782:26;;17854:9;17848:4;17844:20;17840:1;17829:9;17825:17;17818:47;17882:131;18008:4;17882:131;:::i;:::-;17874:139;;17772:248;;;:::o;18026:419::-;;18230:2;18219:9;18215:18;18207:26;;18279:9;18273:4;18269:20;18265:1;18254:9;18250:17;18243:47;18307:131;18433:4;18307:131;:::i;:::-;18299:139;;18197:248;;;:::o;18451:419::-;;18655:2;18644:9;18640:18;18632:26;;18704:9;18698:4;18694:20;18690:1;18679:9;18675:17;18668:47;18732:131;18858:4;18732:131;:::i;:::-;18724:139;;18622:248;;;:::o;18876:419::-;;19080:2;19069:9;19065:18;19057:26;;19129:9;19123:4;19119:20;19115:1;19104:9;19100:17;19093:47;19157:131;19283:4;19157:131;:::i;:::-;19149:139;;19047:248;;;:::o;19301:419::-;;19505:2;19494:9;19490:18;19482:26;;19554:9;19548:4;19544:20;19540:1;19529:9;19525:17;19518:47;19582:131;19708:4;19582:131;:::i;:::-;19574:139;;19472:248;;;:::o;19726:419::-;;19930:2;19919:9;19915:18;19907:26;;19979:9;19973:4;19969:20;19965:1;19954:9;19950:17;19943:47;20007:131;20133:4;20007:131;:::i;:::-;19999:139;;19897:248;;;:::o;20151:419::-;;20355:2;20344:9;20340:18;20332:26;;20404:9;20398:4;20394:20;20390:1;20379:9;20375:17;20368:47;20432:131;20558:4;20432:131;:::i;:::-;20424:139;;20322:248;;;:::o;20576:419::-;;20780:2;20769:9;20765:18;20757:26;;20829:9;20823:4;20819:20;20815:1;20804:9;20800:17;20793:47;20857:131;20983:4;20857:131;:::i;:::-;20849:139;;20747:248;;;:::o;21001:419::-;;21205:2;21194:9;21190:18;21182:26;;21254:9;21248:4;21244:20;21240:1;21229:9;21225:17;21218:47;21282:131;21408:4;21282:131;:::i;:::-;21274:139;;21172:248;;;:::o;21426:419::-;;21630:2;21619:9;21615:18;21607:26;;21679:9;21673:4;21669:20;21665:1;21654:9;21650:17;21643:47;21707:131;21833:4;21707:131;:::i;:::-;21699:139;;21597:248;;;:::o;21851:222::-;;21982:2;21971:9;21967:18;21959:26;;21995:71;22063:1;22052:9;22048:17;22039:6;21995:71;:::i;:::-;21949:124;;;;:::o;22079:283::-;;22145:2;22139:9;22129:19;;22187:4;22179:6;22175:17;22294:6;22282:10;22279:22;22258:18;22246:10;22243:34;22240:62;22237:2;;;22305:18;;:::i;:::-;22237:2;22345:10;22341:2;22334:22;22119:243;;;;:::o;22368:331::-;;22519:18;22511:6;22508:30;22505:2;;;22541:18;;:::i;:::-;22505:2;22626:4;22622:9;22615:4;22607:6;22603:17;22599:33;22591:41;;22687:4;22681;22677:15;22669:23;;22434:265;;;:::o;22705:132::-;;22795:3;22787:11;;22825:4;22820:3;22816:14;22808:22;;22777:60;;;:::o;22843:114::-;;22944:5;22938:12;22928:22;;22917:40;;;:::o;22963:98::-;;23048:5;23042:12;23032:22;;23021:40;;;:::o;23067:99::-;;23153:5;23147:12;23137:22;;23126:40;;;:::o;23172:113::-;;23274:4;23269:3;23265:14;23257:22;;23247:38;;;:::o;23291:184::-;;23424:6;23419:3;23412:19;23464:4;23459:3;23455:14;23440:29;;23402:73;;;;:::o;23481:168::-;;23598:6;23593:3;23586:19;23638:4;23633:3;23629:14;23614:29;;23576:73;;;;:::o;23655:169::-;;23773:6;23768:3;23761:19;23813:4;23808:3;23804:14;23789:29;;23751:73;;;;:::o;23830:305::-;;23889:20;23907:1;23889:20;:::i;:::-;23884:25;;23923:20;23941:1;23923:20;:::i;:::-;23918:25;;24077:1;24009:66;24005:74;24002:1;23999:81;23996:2;;;24083:18;;:::i;:::-;23996:2;24127:1;24124;24120:9;24113:16;;23874:261;;;;:::o;24141:185::-;;24198:20;24216:1;24198:20;:::i;:::-;24193:25;;24232:20;24250:1;24232:20;:::i;:::-;24227:25;;24271:1;24261:2;;24276:18;;:::i;:::-;24261:2;24318:1;24315;24311:9;24306:14;;24183:143;;;;:::o;24332:348::-;;24395:20;24413:1;24395:20;:::i;:::-;24390:25;;24429:20;24447:1;24429:20;:::i;:::-;24424:25;;24617:1;24549:66;24545:74;24542:1;24539:81;24534:1;24527:9;24520:17;24516:105;24513:2;;;24624:18;;:::i;:::-;24513:2;24672:1;24669;24665:9;24654:20;;24380:300;;;;:::o;24686:191::-;;24746:20;24764:1;24746:20;:::i;:::-;24741:25;;24780:20;24798:1;24780:20;:::i;:::-;24775:25;;24819:1;24816;24813:8;24810:2;;;24824:18;;:::i;:::-;24810:2;24869:1;24866;24862:9;24854:17;;24731:146;;;;:::o;24883:96::-;;24949:24;24967:5;24949:24;:::i;:::-;24938:35;;24928:51;;;:::o;24985:90::-;;25062:5;25055:13;25048:21;25037:32;;25027:48;;;:::o;25081:149::-;;25157:66;25150:5;25146:78;25135:89;;25125:105;;;:::o;25236:126::-;;25313:42;25306:5;25302:54;25291:65;;25281:81;;;:::o;25368:77::-;;25434:5;25423:16;;25413:32;;;:::o;25451:154::-;25535:6;25530:3;25525;25512:30;25597:1;25588:6;25583:3;25579:16;25572:27;25502:103;;;:::o;25611:307::-;25679:1;25689:113;25703:6;25700:1;25697:13;25689:113;;;25788:1;25783:3;25779:11;25773:18;25769:1;25764:3;25760:11;25753:39;25725:2;25722:1;25718:10;25713:15;;25689:113;;;25820:6;25817:1;25814:13;25811:2;;;25900:1;25891:6;25886:3;25882:16;25875:27;25811:2;25660:258;;;;:::o;25924:320::-;;26005:1;25999:4;25995:12;25985:22;;26052:1;26046:4;26042:12;26073:18;26063:2;;26129:4;26121:6;26117:17;26107:27;;26063:2;26191;26183:6;26180:14;26160:18;26157:38;26154:2;;;26210:18;;:::i;:::-;26154:2;25975:269;;;;:::o;26250:233::-;;26312:24;26330:5;26312:24;:::i;:::-;26303:33;;26358:66;26351:5;26348:77;26345:2;;;26428:18;;:::i;:::-;26345:2;26475:1;26468:5;26464:13;26457:20;;26293:190;;;:::o;26489:176::-;;26538:20;26556:1;26538:20;:::i;:::-;26533:25;;26572:20;26590:1;26572:20;:::i;:::-;26567:25;;26611:1;26601:2;;26616:18;;:::i;:::-;26601:2;26657:1;26654;26650:9;26645:14;;26523:142;;;;:::o;26671:180::-;26719:77;26716:1;26709:88;26816:4;26813:1;26806:15;26840:4;26837:1;26830:15;26857:180;26905:77;26902:1;26895:88;27002:4;26999:1;26992:15;27026:4;27023:1;27016:15;27043:180;27091:77;27088:1;27081:88;27188:4;27185:1;27178:15;27212:4;27209:1;27202:15;27229:180;27277:77;27274:1;27267:88;27374:4;27371:1;27364:15;27398:4;27395:1;27388:15;27415:102;;27507:2;27503:7;27498:2;27491:5;27487:14;27483:28;27473:38;;27463:54;;;:::o;27523:122::-;27596:24;27614:5;27596:24;:::i;:::-;27589:5;27586:35;27576:2;;27635:1;27632;27625:12;27576:2;27566:79;:::o;27651:116::-;27721:21;27736:5;27721:21;:::i;:::-;27714:5;27711:32;27701:2;;27757:1;27754;27747:12;27701:2;27691:76;:::o;27773:120::-;27845:23;27862:5;27845:23;:::i;:::-;27838:5;27835:34;27825:2;;27883:1;27880;27873:12;27825:2;27815:78;:::o;27899:122::-;27972:24;27990:5;27972:24;:::i;:::-;27965:5;27962:35;27952:2;;28011:1;28008;28001:12;27952:2;27942:79;:::o

Swarm Source

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