ETH Price: $3,620.91 (+5.82%)
Gas: 8.43 Gwei

Token

The People Genesis (TPG)
 

Overview

Max Total Supply

91 TPG

Holders

32

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
*中国牛逼.eth
Balance
3 TPG
0x3e52dbb537f18e7fb46c32fe7cc55e2b3243e241
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:
ThePeopleGenesis

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-02
*/

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

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

pragma solidity ^0.8.0;

library Counters {
    struct Counter {
        uint256 _value;
    }

    function current(Counter storage counter) internal view returns (uint256) {
        return counter._value;
    }

    function increment(Counter storage counter) internal {
        unchecked {
            counter._value += 1;
        }
    }

    function decrement(Counter storage counter) internal {
        uint256 value = counter._value;
        require(value > 0, "Counter: decrement overflow");
        unchecked {
            counter._value = value - 1;
        }
    }

    function reset(Counter storage counter) internal {
        counter._value = 0;
    }
}

pragma solidity ^0.8.0;

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

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

    /**
     * @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);
    }

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

pragma solidity ^0.8.0;

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

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

pragma solidity ^0.8.0;

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

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

pragma solidity ^0.8.0;

library Address {
    function isContract(address account) internal view returns (bool) {

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

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

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

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

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

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

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

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

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

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

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

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

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

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

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


pragma solidity ^0.8.0;


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

pragma solidity ^0.8.0;

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

pragma solidity ^0.8.0;

abstract contract ERC165 is IERC165 {

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

pragma solidity ^0.8.0;

interface IERC721 is IERC165 {

    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    function balanceOf(address owner) external view returns (uint256 balance);

    function ownerOf(uint256 tokenId) external view returns (address owner);

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    function approve(address to, uint256 tokenId) external;

    function getApproved(uint256 tokenId) external view returns (address operator);

    function setApprovalForAll(address operator, bool _approved) external;

    function isApprovedForAll(address owner, address operator) external view returns (bool);

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}

pragma solidity ^0.8.0;

interface IERC721Enumerable is IERC721 {
    function totalSupply() external view returns (uint256);

    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);

    function tokenByIndex(uint256 index) external view returns (uint256);
}

pragma solidity ^0.8.0;

interface IERC721Metadata is IERC721 {
    
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function tokenURI(uint256 tokenId) external view returns (string memory);
}

pragma solidity ^0.8.0;

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

    string private _name;

    string private _symbol;

    mapping(uint256 => address) private _owners;

    mapping(address => uint256) private _balances;

    mapping(uint256 => address) private _tokenApprovals;

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

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

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

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

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

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

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

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

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

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

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

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

        _approve(to, tokenId);
    }

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

        return _tokenApprovals[tokenId];
    }

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

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }

    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");

        _transfer(from, to, tokenId);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

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

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

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

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

    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }

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

    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "ERC721: mint to the zero address");
        require(!_exists(tokenId), "ERC721: token already minted");

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

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

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

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

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

        _approve(address(0), tokenId);

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

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

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

        _beforeTokenTransfer(from, to, tokenId);

        _approve(address(0), tokenId);

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

        emit Transfer(from, to, tokenId);
    }

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

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

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

pragma solidity ^0.8.0;

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

    mapping(uint256 => uint256) private _ownedTokensIndex;

    uint256[] private _allTokens;

    mapping(uint256 => uint256) private _allTokensIndex;

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

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

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

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

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

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

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

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

    function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {

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

        if (tokenIndex != lastTokenIndex) {
            uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];

            _ownedTokens[from][tokenIndex] = lastTokenId;
            _ownedTokensIndex[lastTokenId] = tokenIndex;
        }

        delete _ownedTokensIndex[tokenId];
        delete _ownedTokens[from][lastTokenIndex];
    }

    function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {

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

        uint256 lastTokenId = _allTokens[lastTokenIndex];

        _allTokens[tokenIndex] = lastTokenId;
        _allTokensIndex[lastTokenId] = tokenIndex;

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

pragma solidity ^0.8.0;

interface IERC20 {

    function balanceOf(address account) external view returns (uint256);

}

pragma solidity ^0.8.0;

contract ThePeopleGenesis is ERC721, ERC721Enumerable, Ownable {
    using Counters for Counters.Counter;

    Counters.Counter private _tokenIdCounter;
    
    uint256 public constant PRICE = 0.05 ether;
    uint256 public constant TOTAL_NUMBER_OF_PEOPLE_NFT = 999;

    address private _peopleTokenAddress;

    string private _baseTokenURI = "";

    constructor(address peopleTokenAddress) ERC721("The People Genesis", "TPG") {
        _peopleTokenAddress = peopleTokenAddress;
    }

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

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

    function setTokenAddress(address peopleTokenAddress) public onlyOwner {
      _peopleTokenAddress = peopleTokenAddress;
    }

    function balanceOfToken(address account) external view returns (uint256) {
        IERC20 token = IERC20(_peopleTokenAddress);
        return token.balanceOf(account);
    }

    function mint(uint256 num) public payable {
        uint256 supply = totalSupply();
        uint256 tokenCount = balanceOf(msg.sender);
        require( num <= 6,"The People Genesis: You can mint a maximum of 6 NFT" );
        require( tokenCount + num <= 6,"The People Genesis: You can mint a maximum of 6 NFT per wallet" );
        require( supply + num <= TOTAL_NUMBER_OF_PEOPLE_NFT,"The People Genesis: Exceeds maximum NFT supply" );
        require( msg.value >= PRICE * num,"The People Genesis: Ether sent is less than PRICE * num" );

        for(uint256 i; i < num; i++){
            _safeMint( msg.sender, supply + i );
        }
    }

    function freeMint(uint256 num) public payable {
        uint256 supply = totalSupply();
        uint256 tokenCount = balanceOf(msg.sender);
        IERC20 token = IERC20(_peopleTokenAddress);
        uint256 peopleTokenCount =  token.balanceOf(msg.sender);
        require( peopleTokenCount >= 1,"The People Genesis: You hold at least 1 token" );
        require( num <= 3,"The People Genesis: You can free mint a maximum of 3 NFT" );
        require( tokenCount + num <= 3,"The People Genesis: You can free mint a maximum of 3 NFT per wallet" );
        require( supply + num <= TOTAL_NUMBER_OF_PEOPLE_NFT,"The People Genesis: Exceeds maximum NFT supply" );

        for(uint256 i; i < num; i++){
            _safeMint( msg.sender, supply + i );
        }
    }

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

    function safeMint(address to) public onlyOwner {
        _safeMint(to, _tokenIdCounter.current());
        _tokenIdCounter.increment();
    }

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

    function supportsInterface(bytes4 interfaceId)
        public
        view
        override(ERC721, ERC721Enumerable)
        returns (bool)
    {
        return super.supportsInterface(interfaceId);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"peopleTokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOTAL_NUMBER_OF_PEOPLE_NFT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOfToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"freeMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"safeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"peopleTokenAddress","type":"address"}],"name":"setTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405260405180602001604052806000815250600d90805190602001906200002b92919062000235565b503480156200003957600080fd5b50604051620047a5380380620047a583398181016040528101906200005f9190620002fc565b6040518060400160405280601281526020017f5468652050656f706c652047656e6573697300000000000000000000000000008152506040518060400160405280600381526020017f54504700000000000000000000000000000000000000000000000000000000008152508160009080519060200190620000e392919062000235565b508060019080519060200190620000fc92919062000235565b5050506200011f620001136200016760201b60201c565b6200016f60201b60201c565b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620003e6565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002439062000362565b90600052602060002090601f016020900481019282620002675760008555620002b3565b82601f106200028257805160ff1916838001178555620002b3565b82800160010185558215620002b3579182015b82811115620002b257825182559160200191906001019062000295565b5b509050620002c29190620002c6565b5090565b5b80821115620002e1576000816000905550600101620002c7565b5090565b600081519050620002f681620003cc565b92915050565b600060208284031215620003155762000314620003c7565b5b60006200032584828501620002e5565b91505092915050565b60006200033b8262000342565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600060028204905060018216806200037b57607f821691505b6020821081141562000392576200039162000398565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b620003d7816200032e565b8114620003e357600080fd5b50565b6143af80620003f66000396000f3fe6080604052600436106101b75760003560e01c806370a08231116100ec578063a22cb4651161008a578063c87b56dd11610064578063c87b56dd146105ec578063da7e07be14610629578063e985e9c514610654578063f2fde38b14610691576101b7565b8063a22cb4651461055d578063b88d4fde14610586578063b99152d0146105af576101b7565b80638d859f3e116100c65780638d859f3e146104c05780638da5cb5b146104eb57806395d89b4114610516578063a0712d6814610541576101b7565b806370a0823114610450578063715018a61461048d5780637c928fe9146104a4576101b7565b80632f745c591161015957806342842e0e1161013357806342842e0e146103845780634f6ccce7146103ad57806355f804b3146103ea5780636352211e14610413576101b7565b80632f745c59146103075780633ccfd60b1461034457806340d097c31461035b576101b7565b8063095ea7b311610195578063095ea7b31461026157806318160ddd1461028a57806323b872dd146102b557806326a4e8d2146102de576101b7565b806301ffc9a7146101bc57806306fdde03146101f9578063081812fc14610224575b600080fd5b3480156101c857600080fd5b506101e360048036038101906101de9190612dec565b6106ba565b6040516101f091906133af565b60405180910390f35b34801561020557600080fd5b5061020e6106cc565b60405161021b91906133ca565b60405180910390f35b34801561023057600080fd5b5061024b60048036038101906102469190612e8f565b61075e565b6040516102589190613348565b60405180910390f35b34801561026d57600080fd5b5061028860048036038101906102839190612dac565b6107e3565b005b34801561029657600080fd5b5061029f6108fb565b6040516102ac919061370c565b60405180910390f35b3480156102c157600080fd5b506102dc60048036038101906102d79190612c96565b610908565b005b3480156102ea57600080fd5b5061030560048036038101906103009190612c29565b610968565b005b34801561031357600080fd5b5061032e60048036038101906103299190612dac565b610a28565b60405161033b919061370c565b60405180910390f35b34801561035057600080fd5b50610359610acd565b005b34801561036757600080fd5b50610382600480360381019061037d9190612c29565b610b98565b005b34801561039057600080fd5b506103ab60048036038101906103a69190612c96565b610c34565b005b3480156103b957600080fd5b506103d460048036038101906103cf9190612e8f565b610c54565b6040516103e1919061370c565b60405180910390f35b3480156103f657600080fd5b50610411600480360381019061040c9190612e46565b610cc5565b005b34801561041f57600080fd5b5061043a60048036038101906104359190612e8f565b610d5b565b6040516104479190613348565b60405180910390f35b34801561045c57600080fd5b5061047760048036038101906104729190612c29565b610e0d565b604051610484919061370c565b60405180910390f35b34801561049957600080fd5b506104a2610ec5565b005b6104be60048036038101906104b99190612e8f565b610f4d565b005b3480156104cc57600080fd5b506104d561117c565b6040516104e2919061370c565b60405180910390f35b3480156104f757600080fd5b50610500611187565b60405161050d9190613348565b60405180910390f35b34801561052257600080fd5b5061052b6111b1565b60405161053891906133ca565b60405180910390f35b61055b60048036038101906105569190612e8f565b611243565b005b34801561056957600080fd5b50610584600480360381019061057f9190612d6c565b6113cd565b005b34801561059257600080fd5b506105ad60048036038101906105a89190612ce9565b61154e565b005b3480156105bb57600080fd5b506105d660048036038101906105d19190612c29565b6115b0565b6040516105e3919061370c565b60405180910390f35b3480156105f857600080fd5b50610613600480360381019061060e9190612e8f565b611669565b60405161062091906133ca565b60405180910390f35b34801561063557600080fd5b5061063e611710565b60405161064b919061370c565b60405180910390f35b34801561066057600080fd5b5061067b60048036038101906106769190612c56565b611716565b60405161068891906133af565b60405180910390f35b34801561069d57600080fd5b506106b860048036038101906106b39190612c29565b6117aa565b005b60006106c5826118a2565b9050919050565b6060600080546106db906139bc565b80601f0160208091040260200160405190810160405280929190818152602001828054610707906139bc565b80156107545780601f1061072957610100808354040283529160200191610754565b820191906000526020600020905b81548152906001019060200180831161073757829003601f168201915b5050505050905090565b60006107698261191c565b6107a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079f9061358c565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006107ee82610d5b565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561085f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108569061362c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661087e611988565b73ffffffffffffffffffffffffffffffffffffffff1614806108ad57506108ac816108a7611988565b611716565b5b6108ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e3906134ec565b60405180910390fd5b6108f68383611990565b505050565b6000600880549050905090565b610919610913611988565b82611a49565b610958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094f9061366c565b60405180910390fd5b610963838383611b27565b505050565b610970611988565b73ffffffffffffffffffffffffffffffffffffffff1661098e611187565b73ffffffffffffffffffffffffffffffffffffffff16146109e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109db906135ac565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610a3383610e0d565b8210610a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6b9061340c565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610ad5611988565b73ffffffffffffffffffffffffffffffffffffffff16610af3611187565b73ffffffffffffffffffffffffffffffffffffffff1614610b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b40906135ac565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610b94573d6000803e3d6000fd5b5050565b610ba0611988565b73ffffffffffffffffffffffffffffffffffffffff16610bbe611187565b73ffffffffffffffffffffffffffffffffffffffff1614610c14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0b906135ac565b60405180910390fd5b610c2781610c22600b611d83565b611d91565b610c31600b611daf565b50565b610c4f8383836040518060200160405280600081525061154e565b505050565b6000610c5e6108fb565b8210610c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c96906136ac565b60405180910390fd5b60088281548110610cb357610cb2613b55565b5b90600052602060002001549050919050565b610ccd611988565b73ffffffffffffffffffffffffffffffffffffffff16610ceb611187565b73ffffffffffffffffffffffffffffffffffffffff1614610d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d38906135ac565b60405180910390fd5b80600d9080519060200190610d57929190612a28565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfb9061352c565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e759061350c565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ecd611988565b73ffffffffffffffffffffffffffffffffffffffff16610eeb611187565b73ffffffffffffffffffffffffffffffffffffffff1614610f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f38906135ac565b60405180910390fd5b610f4b6000611dc5565b565b6000610f576108fb565b90506000610f6433610e0d565b90506000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610fc89190613348565b60206040518083038186803b158015610fe057600080fd5b505afa158015610ff4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110189190612ebc565b9050600181101561105e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611055906136ec565b60405180910390fd5b60038511156110a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611099906133ec565b60405180910390fd5b600385846110b091906137f1565b11156110f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e89061360c565b60405180910390fd5b6103e7858561110091906137f1565b1115611141576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111389061364c565b60405180910390fd5b60005b858110156111745761116133828761115c91906137f1565b611d91565b808061116c90613a1f565b915050611144565b505050505050565b66b1a2bc2ec5000081565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546111c0906139bc565b80601f01602080910402602001604051908101604052809291908181526020018280546111ec906139bc565b80156112395780601f1061120e57610100808354040283529160200191611239565b820191906000526020600020905b81548152906001019060200180831161121c57829003601f168201915b5050505050905090565b600061124d6108fb565b9050600061125a33610e0d565b905060068311156112a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112979061368c565b60405180910390fd5b600683826112ae91906137f1565b11156112ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e69061356c565b60405180910390fd5b6103e783836112fe91906137f1565b111561133f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113369061364c565b60405180910390fd5b8266b1a2bc2ec500006113529190613878565b341015611394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138b906136cc565b60405180910390fd5b60005b838110156113c7576113b43382856113af91906137f1565b611d91565b80806113bf90613a1f565b915050611397565b50505050565b6113d5611988565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143a906134ac565b60405180910390fd5b8060056000611450611988565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166114fd611988565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161154291906133af565b60405180910390a35050565b61155f611559611988565b83611a49565b61159e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115959061366c565b60405180910390fd5b6115aa84848484611e8b565b50505050565b600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b81526004016116119190613348565b60206040518083038186803b15801561162957600080fd5b505afa15801561163d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116619190612ebc565b915050919050565b60606116748261191c565b6116b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116aa906135ec565b60405180910390fd5b60006116bd611ee7565b905060008151116116dd5760405180602001604052806000815250611708565b806116e784611f79565b6040516020016116f8929190613324565b6040516020818303038152906040525b915050919050565b6103e781565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6117b2611988565b73ffffffffffffffffffffffffffffffffffffffff166117d0611187565b73ffffffffffffffffffffffffffffffffffffffff1614611826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181d906135ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188d9061344c565b60405180910390fd5b61189f81611dc5565b50565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806119155750611914826120da565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611a0383610d5b565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611a548261191c565b611a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8a906134cc565b60405180910390fd5b6000611a9e83610d5b565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611b0d57508373ffffffffffffffffffffffffffffffffffffffff16611af58461075e565b73ffffffffffffffffffffffffffffffffffffffff16145b80611b1e5750611b1d8185611716565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611b4782610d5b565b73ffffffffffffffffffffffffffffffffffffffff1614611b9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b94906135cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c049061348c565b60405180910390fd5b611c188383836121bc565b611c23600082611990565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c7391906138d2565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cca91906137f1565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600081600001549050919050565b611dab8282604051806020016040528060008152506121cc565b5050565b6001816000016000828254019250508190555050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611e96848484611b27565b611ea284848484612227565b611ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed89061342c565b60405180910390fd5b50505050565b6060600d8054611ef6906139bc565b80601f0160208091040260200160405190810160405280929190818152602001828054611f22906139bc565b8015611f6f5780601f10611f4457610100808354040283529160200191611f6f565b820191906000526020600020905b815481529060010190602001808311611f5257829003601f168201915b5050505050905090565b60606000821415611fc1576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506120d5565b600082905060005b60008214611ff3578080611fdc90613a1f565b915050600a82611fec9190613847565b9150611fc9565b60008167ffffffffffffffff81111561200f5761200e613b84565b5b6040519080825280601f01601f1916602001820160405280156120415781602001600182028036833780820191505090505b5090505b600085146120ce5760018261205a91906138d2565b9150600a856120699190613a68565b603061207591906137f1565b60f81b81838151811061208b5761208a613b55565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856120c79190613847565b9450612045565b8093505050505b919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806121a557507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806121b557506121b4826123be565b5b9050919050565b6121c7838383612428565b505050565b6121d6838361253c565b6121e36000848484612227565b612222576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122199061342c565b60405180910390fd5b505050565b60006122488473ffffffffffffffffffffffffffffffffffffffff1661270a565b156123b1578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612271611988565b8786866040518563ffffffff1660e01b81526004016122939493929190613363565b602060405180830381600087803b1580156122ad57600080fd5b505af19250505080156122de57506040513d601f19601f820116820180604052508101906122db9190612e19565b60015b612361573d806000811461230e576040519150601f19603f3d011682016040523d82523d6000602084013e612313565b606091505b50600081511415612359576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123509061342c565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506123b6565b600190505b949350505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61243383838361271d565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124765761247181612722565b6124b5565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146124b4576124b3838261276b565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124f8576124f3816128d8565b612537565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146125365761253582826129a9565b5b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a39061354c565b60405180910390fd5b6125b58161191c565b156125f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ec9061346c565b60405180910390fd5b612601600083836121bc565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461265191906137f1565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161277884610e0d565b61278291906138d2565b9050600060076000848152602001908152602001600020549050818114612867576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506128ec91906138d2565b905060006009600084815260200190815260200160002054905060006008838154811061291c5761291b613b55565b5b90600052602060002001549050806008838154811061293e5761293d613b55565b5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061298d5761298c613b26565b5b6001900381819060005260206000200160009055905550505050565b60006129b483610e0d565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b828054612a34906139bc565b90600052602060002090601f016020900481019282612a565760008555612a9d565b82601f10612a6f57805160ff1916838001178555612a9d565b82800160010185558215612a9d579182015b82811115612a9c578251825591602001919060010190612a81565b5b509050612aaa9190612aae565b5090565b5b80821115612ac7576000816000905550600101612aaf565b5090565b6000612ade612ad98461374c565b613727565b905082815260208101848484011115612afa57612af9613bb8565b5b612b0584828561397a565b509392505050565b6000612b20612b1b8461377d565b613727565b905082815260208101848484011115612b3c57612b3b613bb8565b5b612b4784828561397a565b509392505050565b600081359050612b5e8161431d565b92915050565b600081359050612b7381614334565b92915050565b600081359050612b888161434b565b92915050565b600081519050612b9d8161434b565b92915050565b600082601f830112612bb857612bb7613bb3565b5b8135612bc8848260208601612acb565b91505092915050565b600082601f830112612be657612be5613bb3565b5b8135612bf6848260208601612b0d565b91505092915050565b600081359050612c0e81614362565b92915050565b600081519050612c2381614362565b92915050565b600060208284031215612c3f57612c3e613bc2565b5b6000612c4d84828501612b4f565b91505092915050565b60008060408385031215612c6d57612c6c613bc2565b5b6000612c7b85828601612b4f565b9250506020612c8c85828601612b4f565b9150509250929050565b600080600060608486031215612caf57612cae613bc2565b5b6000612cbd86828701612b4f565b9350506020612cce86828701612b4f565b9250506040612cdf86828701612bff565b9150509250925092565b60008060008060808587031215612d0357612d02613bc2565b5b6000612d1187828801612b4f565b9450506020612d2287828801612b4f565b9350506040612d3387828801612bff565b925050606085013567ffffffffffffffff811115612d5457612d53613bbd565b5b612d6087828801612ba3565b91505092959194509250565b60008060408385031215612d8357612d82613bc2565b5b6000612d9185828601612b4f565b9250506020612da285828601612b64565b9150509250929050565b60008060408385031215612dc357612dc2613bc2565b5b6000612dd185828601612b4f565b9250506020612de285828601612bff565b9150509250929050565b600060208284031215612e0257612e01613bc2565b5b6000612e1084828501612b79565b91505092915050565b600060208284031215612e2f57612e2e613bc2565b5b6000612e3d84828501612b8e565b91505092915050565b600060208284031215612e5c57612e5b613bc2565b5b600082013567ffffffffffffffff811115612e7a57612e79613bbd565b5b612e8684828501612bd1565b91505092915050565b600060208284031215612ea557612ea4613bc2565b5b6000612eb384828501612bff565b91505092915050565b600060208284031215612ed257612ed1613bc2565b5b6000612ee084828501612c14565b91505092915050565b612ef281613906565b82525050565b612f0181613918565b82525050565b6000612f12826137ae565b612f1c81856137c4565b9350612f2c818560208601613989565b612f3581613bc7565b840191505092915050565b6000612f4b826137b9565b612f5581856137d5565b9350612f65818560208601613989565b612f6e81613bc7565b840191505092915050565b6000612f84826137b9565b612f8e81856137e6565b9350612f9e818560208601613989565b80840191505092915050565b6000612fb76038836137d5565b9150612fc282613bd8565b604082019050919050565b6000612fda602b836137d5565b9150612fe582613c27565b604082019050919050565b6000612ffd6032836137d5565b915061300882613c76565b604082019050919050565b60006130206026836137d5565b915061302b82613cc5565b604082019050919050565b6000613043601c836137d5565b915061304e82613d14565b602082019050919050565b60006130666024836137d5565b915061307182613d3d565b604082019050919050565b60006130896019836137d5565b915061309482613d8c565b602082019050919050565b60006130ac602c836137d5565b91506130b782613db5565b604082019050919050565b60006130cf6038836137d5565b91506130da82613e04565b604082019050919050565b60006130f2602a836137d5565b91506130fd82613e53565b604082019050919050565b60006131156029836137d5565b915061312082613ea2565b604082019050919050565b60006131386020836137d5565b915061314382613ef1565b602082019050919050565b600061315b603e836137d5565b915061316682613f1a565b604082019050919050565b600061317e602c836137d5565b915061318982613f69565b604082019050919050565b60006131a16020836137d5565b91506131ac82613fb8565b602082019050919050565b60006131c46029836137d5565b91506131cf82613fe1565b604082019050919050565b60006131e7602f836137d5565b91506131f282614030565b604082019050919050565b600061320a6043836137d5565b91506132158261407f565b606082019050919050565b600061322d6021836137d5565b9150613238826140f4565b604082019050919050565b6000613250602e836137d5565b915061325b82614143565b604082019050919050565b60006132736031836137d5565b915061327e82614192565b604082019050919050565b60006132966033836137d5565b91506132a1826141e1565b604082019050919050565b60006132b9602c836137d5565b91506132c482614230565b604082019050919050565b60006132dc6037836137d5565b91506132e78261427f565b604082019050919050565b60006132ff602d836137d5565b915061330a826142ce565b604082019050919050565b61331e81613970565b82525050565b60006133308285612f79565b915061333c8284612f79565b91508190509392505050565b600060208201905061335d6000830184612ee9565b92915050565b60006080820190506133786000830187612ee9565b6133856020830186612ee9565b6133926040830185613315565b81810360608301526133a48184612f07565b905095945050505050565b60006020820190506133c46000830184612ef8565b92915050565b600060208201905081810360008301526133e48184612f40565b905092915050565b6000602082019050818103600083015261340581612faa565b9050919050565b6000602082019050818103600083015261342581612fcd565b9050919050565b6000602082019050818103600083015261344581612ff0565b9050919050565b6000602082019050818103600083015261346581613013565b9050919050565b6000602082019050818103600083015261348581613036565b9050919050565b600060208201905081810360008301526134a581613059565b9050919050565b600060208201905081810360008301526134c58161307c565b9050919050565b600060208201905081810360008301526134e58161309f565b9050919050565b60006020820190508181036000830152613505816130c2565b9050919050565b60006020820190508181036000830152613525816130e5565b9050919050565b6000602082019050818103600083015261354581613108565b9050919050565b600060208201905081810360008301526135658161312b565b9050919050565b600060208201905081810360008301526135858161314e565b9050919050565b600060208201905081810360008301526135a581613171565b9050919050565b600060208201905081810360008301526135c581613194565b9050919050565b600060208201905081810360008301526135e5816131b7565b9050919050565b60006020820190508181036000830152613605816131da565b9050919050565b60006020820190508181036000830152613625816131fd565b9050919050565b6000602082019050818103600083015261364581613220565b9050919050565b6000602082019050818103600083015261366581613243565b9050919050565b6000602082019050818103600083015261368581613266565b9050919050565b600060208201905081810360008301526136a581613289565b9050919050565b600060208201905081810360008301526136c5816132ac565b9050919050565b600060208201905081810360008301526136e5816132cf565b9050919050565b60006020820190508181036000830152613705816132f2565b9050919050565b60006020820190506137216000830184613315565b92915050565b6000613731613742565b905061373d82826139ee565b919050565b6000604051905090565b600067ffffffffffffffff82111561376757613766613b84565b5b61377082613bc7565b9050602081019050919050565b600067ffffffffffffffff82111561379857613797613b84565b5b6137a182613bc7565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006137fc82613970565b915061380783613970565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561383c5761383b613a99565b5b828201905092915050565b600061385282613970565b915061385d83613970565b92508261386d5761386c613ac8565b5b828204905092915050565b600061388382613970565b915061388e83613970565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156138c7576138c6613a99565b5b828202905092915050565b60006138dd82613970565b91506138e883613970565b9250828210156138fb576138fa613a99565b5b828203905092915050565b600061391182613950565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156139a757808201518184015260208101905061398c565b838111156139b6576000848401525b50505050565b600060028204905060018216806139d457607f821691505b602082108114156139e8576139e7613af7565b5b50919050565b6139f782613bc7565b810181811067ffffffffffffffff82111715613a1657613a15613b84565b5b80604052505050565b6000613a2a82613970565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613a5d57613a5c613a99565b5b600182019050919050565b6000613a7382613970565b9150613a7e83613970565b925082613a8e57613a8d613ac8565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5468652050656f706c652047656e657369733a20596f752063616e206672656560008201527f206d696e742061206d6178696d756d206f662033204e46540000000000000000602082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f5468652050656f706c652047656e657369733a20596f752063616e206d696e7460008201527f2061206d6178696d756d206f662036204e4654207065722077616c6c65740000602082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f5468652050656f706c652047656e657369733a20596f752063616e206672656560008201527f206d696e742061206d6178696d756d206f662033204e4654207065722077616c60208201527f6c65740000000000000000000000000000000000000000000000000000000000604082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f5468652050656f706c652047656e657369733a2045786365656473206d61786960008201527f6d756d204e465420737570706c79000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f5468652050656f706c652047656e657369733a20596f752063616e206d696e7460008201527f2061206d6178696d756d206f662036204e465400000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f5468652050656f706c652047656e657369733a2045746865722073656e74206960008201527f73206c657373207468616e205052494345202a206e756d000000000000000000602082015250565b7f5468652050656f706c652047656e657369733a20596f7520686f6c642061742060008201527f6c65617374203120746f6b656e00000000000000000000000000000000000000602082015250565b61432681613906565b811461433157600080fd5b50565b61433d81613918565b811461434857600080fd5b50565b61435481613924565b811461435f57600080fd5b50565b61436b81613970565b811461437657600080fd5b5056fea26469706673582212200f69da480b33abf3a699583ee46bb72568716a30e59901306397285ce07a3e8864736f6c634300080700330000000000000000000000007a58c0be72be218b41c608b7fe7c5bb630736c71

Deployed Bytecode

0x6080604052600436106101b75760003560e01c806370a08231116100ec578063a22cb4651161008a578063c87b56dd11610064578063c87b56dd146105ec578063da7e07be14610629578063e985e9c514610654578063f2fde38b14610691576101b7565b8063a22cb4651461055d578063b88d4fde14610586578063b99152d0146105af576101b7565b80638d859f3e116100c65780638d859f3e146104c05780638da5cb5b146104eb57806395d89b4114610516578063a0712d6814610541576101b7565b806370a0823114610450578063715018a61461048d5780637c928fe9146104a4576101b7565b80632f745c591161015957806342842e0e1161013357806342842e0e146103845780634f6ccce7146103ad57806355f804b3146103ea5780636352211e14610413576101b7565b80632f745c59146103075780633ccfd60b1461034457806340d097c31461035b576101b7565b8063095ea7b311610195578063095ea7b31461026157806318160ddd1461028a57806323b872dd146102b557806326a4e8d2146102de576101b7565b806301ffc9a7146101bc57806306fdde03146101f9578063081812fc14610224575b600080fd5b3480156101c857600080fd5b506101e360048036038101906101de9190612dec565b6106ba565b6040516101f091906133af565b60405180910390f35b34801561020557600080fd5b5061020e6106cc565b60405161021b91906133ca565b60405180910390f35b34801561023057600080fd5b5061024b60048036038101906102469190612e8f565b61075e565b6040516102589190613348565b60405180910390f35b34801561026d57600080fd5b5061028860048036038101906102839190612dac565b6107e3565b005b34801561029657600080fd5b5061029f6108fb565b6040516102ac919061370c565b60405180910390f35b3480156102c157600080fd5b506102dc60048036038101906102d79190612c96565b610908565b005b3480156102ea57600080fd5b5061030560048036038101906103009190612c29565b610968565b005b34801561031357600080fd5b5061032e60048036038101906103299190612dac565b610a28565b60405161033b919061370c565b60405180910390f35b34801561035057600080fd5b50610359610acd565b005b34801561036757600080fd5b50610382600480360381019061037d9190612c29565b610b98565b005b34801561039057600080fd5b506103ab60048036038101906103a69190612c96565b610c34565b005b3480156103b957600080fd5b506103d460048036038101906103cf9190612e8f565b610c54565b6040516103e1919061370c565b60405180910390f35b3480156103f657600080fd5b50610411600480360381019061040c9190612e46565b610cc5565b005b34801561041f57600080fd5b5061043a60048036038101906104359190612e8f565b610d5b565b6040516104479190613348565b60405180910390f35b34801561045c57600080fd5b5061047760048036038101906104729190612c29565b610e0d565b604051610484919061370c565b60405180910390f35b34801561049957600080fd5b506104a2610ec5565b005b6104be60048036038101906104b99190612e8f565b610f4d565b005b3480156104cc57600080fd5b506104d561117c565b6040516104e2919061370c565b60405180910390f35b3480156104f757600080fd5b50610500611187565b60405161050d9190613348565b60405180910390f35b34801561052257600080fd5b5061052b6111b1565b60405161053891906133ca565b60405180910390f35b61055b60048036038101906105569190612e8f565b611243565b005b34801561056957600080fd5b50610584600480360381019061057f9190612d6c565b6113cd565b005b34801561059257600080fd5b506105ad60048036038101906105a89190612ce9565b61154e565b005b3480156105bb57600080fd5b506105d660048036038101906105d19190612c29565b6115b0565b6040516105e3919061370c565b60405180910390f35b3480156105f857600080fd5b50610613600480360381019061060e9190612e8f565b611669565b60405161062091906133ca565b60405180910390f35b34801561063557600080fd5b5061063e611710565b60405161064b919061370c565b60405180910390f35b34801561066057600080fd5b5061067b60048036038101906106769190612c56565b611716565b60405161068891906133af565b60405180910390f35b34801561069d57600080fd5b506106b860048036038101906106b39190612c29565b6117aa565b005b60006106c5826118a2565b9050919050565b6060600080546106db906139bc565b80601f0160208091040260200160405190810160405280929190818152602001828054610707906139bc565b80156107545780601f1061072957610100808354040283529160200191610754565b820191906000526020600020905b81548152906001019060200180831161073757829003601f168201915b5050505050905090565b60006107698261191c565b6107a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079f9061358c565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006107ee82610d5b565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561085f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108569061362c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661087e611988565b73ffffffffffffffffffffffffffffffffffffffff1614806108ad57506108ac816108a7611988565b611716565b5b6108ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e3906134ec565b60405180910390fd5b6108f68383611990565b505050565b6000600880549050905090565b610919610913611988565b82611a49565b610958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094f9061366c565b60405180910390fd5b610963838383611b27565b505050565b610970611988565b73ffffffffffffffffffffffffffffffffffffffff1661098e611187565b73ffffffffffffffffffffffffffffffffffffffff16146109e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109db906135ac565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610a3383610e0d565b8210610a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6b9061340c565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610ad5611988565b73ffffffffffffffffffffffffffffffffffffffff16610af3611187565b73ffffffffffffffffffffffffffffffffffffffff1614610b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b40906135ac565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610b94573d6000803e3d6000fd5b5050565b610ba0611988565b73ffffffffffffffffffffffffffffffffffffffff16610bbe611187565b73ffffffffffffffffffffffffffffffffffffffff1614610c14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0b906135ac565b60405180910390fd5b610c2781610c22600b611d83565b611d91565b610c31600b611daf565b50565b610c4f8383836040518060200160405280600081525061154e565b505050565b6000610c5e6108fb565b8210610c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c96906136ac565b60405180910390fd5b60088281548110610cb357610cb2613b55565b5b90600052602060002001549050919050565b610ccd611988565b73ffffffffffffffffffffffffffffffffffffffff16610ceb611187565b73ffffffffffffffffffffffffffffffffffffffff1614610d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d38906135ac565b60405180910390fd5b80600d9080519060200190610d57929190612a28565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfb9061352c565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e759061350c565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ecd611988565b73ffffffffffffffffffffffffffffffffffffffff16610eeb611187565b73ffffffffffffffffffffffffffffffffffffffff1614610f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f38906135ac565b60405180910390fd5b610f4b6000611dc5565b565b6000610f576108fb565b90506000610f6433610e0d565b90506000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610fc89190613348565b60206040518083038186803b158015610fe057600080fd5b505afa158015610ff4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110189190612ebc565b9050600181101561105e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611055906136ec565b60405180910390fd5b60038511156110a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611099906133ec565b60405180910390fd5b600385846110b091906137f1565b11156110f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e89061360c565b60405180910390fd5b6103e7858561110091906137f1565b1115611141576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111389061364c565b60405180910390fd5b60005b858110156111745761116133828761115c91906137f1565b611d91565b808061116c90613a1f565b915050611144565b505050505050565b66b1a2bc2ec5000081565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546111c0906139bc565b80601f01602080910402602001604051908101604052809291908181526020018280546111ec906139bc565b80156112395780601f1061120e57610100808354040283529160200191611239565b820191906000526020600020905b81548152906001019060200180831161121c57829003601f168201915b5050505050905090565b600061124d6108fb565b9050600061125a33610e0d565b905060068311156112a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112979061368c565b60405180910390fd5b600683826112ae91906137f1565b11156112ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e69061356c565b60405180910390fd5b6103e783836112fe91906137f1565b111561133f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113369061364c565b60405180910390fd5b8266b1a2bc2ec500006113529190613878565b341015611394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138b906136cc565b60405180910390fd5b60005b838110156113c7576113b43382856113af91906137f1565b611d91565b80806113bf90613a1f565b915050611397565b50505050565b6113d5611988565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143a906134ac565b60405180910390fd5b8060056000611450611988565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166114fd611988565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161154291906133af565b60405180910390a35050565b61155f611559611988565b83611a49565b61159e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115959061366c565b60405180910390fd5b6115aa84848484611e8b565b50505050565b600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b81526004016116119190613348565b60206040518083038186803b15801561162957600080fd5b505afa15801561163d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116619190612ebc565b915050919050565b60606116748261191c565b6116b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116aa906135ec565b60405180910390fd5b60006116bd611ee7565b905060008151116116dd5760405180602001604052806000815250611708565b806116e784611f79565b6040516020016116f8929190613324565b6040516020818303038152906040525b915050919050565b6103e781565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6117b2611988565b73ffffffffffffffffffffffffffffffffffffffff166117d0611187565b73ffffffffffffffffffffffffffffffffffffffff1614611826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181d906135ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188d9061344c565b60405180910390fd5b61189f81611dc5565b50565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806119155750611914826120da565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611a0383610d5b565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611a548261191c565b611a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8a906134cc565b60405180910390fd5b6000611a9e83610d5b565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611b0d57508373ffffffffffffffffffffffffffffffffffffffff16611af58461075e565b73ffffffffffffffffffffffffffffffffffffffff16145b80611b1e5750611b1d8185611716565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611b4782610d5b565b73ffffffffffffffffffffffffffffffffffffffff1614611b9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b94906135cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c049061348c565b60405180910390fd5b611c188383836121bc565b611c23600082611990565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c7391906138d2565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cca91906137f1565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600081600001549050919050565b611dab8282604051806020016040528060008152506121cc565b5050565b6001816000016000828254019250508190555050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611e96848484611b27565b611ea284848484612227565b611ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed89061342c565b60405180910390fd5b50505050565b6060600d8054611ef6906139bc565b80601f0160208091040260200160405190810160405280929190818152602001828054611f22906139bc565b8015611f6f5780601f10611f4457610100808354040283529160200191611f6f565b820191906000526020600020905b815481529060010190602001808311611f5257829003601f168201915b5050505050905090565b60606000821415611fc1576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506120d5565b600082905060005b60008214611ff3578080611fdc90613a1f565b915050600a82611fec9190613847565b9150611fc9565b60008167ffffffffffffffff81111561200f5761200e613b84565b5b6040519080825280601f01601f1916602001820160405280156120415781602001600182028036833780820191505090505b5090505b600085146120ce5760018261205a91906138d2565b9150600a856120699190613a68565b603061207591906137f1565b60f81b81838151811061208b5761208a613b55565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856120c79190613847565b9450612045565b8093505050505b919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806121a557507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806121b557506121b4826123be565b5b9050919050565b6121c7838383612428565b505050565b6121d6838361253c565b6121e36000848484612227565b612222576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122199061342c565b60405180910390fd5b505050565b60006122488473ffffffffffffffffffffffffffffffffffffffff1661270a565b156123b1578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612271611988565b8786866040518563ffffffff1660e01b81526004016122939493929190613363565b602060405180830381600087803b1580156122ad57600080fd5b505af19250505080156122de57506040513d601f19601f820116820180604052508101906122db9190612e19565b60015b612361573d806000811461230e576040519150601f19603f3d011682016040523d82523d6000602084013e612313565b606091505b50600081511415612359576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123509061342c565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506123b6565b600190505b949350505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61243383838361271d565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124765761247181612722565b6124b5565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146124b4576124b3838261276b565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124f8576124f3816128d8565b612537565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146125365761253582826129a9565b5b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a39061354c565b60405180910390fd5b6125b58161191c565b156125f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ec9061346c565b60405180910390fd5b612601600083836121bc565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461265191906137f1565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161277884610e0d565b61278291906138d2565b9050600060076000848152602001908152602001600020549050818114612867576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506128ec91906138d2565b905060006009600084815260200190815260200160002054905060006008838154811061291c5761291b613b55565b5b90600052602060002001549050806008838154811061293e5761293d613b55565b5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061298d5761298c613b26565b5b6001900381819060005260206000200160009055905550505050565b60006129b483610e0d565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b828054612a34906139bc565b90600052602060002090601f016020900481019282612a565760008555612a9d565b82601f10612a6f57805160ff1916838001178555612a9d565b82800160010185558215612a9d579182015b82811115612a9c578251825591602001919060010190612a81565b5b509050612aaa9190612aae565b5090565b5b80821115612ac7576000816000905550600101612aaf565b5090565b6000612ade612ad98461374c565b613727565b905082815260208101848484011115612afa57612af9613bb8565b5b612b0584828561397a565b509392505050565b6000612b20612b1b8461377d565b613727565b905082815260208101848484011115612b3c57612b3b613bb8565b5b612b4784828561397a565b509392505050565b600081359050612b5e8161431d565b92915050565b600081359050612b7381614334565b92915050565b600081359050612b888161434b565b92915050565b600081519050612b9d8161434b565b92915050565b600082601f830112612bb857612bb7613bb3565b5b8135612bc8848260208601612acb565b91505092915050565b600082601f830112612be657612be5613bb3565b5b8135612bf6848260208601612b0d565b91505092915050565b600081359050612c0e81614362565b92915050565b600081519050612c2381614362565b92915050565b600060208284031215612c3f57612c3e613bc2565b5b6000612c4d84828501612b4f565b91505092915050565b60008060408385031215612c6d57612c6c613bc2565b5b6000612c7b85828601612b4f565b9250506020612c8c85828601612b4f565b9150509250929050565b600080600060608486031215612caf57612cae613bc2565b5b6000612cbd86828701612b4f565b9350506020612cce86828701612b4f565b9250506040612cdf86828701612bff565b9150509250925092565b60008060008060808587031215612d0357612d02613bc2565b5b6000612d1187828801612b4f565b9450506020612d2287828801612b4f565b9350506040612d3387828801612bff565b925050606085013567ffffffffffffffff811115612d5457612d53613bbd565b5b612d6087828801612ba3565b91505092959194509250565b60008060408385031215612d8357612d82613bc2565b5b6000612d9185828601612b4f565b9250506020612da285828601612b64565b9150509250929050565b60008060408385031215612dc357612dc2613bc2565b5b6000612dd185828601612b4f565b9250506020612de285828601612bff565b9150509250929050565b600060208284031215612e0257612e01613bc2565b5b6000612e1084828501612b79565b91505092915050565b600060208284031215612e2f57612e2e613bc2565b5b6000612e3d84828501612b8e565b91505092915050565b600060208284031215612e5c57612e5b613bc2565b5b600082013567ffffffffffffffff811115612e7a57612e79613bbd565b5b612e8684828501612bd1565b91505092915050565b600060208284031215612ea557612ea4613bc2565b5b6000612eb384828501612bff565b91505092915050565b600060208284031215612ed257612ed1613bc2565b5b6000612ee084828501612c14565b91505092915050565b612ef281613906565b82525050565b612f0181613918565b82525050565b6000612f12826137ae565b612f1c81856137c4565b9350612f2c818560208601613989565b612f3581613bc7565b840191505092915050565b6000612f4b826137b9565b612f5581856137d5565b9350612f65818560208601613989565b612f6e81613bc7565b840191505092915050565b6000612f84826137b9565b612f8e81856137e6565b9350612f9e818560208601613989565b80840191505092915050565b6000612fb76038836137d5565b9150612fc282613bd8565b604082019050919050565b6000612fda602b836137d5565b9150612fe582613c27565b604082019050919050565b6000612ffd6032836137d5565b915061300882613c76565b604082019050919050565b60006130206026836137d5565b915061302b82613cc5565b604082019050919050565b6000613043601c836137d5565b915061304e82613d14565b602082019050919050565b60006130666024836137d5565b915061307182613d3d565b604082019050919050565b60006130896019836137d5565b915061309482613d8c565b602082019050919050565b60006130ac602c836137d5565b91506130b782613db5565b604082019050919050565b60006130cf6038836137d5565b91506130da82613e04565b604082019050919050565b60006130f2602a836137d5565b91506130fd82613e53565b604082019050919050565b60006131156029836137d5565b915061312082613ea2565b604082019050919050565b60006131386020836137d5565b915061314382613ef1565b602082019050919050565b600061315b603e836137d5565b915061316682613f1a565b604082019050919050565b600061317e602c836137d5565b915061318982613f69565b604082019050919050565b60006131a16020836137d5565b91506131ac82613fb8565b602082019050919050565b60006131c46029836137d5565b91506131cf82613fe1565b604082019050919050565b60006131e7602f836137d5565b91506131f282614030565b604082019050919050565b600061320a6043836137d5565b91506132158261407f565b606082019050919050565b600061322d6021836137d5565b9150613238826140f4565b604082019050919050565b6000613250602e836137d5565b915061325b82614143565b604082019050919050565b60006132736031836137d5565b915061327e82614192565b604082019050919050565b60006132966033836137d5565b91506132a1826141e1565b604082019050919050565b60006132b9602c836137d5565b91506132c482614230565b604082019050919050565b60006132dc6037836137d5565b91506132e78261427f565b604082019050919050565b60006132ff602d836137d5565b915061330a826142ce565b604082019050919050565b61331e81613970565b82525050565b60006133308285612f79565b915061333c8284612f79565b91508190509392505050565b600060208201905061335d6000830184612ee9565b92915050565b60006080820190506133786000830187612ee9565b6133856020830186612ee9565b6133926040830185613315565b81810360608301526133a48184612f07565b905095945050505050565b60006020820190506133c46000830184612ef8565b92915050565b600060208201905081810360008301526133e48184612f40565b905092915050565b6000602082019050818103600083015261340581612faa565b9050919050565b6000602082019050818103600083015261342581612fcd565b9050919050565b6000602082019050818103600083015261344581612ff0565b9050919050565b6000602082019050818103600083015261346581613013565b9050919050565b6000602082019050818103600083015261348581613036565b9050919050565b600060208201905081810360008301526134a581613059565b9050919050565b600060208201905081810360008301526134c58161307c565b9050919050565b600060208201905081810360008301526134e58161309f565b9050919050565b60006020820190508181036000830152613505816130c2565b9050919050565b60006020820190508181036000830152613525816130e5565b9050919050565b6000602082019050818103600083015261354581613108565b9050919050565b600060208201905081810360008301526135658161312b565b9050919050565b600060208201905081810360008301526135858161314e565b9050919050565b600060208201905081810360008301526135a581613171565b9050919050565b600060208201905081810360008301526135c581613194565b9050919050565b600060208201905081810360008301526135e5816131b7565b9050919050565b60006020820190508181036000830152613605816131da565b9050919050565b60006020820190508181036000830152613625816131fd565b9050919050565b6000602082019050818103600083015261364581613220565b9050919050565b6000602082019050818103600083015261366581613243565b9050919050565b6000602082019050818103600083015261368581613266565b9050919050565b600060208201905081810360008301526136a581613289565b9050919050565b600060208201905081810360008301526136c5816132ac565b9050919050565b600060208201905081810360008301526136e5816132cf565b9050919050565b60006020820190508181036000830152613705816132f2565b9050919050565b60006020820190506137216000830184613315565b92915050565b6000613731613742565b905061373d82826139ee565b919050565b6000604051905090565b600067ffffffffffffffff82111561376757613766613b84565b5b61377082613bc7565b9050602081019050919050565b600067ffffffffffffffff82111561379857613797613b84565b5b6137a182613bc7565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006137fc82613970565b915061380783613970565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561383c5761383b613a99565b5b828201905092915050565b600061385282613970565b915061385d83613970565b92508261386d5761386c613ac8565b5b828204905092915050565b600061388382613970565b915061388e83613970565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156138c7576138c6613a99565b5b828202905092915050565b60006138dd82613970565b91506138e883613970565b9250828210156138fb576138fa613a99565b5b828203905092915050565b600061391182613950565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156139a757808201518184015260208101905061398c565b838111156139b6576000848401525b50505050565b600060028204905060018216806139d457607f821691505b602082108114156139e8576139e7613af7565b5b50919050565b6139f782613bc7565b810181811067ffffffffffffffff82111715613a1657613a15613b84565b5b80604052505050565b6000613a2a82613970565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613a5d57613a5c613a99565b5b600182019050919050565b6000613a7382613970565b9150613a7e83613970565b925082613a8e57613a8d613ac8565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5468652050656f706c652047656e657369733a20596f752063616e206672656560008201527f206d696e742061206d6178696d756d206f662033204e46540000000000000000602082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f5468652050656f706c652047656e657369733a20596f752063616e206d696e7460008201527f2061206d6178696d756d206f662036204e4654207065722077616c6c65740000602082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f5468652050656f706c652047656e657369733a20596f752063616e206672656560008201527f206d696e742061206d6178696d756d206f662033204e4654207065722077616c60208201527f6c65740000000000000000000000000000000000000000000000000000000000604082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f5468652050656f706c652047656e657369733a2045786365656473206d61786960008201527f6d756d204e465420737570706c79000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f5468652050656f706c652047656e657369733a20596f752063616e206d696e7460008201527f2061206d6178696d756d206f662036204e465400000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f5468652050656f706c652047656e657369733a2045746865722073656e74206960008201527f73206c657373207468616e205052494345202a206e756d000000000000000000602082015250565b7f5468652050656f706c652047656e657369733a20596f7520686f6c642061742060008201527f6c65617374203120746f6b656e00000000000000000000000000000000000000602082015250565b61432681613906565b811461433157600080fd5b50565b61433d81613918565b811461434857600080fd5b50565b61435481613924565b811461435f57600080fd5b50565b61436b81613970565b811461437657600080fd5b5056fea26469706673582212200f69da480b33abf3a699583ee46bb72568716a30e59901306397285ce07a3e8864736f6c63430008070033

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

0000000000000000000000007a58c0be72be218b41c608b7fe7c5bb630736c71

-----Decoded View---------------
Arg [0] : peopleTokenAddress (address): 0x7A58c0Be72BE218B41C608b7Fe7C5bB630736C71

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a58c0be72be218b41c608b7fe7c5bb630736c71


Deployed Bytecode Sourcemap

23092:3224:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26101:212;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13489:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14572:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14153:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20576:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15276:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23824:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20312:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25589:140;;;;;;;;;;;;;:::i;:::-;;25737:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15570:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20697:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23716:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13242:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13026:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5649:94;;;;;;;;;;;;;:::i;:::-;;24806:775;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23259:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5426:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13597:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24143:655;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14801:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15763:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23959:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13709:334;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23308:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15104:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5751:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26101:212;26240:4;26269:36;26293:11;26269:23;:36::i;:::-;26262:43;;26101:212;;;:::o;13489:100::-;13543:13;13576:5;13569:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13489:100;:::o;14572:221::-;14648:7;14676:16;14684:7;14676;:16::i;:::-;14668:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;14761:15;:24;14777:7;14761:24;;;;;;;;;;;;;;;;;;;;;14754:31;;14572:221;;;:::o;14153:411::-;14234:13;14250:23;14265:7;14250:14;:23::i;:::-;14234:39;;14298:5;14292:11;;:2;:11;;;;14284:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;14392:5;14376:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;14401:37;14418:5;14425:12;:10;:12::i;:::-;14401:16;:37::i;:::-;14376:62;14354:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;14535:21;14544:2;14548:7;14535:8;:21::i;:::-;14223:341;14153:411;;:::o;20576:113::-;20637:7;20664:10;:17;;;;20657:24;;20576:113;:::o;15276:286::-;15418:41;15437:12;:10;:12::i;:::-;15451:7;15418:18;:41::i;:::-;15410:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;15526:28;15536:4;15542:2;15546:7;15526:9;:28::i;:::-;15276:286;;;:::o;23824:127::-;5572:12;:10;:12::i;:::-;5561:23;;:7;:5;:7::i;:::-;:23;;;5553:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23925:18:::1;23903:19;;:40;;;;;;;;;;;;;;;;;;23824:127:::0;:::o;20312:256::-;20409:7;20445:23;20462:5;20445:16;:23::i;:::-;20437:5;:31;20429:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;20534:12;:19;20547:5;20534:19;;;;;;;;;;;;;;;:26;20554:5;20534:26;;;;;;;;;;;;20527:33;;20312:256;;;;:::o;25589:140::-;5572:12;:10;:12::i;:::-;5561:23;;:7;:5;:7::i;:::-;:23;;;5553:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25637:12:::1;25652:21;25637:36;;25692:10;25684:28;;:37;25713:7;25684:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25626:103;25589:140::o:0;25737:144::-;5572:12;:10;:12::i;:::-;5561:23;;:7;:5;:7::i;:::-;:23;;;5553:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25795:40:::1;25805:2;25809:25;:15;:23;:25::i;:::-;25795:9;:40::i;:::-;25846:27;:15;:25;:27::i;:::-;25737:144:::0;:::o;15570:185::-;15708:39;15725:4;15731:2;15735:7;15708:39;;;;;;;;;;;;:16;:39::i;:::-;15570:185;;;:::o;20697:233::-;20772:7;20808:30;:28;:30::i;:::-;20800:5;:38;20792:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;20905:10;20916:5;20905:17;;;;;;;;:::i;:::-;;;;;;;;;;20898:24;;20697:233;;;:::o;23716:100::-;5572:12;:10;:12::i;:::-;5561:23;;:7;:5;:7::i;:::-;:23;;;5553:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23801:7:::1;23785:13;:23;;;;;;;;;;;;:::i;:::-;;23716:100:::0;:::o;13242:239::-;13314:7;13334:13;13350:7;:16;13358:7;13350:16;;;;;;;;;;;;;;;;;;;;;13334:32;;13402:1;13385:19;;:5;:19;;;;13377:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13468:5;13461:12;;;13242:239;;;:::o;13026:208::-;13098:7;13143:1;13126:19;;:5;:19;;;;13118:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13210:9;:16;13220:5;13210:16;;;;;;;;;;;;;;;;13203:23;;13026:208;;;:::o;5649:94::-;5572:12;:10;:12::i;:::-;5561:23;;:7;:5;:7::i;:::-;:23;;;5553:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5714:21:::1;5732:1;5714:9;:21::i;:::-;5649:94::o:0;24806:775::-;24863:14;24880:13;:11;:13::i;:::-;24863:30;;24904:18;24925:21;24935:10;24925:9;:21::i;:::-;24904:42;;24957:12;24979:19;;;;;;;;;;;24957:42;;25010:24;25038:5;:15;;;25054:10;25038:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25010:55;;25105:1;25085:16;:21;;25076:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;25183:1;25176:3;:8;;25167:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;25285:1;25278:3;25265:10;:16;;;;:::i;:::-;:21;;25256:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;23361:3;25387;25378:6;:12;;;;:::i;:::-;:42;;25369:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;25488:9;25484:90;25503:3;25499:1;:7;25484:90;;;25527:35;25538:10;25559:1;25550:6;:10;;;;:::i;:::-;25527:9;:35::i;:::-;25508:3;;;;;:::i;:::-;;;;25484:90;;;;24852:729;;;;24806:775;:::o;23259:42::-;23291:10;23259:42;:::o;5426:87::-;5472:7;5499:6;;;;;;;;;;;5492:13;;5426:87;:::o;13597:104::-;13653:13;13686:7;13679:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13597:104;:::o;24143:655::-;24196:14;24213:13;:11;:13::i;:::-;24196:30;;24237:18;24258:21;24268:10;24258:9;:21::i;:::-;24237:42;;24306:1;24299:3;:8;;24290:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;24403:1;24396:3;24383:10;:16;;;;:::i;:::-;:21;;24374:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;23361:3;24500;24491:6;:12;;;;:::i;:::-;:42;;24482:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;24625:3;23291:10;24617:11;;;;:::i;:::-;24604:9;:24;;24595:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;24705:9;24701:90;24720:3;24716:1;:7;24701:90;;;24744:35;24755:10;24776:1;24767:6;:10;;;;:::i;:::-;24744:9;:35::i;:::-;24725:3;;;;;:::i;:::-;;;;24701:90;;;;24185:613;;24143:655;:::o;14801:295::-;14916:12;:10;:12::i;:::-;14904:24;;:8;:24;;;;14896:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;15016:8;14971:18;:32;14990:12;:10;:12::i;:::-;14971:32;;;;;;;;;;;;;;;:42;15004:8;14971:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;15069:8;15040:48;;15055:12;:10;:12::i;:::-;15040:48;;;15079:8;15040:48;;;;;;:::i;:::-;;;;;;;;14801:295;;:::o;15763:328::-;15938:41;15957:12;:10;:12::i;:::-;15971:7;15938:18;:41::i;:::-;15930:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;16044:39;16058:4;16064:2;16068:7;16077:5;16044:13;:39::i;:::-;15763:328;;;;:::o;23959:176::-;24023:7;24043:12;24065:19;;;;;;;;;;;24043:42;;24103:5;:15;;;24119:7;24103:24;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24096:31;;;23959:176;;;:::o;13709:334::-;13782:13;13816:16;13824:7;13816;:16::i;:::-;13808:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;13897:21;13921:10;:8;:10::i;:::-;13897:34;;13973:1;13955:7;13949:21;:25;:86;;;;;;;;;;;;;;;;;14001:7;14010:18;:7;:16;:18::i;:::-;13984:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;13949:86;13942:93;;;13709:334;;;:::o;23308:56::-;23361:3;23308:56;:::o;15104:164::-;15201:4;15225:18;:25;15244:5;15225:25;;;;;;;;;;;;;;;:35;15251:8;15225:35;;;;;;;;;;;;;;;;;;;;;;;;;15218:42;;15104:164;;;;:::o;5751:192::-;5572:12;:10;:12::i;:::-;5561:23;;:7;:5;:7::i;:::-;:23;;;5553:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5860:1:::1;5840:22;;:8;:22;;;;5832:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5916:19;5926:8;5916:9;:19::i;:::-;5751:192:::0;:::o;20080:224::-;20182:4;20221:35;20206:50;;;:11;:50;;;;:90;;;;20260:36;20284:11;20260:23;:36::i;:::-;20206:90;20199:97;;20080:224;;;:::o;16422:127::-;16487:4;16539:1;16511:30;;:7;:16;16519:7;16511:16;;;;;;;;;;;;;;;;;;;;;:30;;;;16504:37;;16422:127;;;:::o;4954:98::-;5007:7;5034:10;5027:17;;4954:98;:::o;18624:174::-;18726:2;18699:15;:24;18715:7;18699:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;18782:7;18778:2;18744:46;;18753:23;18768:7;18753:14;:23::i;:::-;18744:46;;;;;;;;;;;;18624:174;;:::o;16557:348::-;16650:4;16675:16;16683:7;16675;:16::i;:::-;16667:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;16751:13;16767:23;16782:7;16767:14;:23::i;:::-;16751:39;;16820:5;16809:16;;:7;:16;;;:51;;;;16853:7;16829:31;;:20;16841:7;16829:11;:20::i;:::-;:31;;;16809:51;:87;;;;16864:32;16881:5;16888:7;16864:16;:32::i;:::-;16809:87;16801:96;;;16557:348;;;;:::o;18090:526::-;18249:4;18222:31;;:23;18237:7;18222:14;:23::i;:::-;:31;;;18214:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;18332:1;18318:16;;:2;:16;;;;18310:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;18388:39;18409:4;18415:2;18419:7;18388:20;:39::i;:::-;18440:29;18457:1;18461:7;18440:8;:29::i;:::-;18501:1;18482:9;:15;18492:4;18482:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;18530:1;18513:9;:13;18523:2;18513:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;18561:2;18542:7;:16;18550:7;18542:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;18600:7;18596:2;18581:27;;18590:4;18581:27;;;;;;;;;;;;18090:526;;;:::o;2736:114::-;2801:7;2828;:14;;;2821:21;;2736:114;;;:::o;16913:110::-;16989:26;16999:2;17003:7;16989:26;;;;;;;;;;;;:9;:26::i;:::-;16913:110;;:::o;2858:127::-;2965:1;2947:7;:14;;;:19;;;;;;;;;;;2858:127;:::o;5951:173::-;6007:16;6026:6;;;;;;;;;;;6007:25;;6052:8;6043:6;;:17;;;;;;;;;;;;;;;;;;6107:8;6076:40;;6097:8;6076:40;;;;;;;;;;;;5996:128;5951:173;:::o;16099:315::-;16256:28;16266:4;16272:2;16276:7;16256:9;:28::i;:::-;16303:48;16326:4;16332:2;16336:7;16345:5;16303:22;:48::i;:::-;16295:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;16099:315;;;;:::o;23602:106::-;23654:13;23687;23680:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23602:106;:::o;3446:532::-;3502:13;3541:1;3532:5;:10;3528:53;;;3559:10;;;;;;;;;;;;;;;;;;;;;3528:53;3591:12;3606:5;3591:20;;3622:14;3647:78;3662:1;3654:4;:9;3647:78;;3680:8;;;;;:::i;:::-;;;;3711:2;3703:10;;;;;:::i;:::-;;;3647:78;;;3735:19;3767:6;3757:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3735:39;;3785:154;3801:1;3792:5;:10;3785:154;;3829:1;3819:11;;;;;:::i;:::-;;;3896:2;3888:5;:10;;;;:::i;:::-;3875:2;:24;;;;:::i;:::-;3862:39;;3845:6;3852;3845:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;3925:2;3916:11;;;;;:::i;:::-;;;3785:154;;;3963:6;3949:21;;;;;3446:532;;;;:::o;12713:305::-;12815:4;12867:25;12852:40;;;:11;:40;;;;:105;;;;12924:33;12909:48;;;:11;:48;;;;12852:105;:158;;;;12974:36;12998:11;12974:23;:36::i;:::-;12852:158;12832:178;;12713:305;;;:::o;25889:204::-;26040:45;26067:4;26073:2;26077:7;26040:26;:45::i;:::-;25889:204;;;:::o;17031:321::-;17161:18;17167:2;17171:7;17161:5;:18::i;:::-;17212:54;17243:1;17247:2;17251:7;17260:5;17212:22;:54::i;:::-;17190:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;17031:321;;;:::o;18806:799::-;18961:4;18982:15;:2;:13;;;:15::i;:::-;18978:620;;;19034:2;19018:36;;;19055:12;:10;:12::i;:::-;19069:4;19075:7;19084:5;19018:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;19014:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19277:1;19260:6;:13;:18;19256:272;;;19303:60;;;;;;;;;;:::i;:::-;;;;;;;;19256:272;19478:6;19472:13;19463:6;19459:2;19455:15;19448:38;19014:529;19151:41;;;19141:51;;;:6;:51;;;;19134:58;;;;;18978:620;19582:4;19575:11;;18806:799;;;;;;;:::o;10140:157::-;10225:4;10264:25;10249:40;;;:11;:40;;;;10242:47;;10140:157;;;:::o;20938:589::-;21082:45;21109:4;21115:2;21119:7;21082:26;:45::i;:::-;21160:1;21144:18;;:4;:18;;;21140:187;;;21179:40;21211:7;21179:31;:40::i;:::-;21140:187;;;21249:2;21241:10;;:4;:10;;;21237:90;;21268:47;21301:4;21307:7;21268:32;:47::i;:::-;21237:90;21140:187;21355:1;21341:16;;:2;:16;;;21337:183;;;21374:45;21411:7;21374:36;:45::i;:::-;21337:183;;;21447:4;21441:10;;:2;:10;;;21437:83;;21468:40;21496:2;21500:7;21468:27;:40::i;:::-;21437:83;21337:183;20938:589;;;:::o;17360:382::-;17454:1;17440:16;;:2;:16;;;;17432:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;17513:16;17521:7;17513;:16::i;:::-;17512:17;17504:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;17575:45;17604:1;17608:2;17612:7;17575:20;:45::i;:::-;17650:1;17633:9;:13;17643:2;17633:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;17681:2;17662:7;:16;17670:7;17662:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;17726:7;17722:2;17701:33;;17718:1;17701:33;;;;;;;;;;;;17360:382;;:::o;6181:198::-;6241:4;6260:12;6327:7;6315:20;6307:28;;6370:1;6363:4;:8;6356:15;;;6181:198;;;:::o;19613:126::-;;;;:::o;21764:164::-;21868:10;:17;;;;21841:15;:24;21857:7;21841:24;;;;;;;;;;;:44;;;;21896:10;21912:7;21896:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21764:164;:::o;21936:557::-;22030:22;22080:1;22055:22;22072:4;22055:16;:22::i;:::-;:26;;;;:::i;:::-;22030:51;;22092:18;22113:17;:26;22131:7;22113:26;;;;;;;;;;;;22092:47;;22170:14;22156:10;:28;22152:236;;22201:19;22223:12;:18;22236:4;22223:18;;;;;;;;;;;;;;;:34;22242:14;22223:34;;;;;;;;;;;;22201:56;;22307:11;22274:12;:18;22287:4;22274:18;;;;;;;;;;;;;;;:30;22293:10;22274:30;;;;;;;;;;;:44;;;;22366:10;22333:17;:30;22351:11;22333:30;;;;;;;;;;;:43;;;;22186:202;22152:236;22407:17;:26;22425:7;22407:26;;;;;;;;;;;22400:33;;;22451:12;:18;22464:4;22451:18;;;;;;;;;;;;;;;:34;22470:14;22451:34;;;;;;;;;;;22444:41;;;22017:476;;21936:557;;:::o;22501:427::-;22585:22;22630:1;22610:10;:17;;;;:21;;;;:::i;:::-;22585:46;;22642:18;22663:15;:24;22679:7;22663:24;;;;;;;;;;;;22642:45;;22700:19;22722:10;22733:14;22722:26;;;;;;;;:::i;:::-;;;;;;;;;;22700:48;;22786:11;22761:10;22772;22761:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;22839:10;22808:15;:28;22824:11;22808:28;;;;;;;;;;;:41;;;;22869:15;:24;22885:7;22869:24;;;;;;;;;;;22862:31;;;22904:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22572:356;;;22501:427;:::o;21535:221::-;21620:14;21637:20;21654:2;21637:16;:20::i;:::-;21620:37;;21695:7;21668:12;:16;21681:2;21668:16;;;;;;;;;;;;;;;:24;21685:6;21668:24;;;;;;;;;;;:34;;;;21742:6;21713:17;:26;21731:7;21713:26;;;;;;;;;;;:35;;;;21609:147;21535:221;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:412::-;501:5;526:66;542:49;584:6;542:49;:::i;:::-;526:66;:::i;:::-;517:75;;615:6;608:5;601:21;653:4;646:5;642:16;691:3;682:6;677:3;673:16;670:25;667:112;;;698:79;;:::i;:::-;667:112;788:41;822:6;817:3;812;788:41;:::i;:::-;507:328;423:412;;;;;:::o;841:139::-;887:5;925:6;912:20;903:29;;941:33;968:5;941:33;:::i;:::-;841:139;;;;:::o;986:133::-;1029:5;1067:6;1054:20;1045:29;;1083:30;1107:5;1083:30;:::i;:::-;986:133;;;;:::o;1125:137::-;1170:5;1208:6;1195:20;1186:29;;1224:32;1250:5;1224:32;:::i;:::-;1125:137;;;;:::o;1268:141::-;1324:5;1355:6;1349:13;1340:22;;1371:32;1397:5;1371:32;:::i;:::-;1268:141;;;;:::o;1428:338::-;1483:5;1532:3;1525:4;1517:6;1513:17;1509:27;1499:122;;1540:79;;:::i;:::-;1499:122;1657:6;1644:20;1682:78;1756:3;1748:6;1741:4;1733:6;1729:17;1682:78;:::i;:::-;1673:87;;1489:277;1428:338;;;;:::o;1786:340::-;1842:5;1891:3;1884:4;1876:6;1872:17;1868:27;1858:122;;1899:79;;:::i;:::-;1858:122;2016:6;2003:20;2041:79;2116:3;2108:6;2101:4;2093:6;2089:17;2041:79;:::i;:::-;2032:88;;1848:278;1786:340;;;;:::o;2132:139::-;2178:5;2216:6;2203:20;2194:29;;2232:33;2259:5;2232:33;:::i;:::-;2132:139;;;;:::o;2277:143::-;2334:5;2365:6;2359:13;2350:22;;2381:33;2408:5;2381:33;:::i;:::-;2277:143;;;;:::o;2426:329::-;2485:6;2534:2;2522:9;2513:7;2509:23;2505:32;2502:119;;;2540:79;;:::i;:::-;2502:119;2660:1;2685:53;2730:7;2721:6;2710:9;2706:22;2685:53;:::i;:::-;2675:63;;2631:117;2426:329;;;;:::o;2761:474::-;2829:6;2837;2886:2;2874:9;2865:7;2861:23;2857:32;2854:119;;;2892:79;;:::i;:::-;2854:119;3012:1;3037:53;3082:7;3073:6;3062:9;3058:22;3037:53;:::i;:::-;3027:63;;2983:117;3139:2;3165:53;3210:7;3201:6;3190:9;3186:22;3165:53;:::i;:::-;3155:63;;3110:118;2761:474;;;;;:::o;3241:619::-;3318:6;3326;3334;3383:2;3371:9;3362:7;3358:23;3354:32;3351:119;;;3389:79;;:::i;:::-;3351:119;3509:1;3534:53;3579:7;3570:6;3559:9;3555:22;3534:53;:::i;:::-;3524:63;;3480:117;3636:2;3662:53;3707:7;3698:6;3687:9;3683:22;3662:53;:::i;:::-;3652:63;;3607:118;3764:2;3790:53;3835:7;3826:6;3815:9;3811:22;3790:53;:::i;:::-;3780:63;;3735:118;3241:619;;;;;:::o;3866:943::-;3961:6;3969;3977;3985;4034:3;4022:9;4013:7;4009:23;4005:33;4002:120;;;4041:79;;:::i;:::-;4002:120;4161:1;4186:53;4231:7;4222:6;4211:9;4207:22;4186:53;:::i;:::-;4176:63;;4132:117;4288:2;4314:53;4359:7;4350:6;4339:9;4335:22;4314:53;:::i;:::-;4304:63;;4259:118;4416:2;4442:53;4487:7;4478:6;4467:9;4463:22;4442:53;:::i;:::-;4432:63;;4387:118;4572:2;4561:9;4557:18;4544:32;4603:18;4595:6;4592:30;4589:117;;;4625:79;;:::i;:::-;4589:117;4730:62;4784:7;4775:6;4764:9;4760:22;4730:62;:::i;:::-;4720:72;;4515:287;3866:943;;;;;;;:::o;4815:468::-;4880:6;4888;4937:2;4925:9;4916:7;4912:23;4908:32;4905:119;;;4943:79;;:::i;:::-;4905:119;5063:1;5088:53;5133:7;5124:6;5113:9;5109:22;5088:53;:::i;:::-;5078:63;;5034:117;5190:2;5216:50;5258:7;5249:6;5238:9;5234:22;5216:50;:::i;:::-;5206:60;;5161:115;4815:468;;;;;:::o;5289:474::-;5357:6;5365;5414:2;5402:9;5393:7;5389:23;5385:32;5382:119;;;5420:79;;:::i;:::-;5382:119;5540:1;5565:53;5610:7;5601:6;5590:9;5586:22;5565:53;:::i;:::-;5555:63;;5511:117;5667:2;5693:53;5738:7;5729:6;5718:9;5714:22;5693:53;:::i;:::-;5683:63;;5638:118;5289:474;;;;;:::o;5769:327::-;5827:6;5876:2;5864:9;5855:7;5851:23;5847:32;5844:119;;;5882:79;;:::i;:::-;5844:119;6002:1;6027:52;6071:7;6062:6;6051:9;6047:22;6027:52;:::i;:::-;6017:62;;5973:116;5769:327;;;;:::o;6102:349::-;6171:6;6220:2;6208:9;6199:7;6195:23;6191:32;6188:119;;;6226:79;;:::i;:::-;6188:119;6346:1;6371:63;6426:7;6417:6;6406:9;6402:22;6371:63;:::i;:::-;6361:73;;6317:127;6102:349;;;;:::o;6457:509::-;6526:6;6575:2;6563:9;6554:7;6550:23;6546:32;6543:119;;;6581:79;;:::i;:::-;6543:119;6729:1;6718:9;6714:17;6701:31;6759:18;6751:6;6748:30;6745:117;;;6781:79;;:::i;:::-;6745:117;6886:63;6941:7;6932:6;6921:9;6917:22;6886:63;:::i;:::-;6876:73;;6672:287;6457:509;;;;:::o;6972:329::-;7031:6;7080:2;7068:9;7059:7;7055:23;7051:32;7048:119;;;7086:79;;:::i;:::-;7048:119;7206:1;7231:53;7276:7;7267:6;7256:9;7252:22;7231:53;:::i;:::-;7221:63;;7177:117;6972:329;;;;:::o;7307:351::-;7377:6;7426:2;7414:9;7405:7;7401:23;7397:32;7394:119;;;7432:79;;:::i;:::-;7394:119;7552:1;7577:64;7633:7;7624:6;7613:9;7609:22;7577:64;:::i;:::-;7567:74;;7523:128;7307:351;;;;:::o;7664:118::-;7751:24;7769:5;7751:24;:::i;:::-;7746:3;7739:37;7664:118;;:::o;7788:109::-;7869:21;7884:5;7869:21;:::i;:::-;7864:3;7857:34;7788:109;;:::o;7903:360::-;7989:3;8017:38;8049:5;8017:38;:::i;:::-;8071:70;8134:6;8129:3;8071:70;:::i;:::-;8064:77;;8150:52;8195:6;8190:3;8183:4;8176:5;8172:16;8150:52;:::i;:::-;8227:29;8249:6;8227:29;:::i;:::-;8222:3;8218:39;8211:46;;7993:270;7903:360;;;;:::o;8269:364::-;8357:3;8385:39;8418:5;8385:39;:::i;:::-;8440:71;8504:6;8499:3;8440:71;:::i;:::-;8433:78;;8520:52;8565:6;8560:3;8553:4;8546:5;8542:16;8520:52;:::i;:::-;8597:29;8619:6;8597:29;:::i;:::-;8592:3;8588:39;8581:46;;8361:272;8269:364;;;;:::o;8639:377::-;8745:3;8773:39;8806:5;8773:39;:::i;:::-;8828:89;8910:6;8905:3;8828:89;:::i;:::-;8821:96;;8926:52;8971:6;8966:3;8959:4;8952:5;8948:16;8926:52;:::i;:::-;9003:6;8998:3;8994:16;8987:23;;8749:267;8639:377;;;;:::o;9022:366::-;9164:3;9185:67;9249:2;9244:3;9185:67;:::i;:::-;9178:74;;9261:93;9350:3;9261:93;:::i;:::-;9379:2;9374:3;9370:12;9363:19;;9022:366;;;:::o;9394:::-;9536:3;9557:67;9621:2;9616:3;9557:67;:::i;:::-;9550:74;;9633:93;9722:3;9633:93;:::i;:::-;9751:2;9746:3;9742:12;9735:19;;9394:366;;;:::o;9766:::-;9908:3;9929:67;9993:2;9988:3;9929:67;:::i;:::-;9922:74;;10005:93;10094:3;10005:93;:::i;:::-;10123:2;10118:3;10114:12;10107:19;;9766:366;;;:::o;10138:::-;10280:3;10301:67;10365:2;10360:3;10301:67;:::i;:::-;10294:74;;10377:93;10466:3;10377:93;:::i;:::-;10495:2;10490:3;10486:12;10479:19;;10138:366;;;:::o;10510:::-;10652:3;10673:67;10737:2;10732:3;10673:67;:::i;:::-;10666:74;;10749:93;10838:3;10749:93;:::i;:::-;10867:2;10862:3;10858:12;10851:19;;10510:366;;;:::o;10882:::-;11024:3;11045:67;11109:2;11104:3;11045:67;:::i;:::-;11038:74;;11121:93;11210:3;11121:93;:::i;:::-;11239:2;11234:3;11230:12;11223:19;;10882:366;;;:::o;11254:::-;11396:3;11417:67;11481:2;11476:3;11417:67;:::i;:::-;11410:74;;11493:93;11582:3;11493:93;:::i;:::-;11611:2;11606:3;11602:12;11595:19;;11254:366;;;:::o;11626:::-;11768:3;11789:67;11853:2;11848:3;11789:67;:::i;:::-;11782:74;;11865:93;11954:3;11865:93;:::i;:::-;11983:2;11978:3;11974:12;11967:19;;11626:366;;;:::o;11998:::-;12140:3;12161:67;12225:2;12220:3;12161:67;:::i;:::-;12154:74;;12237:93;12326:3;12237:93;:::i;:::-;12355:2;12350:3;12346:12;12339:19;;11998:366;;;:::o;12370:::-;12512:3;12533:67;12597:2;12592:3;12533:67;:::i;:::-;12526:74;;12609:93;12698:3;12609:93;:::i;:::-;12727:2;12722:3;12718:12;12711:19;;12370:366;;;:::o;12742:::-;12884:3;12905:67;12969:2;12964:3;12905:67;:::i;:::-;12898:74;;12981:93;13070:3;12981:93;:::i;:::-;13099:2;13094:3;13090:12;13083:19;;12742:366;;;:::o;13114:::-;13256:3;13277:67;13341:2;13336:3;13277:67;:::i;:::-;13270:74;;13353:93;13442:3;13353:93;:::i;:::-;13471:2;13466:3;13462:12;13455:19;;13114:366;;;:::o;13486:::-;13628:3;13649:67;13713:2;13708:3;13649:67;:::i;:::-;13642:74;;13725:93;13814:3;13725:93;:::i;:::-;13843:2;13838:3;13834:12;13827:19;;13486:366;;;:::o;13858:::-;14000:3;14021:67;14085:2;14080:3;14021:67;:::i;:::-;14014:74;;14097:93;14186:3;14097:93;:::i;:::-;14215:2;14210:3;14206:12;14199:19;;13858:366;;;:::o;14230:::-;14372:3;14393:67;14457:2;14452:3;14393:67;:::i;:::-;14386:74;;14469:93;14558:3;14469:93;:::i;:::-;14587:2;14582:3;14578:12;14571:19;;14230:366;;;:::o;14602:::-;14744:3;14765:67;14829:2;14824:3;14765:67;:::i;:::-;14758:74;;14841:93;14930:3;14841:93;:::i;:::-;14959:2;14954:3;14950:12;14943:19;;14602:366;;;:::o;14974:::-;15116:3;15137:67;15201:2;15196:3;15137:67;:::i;:::-;15130:74;;15213:93;15302:3;15213:93;:::i;:::-;15331:2;15326:3;15322:12;15315:19;;14974:366;;;:::o;15346:::-;15488:3;15509:67;15573:2;15568:3;15509:67;:::i;:::-;15502:74;;15585:93;15674:3;15585:93;:::i;:::-;15703:2;15698:3;15694:12;15687:19;;15346:366;;;:::o;15718:::-;15860:3;15881:67;15945:2;15940:3;15881:67;:::i;:::-;15874:74;;15957:93;16046:3;15957:93;:::i;:::-;16075:2;16070:3;16066:12;16059:19;;15718:366;;;:::o;16090:::-;16232:3;16253:67;16317:2;16312:3;16253:67;:::i;:::-;16246:74;;16329:93;16418:3;16329:93;:::i;:::-;16447:2;16442:3;16438:12;16431:19;;16090:366;;;:::o;16462:::-;16604:3;16625:67;16689:2;16684:3;16625:67;:::i;:::-;16618:74;;16701:93;16790:3;16701:93;:::i;:::-;16819:2;16814:3;16810:12;16803:19;;16462:366;;;:::o;16834:::-;16976:3;16997:67;17061:2;17056:3;16997:67;:::i;:::-;16990:74;;17073:93;17162:3;17073:93;:::i;:::-;17191:2;17186:3;17182:12;17175:19;;16834:366;;;:::o;17206:::-;17348:3;17369:67;17433:2;17428:3;17369:67;:::i;:::-;17362:74;;17445:93;17534:3;17445:93;:::i;:::-;17563:2;17558:3;17554:12;17547:19;;17206:366;;;:::o;17578:::-;17720:3;17741:67;17805:2;17800:3;17741:67;:::i;:::-;17734:74;;17817:93;17906:3;17817:93;:::i;:::-;17935:2;17930:3;17926:12;17919:19;;17578:366;;;:::o;17950:::-;18092:3;18113:67;18177:2;18172:3;18113:67;:::i;:::-;18106:74;;18189:93;18278:3;18189:93;:::i;:::-;18307:2;18302:3;18298:12;18291:19;;17950:366;;;:::o;18322:118::-;18409:24;18427:5;18409:24;:::i;:::-;18404:3;18397:37;18322:118;;:::o;18446:435::-;18626:3;18648:95;18739:3;18730:6;18648:95;:::i;:::-;18641:102;;18760:95;18851:3;18842:6;18760:95;:::i;:::-;18753:102;;18872:3;18865:10;;18446:435;;;;;:::o;18887:222::-;18980:4;19018:2;19007:9;19003:18;18995:26;;19031:71;19099:1;19088:9;19084:17;19075:6;19031:71;:::i;:::-;18887:222;;;;:::o;19115:640::-;19310:4;19348:3;19337:9;19333:19;19325:27;;19362:71;19430:1;19419:9;19415:17;19406:6;19362:71;:::i;:::-;19443:72;19511:2;19500:9;19496:18;19487:6;19443:72;:::i;:::-;19525;19593:2;19582:9;19578:18;19569:6;19525:72;:::i;:::-;19644:9;19638:4;19634:20;19629:2;19618:9;19614:18;19607:48;19672:76;19743:4;19734:6;19672:76;:::i;:::-;19664:84;;19115:640;;;;;;;:::o;19761:210::-;19848:4;19886:2;19875:9;19871:18;19863:26;;19899:65;19961:1;19950:9;19946:17;19937:6;19899:65;:::i;:::-;19761:210;;;;:::o;19977:313::-;20090:4;20128:2;20117:9;20113:18;20105:26;;20177:9;20171:4;20167:20;20163:1;20152:9;20148:17;20141:47;20205:78;20278:4;20269:6;20205:78;:::i;:::-;20197:86;;19977:313;;;;:::o;20296:419::-;20462:4;20500:2;20489:9;20485:18;20477:26;;20549:9;20543:4;20539:20;20535:1;20524:9;20520:17;20513:47;20577:131;20703:4;20577:131;:::i;:::-;20569:139;;20296:419;;;:::o;20721:::-;20887:4;20925:2;20914:9;20910:18;20902:26;;20974:9;20968:4;20964:20;20960:1;20949:9;20945:17;20938:47;21002:131;21128:4;21002:131;:::i;:::-;20994:139;;20721:419;;;:::o;21146:::-;21312:4;21350:2;21339:9;21335:18;21327:26;;21399:9;21393:4;21389:20;21385:1;21374:9;21370:17;21363:47;21427:131;21553:4;21427:131;:::i;:::-;21419:139;;21146:419;;;:::o;21571:::-;21737:4;21775:2;21764:9;21760:18;21752:26;;21824:9;21818:4;21814:20;21810:1;21799:9;21795:17;21788:47;21852:131;21978:4;21852:131;:::i;:::-;21844:139;;21571:419;;;:::o;21996:::-;22162:4;22200:2;22189:9;22185:18;22177:26;;22249:9;22243:4;22239:20;22235:1;22224:9;22220:17;22213:47;22277:131;22403:4;22277:131;:::i;:::-;22269:139;;21996:419;;;:::o;22421:::-;22587:4;22625:2;22614:9;22610:18;22602:26;;22674:9;22668:4;22664:20;22660:1;22649:9;22645:17;22638:47;22702:131;22828:4;22702:131;:::i;:::-;22694:139;;22421:419;;;:::o;22846:::-;23012:4;23050:2;23039:9;23035:18;23027:26;;23099:9;23093:4;23089:20;23085:1;23074:9;23070:17;23063:47;23127:131;23253:4;23127:131;:::i;:::-;23119:139;;22846:419;;;:::o;23271:::-;23437:4;23475:2;23464:9;23460:18;23452:26;;23524:9;23518:4;23514:20;23510:1;23499:9;23495:17;23488:47;23552:131;23678:4;23552:131;:::i;:::-;23544:139;;23271:419;;;:::o;23696:::-;23862:4;23900:2;23889:9;23885:18;23877:26;;23949:9;23943:4;23939:20;23935:1;23924:9;23920:17;23913:47;23977:131;24103:4;23977:131;:::i;:::-;23969:139;;23696:419;;;:::o;24121:::-;24287:4;24325:2;24314:9;24310:18;24302:26;;24374:9;24368:4;24364:20;24360:1;24349:9;24345:17;24338:47;24402:131;24528:4;24402:131;:::i;:::-;24394:139;;24121:419;;;:::o;24546:::-;24712:4;24750:2;24739:9;24735:18;24727:26;;24799:9;24793:4;24789:20;24785:1;24774:9;24770:17;24763:47;24827:131;24953:4;24827:131;:::i;:::-;24819:139;;24546:419;;;:::o;24971:::-;25137:4;25175:2;25164:9;25160:18;25152:26;;25224:9;25218:4;25214:20;25210:1;25199:9;25195:17;25188:47;25252:131;25378:4;25252:131;:::i;:::-;25244:139;;24971:419;;;:::o;25396:::-;25562:4;25600:2;25589:9;25585:18;25577:26;;25649:9;25643:4;25639:20;25635:1;25624:9;25620:17;25613:47;25677:131;25803:4;25677:131;:::i;:::-;25669:139;;25396:419;;;:::o;25821:::-;25987:4;26025:2;26014:9;26010:18;26002:26;;26074:9;26068:4;26064:20;26060:1;26049:9;26045:17;26038:47;26102:131;26228:4;26102:131;:::i;:::-;26094:139;;25821:419;;;:::o;26246:::-;26412:4;26450:2;26439:9;26435:18;26427:26;;26499:9;26493:4;26489:20;26485:1;26474:9;26470:17;26463:47;26527:131;26653:4;26527:131;:::i;:::-;26519:139;;26246:419;;;:::o;26671:::-;26837:4;26875:2;26864:9;26860:18;26852:26;;26924:9;26918:4;26914:20;26910:1;26899:9;26895:17;26888:47;26952:131;27078:4;26952:131;:::i;:::-;26944:139;;26671:419;;;:::o;27096:::-;27262:4;27300:2;27289:9;27285:18;27277:26;;27349:9;27343:4;27339:20;27335:1;27324:9;27320:17;27313:47;27377:131;27503:4;27377:131;:::i;:::-;27369:139;;27096:419;;;:::o;27521:::-;27687:4;27725:2;27714:9;27710:18;27702:26;;27774:9;27768:4;27764:20;27760:1;27749:9;27745:17;27738:47;27802:131;27928:4;27802:131;:::i;:::-;27794:139;;27521:419;;;:::o;27946:::-;28112:4;28150:2;28139:9;28135:18;28127:26;;28199:9;28193:4;28189:20;28185:1;28174:9;28170:17;28163:47;28227:131;28353:4;28227:131;:::i;:::-;28219:139;;27946:419;;;:::o;28371:::-;28537:4;28575:2;28564:9;28560:18;28552:26;;28624:9;28618:4;28614:20;28610:1;28599:9;28595:17;28588:47;28652:131;28778:4;28652:131;:::i;:::-;28644:139;;28371:419;;;:::o;28796:::-;28962:4;29000:2;28989:9;28985:18;28977:26;;29049:9;29043:4;29039:20;29035:1;29024:9;29020:17;29013:47;29077:131;29203:4;29077:131;:::i;:::-;29069:139;;28796:419;;;:::o;29221:::-;29387:4;29425:2;29414:9;29410:18;29402:26;;29474:9;29468:4;29464:20;29460:1;29449:9;29445:17;29438:47;29502:131;29628:4;29502:131;:::i;:::-;29494:139;;29221:419;;;:::o;29646:::-;29812:4;29850:2;29839:9;29835:18;29827:26;;29899:9;29893:4;29889:20;29885:1;29874:9;29870:17;29863:47;29927:131;30053:4;29927:131;:::i;:::-;29919:139;;29646:419;;;:::o;30071:::-;30237:4;30275:2;30264:9;30260:18;30252:26;;30324:9;30318:4;30314:20;30310:1;30299:9;30295:17;30288:47;30352:131;30478:4;30352:131;:::i;:::-;30344:139;;30071:419;;;:::o;30496:::-;30662:4;30700:2;30689:9;30685:18;30677:26;;30749:9;30743:4;30739:20;30735:1;30724:9;30720:17;30713:47;30777:131;30903:4;30777:131;:::i;:::-;30769:139;;30496:419;;;:::o;30921:222::-;31014:4;31052:2;31041:9;31037:18;31029:26;;31065:71;31133:1;31122:9;31118:17;31109:6;31065:71;:::i;:::-;30921:222;;;;:::o;31149:129::-;31183:6;31210:20;;:::i;:::-;31200:30;;31239:33;31267:4;31259:6;31239:33;:::i;:::-;31149:129;;;:::o;31284:75::-;31317:6;31350:2;31344:9;31334:19;;31284:75;:::o;31365:307::-;31426:4;31516:18;31508:6;31505:30;31502:56;;;31538:18;;:::i;:::-;31502:56;31576:29;31598:6;31576:29;:::i;:::-;31568:37;;31660:4;31654;31650:15;31642:23;;31365:307;;;:::o;31678:308::-;31740:4;31830:18;31822:6;31819:30;31816:56;;;31852:18;;:::i;:::-;31816:56;31890:29;31912:6;31890:29;:::i;:::-;31882:37;;31974:4;31968;31964:15;31956:23;;31678:308;;;:::o;31992:98::-;32043:6;32077:5;32071:12;32061:22;;31992:98;;;:::o;32096:99::-;32148:6;32182:5;32176:12;32166:22;;32096:99;;;:::o;32201:168::-;32284:11;32318:6;32313:3;32306:19;32358:4;32353:3;32349:14;32334:29;;32201:168;;;;:::o;32375:169::-;32459:11;32493:6;32488:3;32481:19;32533:4;32528:3;32524:14;32509:29;;32375:169;;;;:::o;32550:148::-;32652:11;32689:3;32674:18;;32550:148;;;;:::o;32704:305::-;32744:3;32763:20;32781:1;32763:20;:::i;:::-;32758:25;;32797:20;32815:1;32797:20;:::i;:::-;32792:25;;32951:1;32883:66;32879:74;32876:1;32873:81;32870:107;;;32957:18;;:::i;:::-;32870:107;33001:1;32998;32994:9;32987:16;;32704:305;;;;:::o;33015:185::-;33055:1;33072:20;33090:1;33072:20;:::i;:::-;33067:25;;33106:20;33124:1;33106:20;:::i;:::-;33101:25;;33145:1;33135:35;;33150:18;;:::i;:::-;33135:35;33192:1;33189;33185:9;33180:14;;33015:185;;;;:::o;33206:348::-;33246:7;33269:20;33287:1;33269:20;:::i;:::-;33264:25;;33303:20;33321:1;33303:20;:::i;:::-;33298:25;;33491:1;33423:66;33419:74;33416:1;33413:81;33408:1;33401:9;33394:17;33390:105;33387:131;;;33498:18;;:::i;:::-;33387:131;33546:1;33543;33539:9;33528:20;;33206:348;;;;:::o;33560:191::-;33600:4;33620:20;33638:1;33620:20;:::i;:::-;33615:25;;33654:20;33672:1;33654:20;:::i;:::-;33649:25;;33693:1;33690;33687:8;33684:34;;;33698:18;;:::i;:::-;33684:34;33743:1;33740;33736:9;33728:17;;33560:191;;;;:::o;33757:96::-;33794:7;33823:24;33841:5;33823:24;:::i;:::-;33812:35;;33757:96;;;:::o;33859:90::-;33893:7;33936:5;33929:13;33922:21;33911:32;;33859:90;;;:::o;33955:149::-;33991:7;34031:66;34024:5;34020:78;34009:89;;33955:149;;;:::o;34110:126::-;34147:7;34187:42;34180:5;34176:54;34165:65;;34110:126;;;:::o;34242:77::-;34279:7;34308:5;34297:16;;34242:77;;;:::o;34325:154::-;34409:6;34404:3;34399;34386:30;34471:1;34462:6;34457:3;34453:16;34446:27;34325:154;;;:::o;34485:307::-;34553:1;34563:113;34577:6;34574:1;34571:13;34563:113;;;34662:1;34657:3;34653:11;34647:18;34643:1;34638:3;34634:11;34627:39;34599:2;34596:1;34592:10;34587:15;;34563:113;;;34694:6;34691:1;34688:13;34685:101;;;34774:1;34765:6;34760:3;34756:16;34749:27;34685:101;34534:258;34485:307;;;:::o;34798:320::-;34842:6;34879:1;34873:4;34869:12;34859:22;;34926:1;34920:4;34916:12;34947:18;34937:81;;35003:4;34995:6;34991:17;34981:27;;34937:81;35065:2;35057:6;35054:14;35034:18;35031:38;35028:84;;;35084:18;;:::i;:::-;35028:84;34849:269;34798:320;;;:::o;35124:281::-;35207:27;35229:4;35207:27;:::i;:::-;35199:6;35195:40;35337:6;35325:10;35322:22;35301:18;35289:10;35286:34;35283:62;35280:88;;;35348:18;;:::i;:::-;35280:88;35388:10;35384:2;35377:22;35167:238;35124:281;;:::o;35411:233::-;35450:3;35473:24;35491:5;35473:24;:::i;:::-;35464:33;;35519:66;35512:5;35509:77;35506:103;;;35589:18;;:::i;:::-;35506:103;35636:1;35629:5;35625:13;35618:20;;35411:233;;;:::o;35650:176::-;35682:1;35699:20;35717:1;35699:20;:::i;:::-;35694:25;;35733:20;35751:1;35733:20;:::i;:::-;35728:25;;35772:1;35762:35;;35777:18;;:::i;:::-;35762:35;35818:1;35815;35811:9;35806:14;;35650:176;;;;:::o;35832:180::-;35880:77;35877:1;35870:88;35977:4;35974:1;35967:15;36001:4;35998:1;35991:15;36018:180;36066:77;36063:1;36056:88;36163:4;36160:1;36153:15;36187:4;36184:1;36177:15;36204:180;36252:77;36249:1;36242:88;36349:4;36346:1;36339:15;36373:4;36370:1;36363:15;36390:180;36438:77;36435:1;36428:88;36535:4;36532:1;36525:15;36559:4;36556:1;36549:15;36576:180;36624:77;36621:1;36614:88;36721:4;36718:1;36711:15;36745:4;36742:1;36735:15;36762:180;36810:77;36807:1;36800:88;36907:4;36904:1;36897:15;36931:4;36928:1;36921:15;36948:117;37057:1;37054;37047:12;37071:117;37180:1;37177;37170:12;37194:117;37303:1;37300;37293:12;37317:117;37426:1;37423;37416:12;37440:102;37481:6;37532:2;37528:7;37523:2;37516:5;37512:14;37508:28;37498:38;;37440:102;;;:::o;37548:243::-;37688:34;37684:1;37676:6;37672:14;37665:58;37757:26;37752:2;37744:6;37740:15;37733:51;37548:243;:::o;37797:230::-;37937:34;37933:1;37925:6;37921:14;37914:58;38006:13;38001:2;37993:6;37989:15;37982:38;37797:230;:::o;38033:237::-;38173:34;38169:1;38161:6;38157:14;38150:58;38242:20;38237:2;38229:6;38225:15;38218:45;38033:237;:::o;38276:225::-;38416:34;38412:1;38404:6;38400:14;38393:58;38485:8;38480:2;38472:6;38468:15;38461:33;38276:225;:::o;38507:178::-;38647:30;38643:1;38635:6;38631:14;38624:54;38507:178;:::o;38691:223::-;38831:34;38827:1;38819:6;38815:14;38808:58;38900:6;38895:2;38887:6;38883:15;38876:31;38691:223;:::o;38920:175::-;39060:27;39056:1;39048:6;39044:14;39037:51;38920:175;:::o;39101:231::-;39241:34;39237:1;39229:6;39225:14;39218:58;39310:14;39305:2;39297:6;39293:15;39286:39;39101:231;:::o;39338:243::-;39478:34;39474:1;39466:6;39462:14;39455:58;39547:26;39542:2;39534:6;39530:15;39523:51;39338:243;:::o;39587:229::-;39727:34;39723:1;39715:6;39711:14;39704:58;39796:12;39791:2;39783:6;39779:15;39772:37;39587:229;:::o;39822:228::-;39962:34;39958:1;39950:6;39946:14;39939:58;40031:11;40026:2;40018:6;40014:15;40007:36;39822:228;:::o;40056:182::-;40196:34;40192:1;40184:6;40180:14;40173:58;40056:182;:::o;40244:249::-;40384:34;40380:1;40372:6;40368:14;40361:58;40453:32;40448:2;40440:6;40436:15;40429:57;40244:249;:::o;40499:231::-;40639:34;40635:1;40627:6;40623:14;40616:58;40708:14;40703:2;40695:6;40691:15;40684:39;40499:231;:::o;40736:182::-;40876:34;40872:1;40864:6;40860:14;40853:58;40736:182;:::o;40924:228::-;41064:34;41060:1;41052:6;41048:14;41041:58;41133:11;41128:2;41120:6;41116:15;41109:36;40924:228;:::o;41158:234::-;41298:34;41294:1;41286:6;41282:14;41275:58;41367:17;41362:2;41354:6;41350:15;41343:42;41158:234;:::o;41398:291::-;41538:34;41534:1;41526:6;41522:14;41515:58;41607:34;41602:2;41594:6;41590:15;41583:59;41676:5;41671:2;41663:6;41659:15;41652:30;41398:291;:::o;41695:220::-;41835:34;41831:1;41823:6;41819:14;41812:58;41904:3;41899:2;41891:6;41887:15;41880:28;41695:220;:::o;41921:233::-;42061:34;42057:1;42049:6;42045:14;42038:58;42130:16;42125:2;42117:6;42113:15;42106:41;41921:233;:::o;42160:236::-;42300:34;42296:1;42288:6;42284:14;42277:58;42369:19;42364:2;42356:6;42352:15;42345:44;42160:236;:::o;42402:238::-;42542:34;42538:1;42530:6;42526:14;42519:58;42611:21;42606:2;42598:6;42594:15;42587:46;42402:238;:::o;42646:231::-;42786:34;42782:1;42774:6;42770:14;42763:58;42855:14;42850:2;42842:6;42838:15;42831:39;42646:231;:::o;42883:242::-;43023:34;43019:1;43011:6;43007:14;43000:58;43092:25;43087:2;43079:6;43075:15;43068:50;42883:242;:::o;43131:232::-;43271:34;43267:1;43259:6;43255:14;43248:58;43340:15;43335:2;43327:6;43323:15;43316:40;43131:232;:::o;43369:122::-;43442:24;43460:5;43442:24;:::i;:::-;43435:5;43432:35;43422:63;;43481:1;43478;43471:12;43422:63;43369:122;:::o;43497:116::-;43567:21;43582:5;43567:21;:::i;:::-;43560:5;43557:32;43547:60;;43603:1;43600;43593:12;43547:60;43497:116;:::o;43619:120::-;43691:23;43708:5;43691:23;:::i;:::-;43684:5;43681:34;43671:62;;43729:1;43726;43719:12;43671:62;43619:120;:::o;43745:122::-;43818:24;43836:5;43818:24;:::i;:::-;43811:5;43808:35;43798:63;;43857:1;43854;43847:12;43798:63;43745:122;:::o

Swarm Source

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