ETH Price: $3,174.12 (-8.28%)
Gas: 3 Gwei

Token

MyLand Metaverse Genesis (MLMG)
 

Overview

Max Total Supply

488 MLMG

Holders

214

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
yous1902.eth
Balance
3 MLMG
0x62C989Bdaaedc2078f3Ed396A26A323cBCf1a57c
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:
MyLandContract

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-08
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;
    uint256 private _status;
    constructor() {
        _status = _NOT_ENTERED;
    }
    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        _status = _ENTERED;
        _;
        _status = _NOT_ENTERED;
    }
}
library MerkleProof {
    function verify(bytes32[] memory proof, bytes32 root, bytes32 leaf) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }
    function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            bytes32 proofElement = proof[i];
            if (computedHash <= proofElement) {
                computedHash = _efficientHash(computedHash, proofElement);
            } else {
                computedHash = _efficientHash(proofElement, computedHash);
            }
        }
        return computedHash;
    }
    function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) {
        assembly {
            mstore(0x00, a)
            mstore(0x20, b)
            value := keccak256(0x00, 0x40)
        }
    }
}
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);
        }
    }
    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;
        }
    }
}
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
    function toString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
abstract contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred( address indexed previousOwner, address indexed newOwner);
    constructor() {
        _transferOwnership(_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 {
        _transferOwnership(address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
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);
            }
        }
    }
}
interface IERC721Receiver {
    function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);
}
interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
abstract contract ERC165 is IERC165 {
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}
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;
}
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);
}
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);
}
contract ERC721A is Context, ERC165, IERC721, IERC721Metadata, IERC721Enumerable {
    using Address for address;
    using Strings for uint256;
    struct TokenOwnership {
        address addr;
        uint64 startTimestamp;
    }
    struct AddressData {
        uint128 balance; uint128 numberMinted;
    }
    uint256 private currentIndex = 1;
    uint256 internal immutable collectionSize;
    uint256 internal immutable maxBatchSize;
    string private _name;
    string private _symbol;
    mapping(uint256 => TokenOwnership) private _ownerships;
    mapping(address => AddressData) private _addressData;
    mapping(uint256 => address) private _tokenApprovals;
    mapping(address => mapping(address => bool)) private _operatorApprovals;
    constructor( string memory name_, string memory symbol_, uint256 maxBatchSize_, uint256 collectionSize_) {
        require(collectionSize_ > 0, "ERC721A: collection must have a nonzero supply");
        require(maxBatchSize_ > 0, "ERC721A: max batch size must be nonzero");
        _name = name_;
        _symbol = symbol_;
        maxBatchSize = maxBatchSize_;
        collectionSize = collectionSize_;
    }
    function totalSupply() public view override returns (uint256) {
        return currentIndex - 1;
    }
    function tokenByIndex(uint256 index) public view override returns (uint256) {
        require(index < totalSupply(), "ERC721A: global index out of bounds");
        return index;
    }
    function tokenOfOwnerByIndex(address owner, uint256 index) public view override returns (uint256) {
        require(index < balanceOf(owner), "ERC721A: owner index out of bounds");
        uint256 numMintedSoFar = totalSupply();
        uint256 tokenIdsIdx = 0;
        address currOwnershipAddr = address(0);
        for (uint256 i = 0; i < numMintedSoFar; i++) {
            TokenOwnership memory ownership = _ownerships[i];
            if (ownership.addr != address(0)) {
                currOwnershipAddr = ownership.addr;
            }
            if (currOwnershipAddr == owner) {
                if (tokenIdsIdx == index) {
                    return i;
                }
                tokenIdsIdx++;
            }
        }
        revert("ERC721A: unable to get token of owner by index");
    }
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId);
    }
    function balanceOf(address owner) public view override returns (uint256) {
        require(owner != address(0), "ERC721A: balance query for the zero address");
        return uint256(_addressData[owner].balance);
    }
    function _numberMinted(address owner) internal view returns (uint256) {
        require(owner != address(0), "ERC721A: number minted query for the zero address");
        return uint256(_addressData[owner].numberMinted);
    }
    function ownershipOf(uint256 tokenId) internal view returns (TokenOwnership memory) {
        require(_exists(tokenId), "ERC721A: owner query for nonexistent token");
        uint256 lowestTokenToCheck;
        if (tokenId >= maxBatchSize) {
            lowestTokenToCheck = tokenId - maxBatchSize + 1;
        }
        for (uint256 curr = tokenId; curr >= lowestTokenToCheck; curr--) {
            TokenOwnership memory ownership = _ownerships[curr];
            if (ownership.addr != address(0)) {
                return ownership;
            }
        }
        revert("ERC721A: unable to determine the owner of token");
    }
    function ownerOf(uint256 tokenId) public view override returns (address) {
        return ownershipOf(tokenId).addr;
    }
    function name() public view virtual override returns (string memory) {
        return _name;
    }
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");
        string memory baseURI = _baseURI();
        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString(), _getUriExtension())) : "";
    }
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }
    function _getUriExtension() internal view virtual returns (string memory) {
        return "";
    }
    function approve(address to, uint256 tokenId) public override {
        address owner = ERC721A.ownerOf(tokenId);
        require(to != owner, "ERC721A: approval to current owner");
        require(_msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721A: approve caller is not owner nor approved for all");
        _approve(to, tokenId, owner);
    }
    function getApproved(uint256 tokenId) public view override returns (address) {
        require(_exists(tokenId), "ERC721A: approved query for nonexistent token");
        return _tokenApprovals[tokenId];
    }
    function setApprovalForAll(address operator, bool approved) public override {
        require(operator != _msgSender(), "ERC721A: approve to caller");
        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }
    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool){
        return _operatorApprovals[owner][operator];
    }
    function transferFrom(address from, address to, uint256 tokenId) public override {
        _transfer(from, to, tokenId);
    }
    function safeTransferFrom(address from, address to, uint256 tokenId) public override {
        safeTransferFrom(from, to, tokenId, "");
    }
    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public override {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721A: transfer to non ERC721Receiver implementer");
    }
    function _exists(uint256 tokenId) internal view returns (bool) {
        return tokenId < currentIndex;
    }
    function _safeMint(address to, uint256 quantity) internal {
        _safeMint(to, quantity, "");
    }
    function _safeMint( address to, uint256 quantity, bytes memory _data) internal {
        uint256 startTokenId = currentIndex;
        require(to != address(0), "ERC721A: mint to the zero address");
        require(!_exists(startTokenId), "ERC721A: token already minted");
        require(quantity <= maxBatchSize, "ERC721A: quantity to mint too high");
        _beforeTokenTransfers(address(0), to, startTokenId, quantity);
        AddressData memory addressData = _addressData[to];
        _addressData[to] = AddressData(addressData.balance + uint128(quantity), addressData.numberMinted + uint128(quantity)
        );
        _ownerships[startTokenId] = TokenOwnership(to, uint64(block.timestamp));
        uint256 updatedIndex = startTokenId;
        for (uint256 i = 0; i < quantity; i++) {
            emit Transfer(address(0), to, updatedIndex);
            require(_checkOnERC721Received(address(0), to, updatedIndex, _data), "ERC721A: transfer to non ERC721Receiver implementer");
            updatedIndex++;
        }
        currentIndex = updatedIndex;
        _afterTokenTransfers(address(0), to, startTokenId, quantity);
    }
    function _transfer(address from, address to, uint256 tokenId) private {
        TokenOwnership memory prevOwnership = ownershipOf(tokenId);
        bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr || getApproved(tokenId) == _msgSender() || isApprovedForAll(prevOwnership.addr, _msgSender())); 
        require(isApprovedOrOwner, "ERC721A: transfer caller is not owner nor approved");
        require( prevOwnership.addr == from, "ERC721A: transfer from incorrect owner");
        require(to != address(0), "ERC721A: transfer to the zero address");
        _beforeTokenTransfers(from, to, tokenId, 1);
        _approve(address(0), tokenId, prevOwnership.addr);
        _addressData[from].balance -= 1;
        _addressData[to].balance += 1;
        _ownerships[tokenId] = TokenOwnership(to, uint64(block.timestamp));
        uint256 nextTokenId = tokenId + 1;
        if (_ownerships[nextTokenId].addr == address(0)) {
            if (_exists(nextTokenId)) {
                _ownerships[nextTokenId] = TokenOwnership(
                    prevOwnership.addr,
                    prevOwnership.startTimestamp
                );
            }
        }
        emit Transfer(from, to, tokenId);
        _afterTokenTransfers(from, to, tokenId, 1);
    }
    function _approve(address to, uint256 tokenId, address owner) private {
        _tokenApprovals[tokenId] = to;
        emit Approval(owner, to, tokenId);
    }
    uint256 public nextOwnerToExplicitlySet = 0;
    function _setOwnersExplicit(uint256 quantity) internal {
        uint256 oldNextOwnerToSet = nextOwnerToExplicitlySet;
        require(quantity > 0, "quantity must be nonzero");
        uint256 endIndex = oldNextOwnerToSet + quantity - 1;
        if (endIndex > collectionSize - 1) {
            endIndex = collectionSize - 1;
        }
        require(_exists(endIndex), "not enough minted yet for this cleanup");
        for (uint256 i = oldNextOwnerToSet; i <= endIndex; i++) {
            if (_ownerships[i].addr == address(0)) {
                TokenOwnership memory ownership = ownershipOf(i);
                _ownerships[i] = TokenOwnership(
                    ownership.addr,
                    ownership.startTimestamp
                );
            }
        }
        nextOwnerToExplicitlySet = endIndex + 1;
    }
    function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data) private returns (bool) {
        if (to.isContract()) {
            try
                IERC721Receiver(to).onERC721Received(
                    _msgSender(),
                    from,
                    tokenId,
                    _data
                )
            returns (bytes4 retval) {
                return retval == IERC721Receiver(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert(
                        "ERC721A: transfer to non ERC721Receiver implementer"
                    );
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }
    function _beforeTokenTransfers(address from, address to, uint256 startTokenId, uint256 quantity) internal virtual {}
    function _afterTokenTransfers(address from, address to, uint256 startTokenId, uint256 quantity) internal virtual {}
}
contract MyLandContract is Ownable, ERC721A, ReentrancyGuard {
    using Strings for uint256;
    using SafeMath for uint256;
    bytes32 public merkleRoot = 0x0c3a9607f55354837e7e90f3bfed916c9b5095cb58ed4770dab1bf98a8aead15;
    uint16 public maxPerTransaction = 50; 
    uint16 public maxPerWallet = 70;
    uint256 public price = 0.000000000000000001 ether; 
    uint16 private constant totalCollectionSize = 9920;
    bool public isPaused = false;
    bool public isRevealed = false;
    bool public isOnlyWhitelisted = true;
    string private baseTokenURI;
    string public hiddenMetadataUri;
    mapping(address=>bool) public whitelistClaimed;

    constructor() ERC721A("MyLand Metaverse Genesis", "MLMG", 50, totalCollectionSize) { 
        setBaseURI("ipfs://QmdRyhdx1q1DY6i6RcfnkLWuB6RFJcVA9gtEs2rWTBJ1Pi/");
        setHiddenMetadataUri("ipfs://QmdRyhdx1q1DY6i6RcfnkLWuB6RFJcVA9gtEs2rWTBJ1Pi/hidden.json");   
    }
    modifier mintCompliance(uint16 quantity) {
        require(totalSupply() + quantity <= totalCollectionSize, "reached max supply");
        require(quantity <= maxPerTransaction, "can not mint this many");
        require((numberMinted(msg.sender) + quantity <= maxPerWallet),"Quantity exceeds allowed Mints");
        if (totalSupply() == 3654 || totalSupply() == 6111) {
            isPaused = true;
        }
        _;
    }
    function supportsInterface(bytes4 interfaceId) public view override(ERC721A) returns (bool) {
        return interfaceId == 0x2a55205a || super.supportsInterface(interfaceId);
    }
    function mint(uint16 quantity) public mintCompliance(quantity) payable {
        require(!isPaused, "mint is paused");
        require(!isOnlyWhitelisted, "mint only for whitelisted");
        require(msg.value >= price * quantity, "insufficient funds");
       
        _safeMint(msg.sender, quantity);
    }
    function mintForAddress(uint16 quantity, address receiver) public mintCompliance(quantity) onlyOwner {
        _safeMint(receiver, quantity);
    }
    function whitelistMint(uint16 quantity, bytes32[] calldata _merkleProof) mintCompliance(quantity) public payable{  
        require(isOnlyWhitelisted, "Whitelist mint is closed");
        require(!whitelistClaimed[msg.sender], "Address already claimed");
        bytes32 leaf = keccak256(abi.encodePacked(msg.sender));
        require(MerkleProof.verify(_merkleProof, merkleRoot, leaf), "Wallet not whitelisted");
        require(msg.value >= price * quantity, "insufficient funds");
       
        _safeMint(msg.sender, quantity);
    }
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");
        if (isRevealed == false) {
            return hiddenMetadataUri;
         }
        string memory baseURI = _baseURI();
        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString(), ".json")) : ""; 
    }
    function setBaseURI(string memory baseURI) public onlyOwner {
        baseTokenURI = baseURI;
    }
    function _baseURI() internal view virtual override returns (string memory) {
        return baseTokenURI;
    }
    function numberMinted(address owner) public view returns (uint256) {
        return _numberMinted(owner);
    }
    function getOwnershipData(uint256 tokenId) external view returns (TokenOwnership memory) {
        return ownershipOf(tokenId);
    }
    function setPrice(uint256 _newPrice) public onlyOwner {
        price = _newPrice;
    }
    function setMaxPerTransaction(uint16 q) public onlyOwner {
        maxPerTransaction = q;
    }
    function setMaxPerWallet(uint16 q) public onlyOwner {
        maxPerWallet = q;
    }
    function isPause(bool _state) public onlyOwner {
        isPaused = _state;
    }
    function giveaway(address a, uint256 q) public onlyOwner {
        _safeMint(a, q);
    }
    function setHiddenMetadataUri(string memory _hiddenMetadataUri) public onlyOwner {
        hiddenMetadataUri = _hiddenMetadataUri;
    }
    function setIsRevealed(bool _state) public onlyOwner {
        isRevealed = _state;
    }
    function setIsOnlyWhitelisted(bool _state) public onlyOwner {
        isOnlyWhitelisted = _state;
    }
    function setMerkleRoot(bytes32 _merkleRoot) public onlyOwner {
        merkleRoot = _merkleRoot;
    }
    function withdraw() public onlyOwner nonReentrant {

        (bool me, ) = payable(0x98D914cb41faD42080aAB1a470256759E59F05E8).call{value: address(this).balance * 4 / 100}("");
        require(me);

        uint256 totalValue = address(this).balance;

        (bool l, ) = payable(0xB7D2Ed9feC57439a93D10cD18d0598C5dF5c3FcB).call{value: totalValue * 645 / 1000}("");
        require(l);

        (bool m, ) = payable(0x1AcfC3D1CdcBf4e84E015db1C90083e1Fb68a070).call{value: totalValue * 125 / 1000}("");
        require(m);

        (bool f, ) = payable(0xDf1CfAfD5330455Df528156eF9014f5485476453).call{value: totalValue * 10 / 100}("");
        require(f);

        (bool j, ) = payable(0xBA9aa44f6303ec415437CdBE2DE952287E8973Be).call{value: totalValue * 5 / 100}("");
        require(j);

        (bool t, ) = payable(0xf40DfE9e179437E8437D53cd21b04f237D1adf7A).call{value: totalValue * 3 / 100}("");
        require(t);

        (bool d, ) = payable(0x5bBBBed03E7b05ECD43eb2f8079aAB51662604f1).call{value: totalValue * 5 / 100}("");
        require(d);

        (bool os, ) = payable(owner()).call{value: address(this).balance}("");
        require(os);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getOwnershipData","outputs":[{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"}],"internalType":"struct ERC721A.TokenOwnership","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"},{"internalType":"uint256","name":"q","type":"uint256"}],"name":"giveaway","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"hiddenMetadataUri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOnlyWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"isPause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isRevealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerTransaction","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerWallet","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"quantity","type":"uint16"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint16","name":"quantity","type":"uint16"},{"internalType":"address","name":"receiver","type":"address"}],"name":"mintForAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextOwnerToExplicitlySet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"numberMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_hiddenMetadataUri","type":"string"}],"name":"setHiddenMetadataUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setIsOnlyWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setIsRevealed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"q","type":"uint16"}],"name":"setMaxPerTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"q","type":"uint16"}],"name":"setMaxPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"quantity","type":"uint16"},{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"}],"name":"whitelistMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c0604052600180805560006008557f0c3a9607f55354837e7e90f3bfed916c9b5095cb58ed4770dab1bf98a8aead15600a55600b80546246003263ffffffff19909116179055600c55600d805462ffffff1916620100001790553480156200006757600080fd5b50604080518082018252601881527f4d794c616e64204d65746176657273652047656e657369730000000000000000602080830191909152825180840190935260048352634d4c4d4760e01b908301529060326126c0620000c83362000222565b60008111620001355760405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20636f6c6c656374696f6e206d757374206861766520612060448201526d6e6f6e7a65726f20737570706c7960901b60648201526084015b60405180910390fd5b60008211620001975760405162461bcd60e51b815260206004820152602760248201527f455243373231413a206d61782062617463682073697a65206d757374206265206044820152666e6f6e7a65726f60c81b60648201526084016200012c565b8351620001ac90600290602087019062000331565b508251620001c290600390602086019062000331565b5060a0919091526080525050600160095560408051606081019091526036808252620001f8919062003698602083013962000272565b6200021c604051806080016040528060418152602001620036ee60419139620002d6565b62000414565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314620002bd5760405162461bcd60e51b81526020600482018190526024820152600080516020620036ce83398151915260448201526064016200012c565b8051620002d290600e90602084019062000331565b5050565b6000546001600160a01b03163314620003215760405162461bcd60e51b81526020600482018190526024820152600080516020620036ce83398151915260448201526064016200012c565b8051620002d290600f9060208401905b8280546200033f90620003d7565b90600052602060002090601f016020900481019282620003635760008555620003ae565b82601f106200037e57805160ff1916838001178555620003ae565b82800160010185558215620003ae579182015b82811115620003ae57825182559160200191906001019062000391565b50620003bc929150620003c0565b5090565b5b80821115620003bc5760008155600101620003c1565b600181811c90821680620003ec57607f821691505b602082108114156200040e57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05161325362000445600039600081816122cf015281816122f901526127d30152600050506132536000f3fe6080604052600436106102725760003560e01c806370a082311161014f578063a45ba8e7116100c1578063d7224ba01161007a578063d7224ba014610765578063db4bec441461077b578063dc33e681146107ab578063e54b57dd146107cb578063e985e9c5146107eb578063f2fde38b1461083457600080fd5b8063a45ba8e7146106c3578063af23ee33146106d8578063b182e818146106f8578063b187bd261461070b578063b88d4fde14610725578063c87b56dd1461074557600080fd5b80639231ab2a116101135780639231ab2a146105ea578063936196fb1461063857806395d89b41146106585780639c7cbec61461066d578063a035b1fe1461068d578063a22cb465146106a357600080fd5b806370a0823114610557578063715018a6146105775780637cb647591461058c5780638da5cb5b146105ac57806391b7f5ed146105ca57600080fd5b806342842e0e116101e85780634fdd43cb116101ac5780634fdd43cb1461049857806354214f69146104b857806355f804b3146104d75780635bce6713146104f757806362aa5ae4146105175780636352211e1461053757600080fd5b806342842e0e146103e9578063453c23101461040957806349a5980a1461043d5780634b980d671461045d5780634f6ccce71461047857600080fd5b806318160ddd1161023a57806318160ddd1461034857806323b872dd1461036b57806323cf0a221461038b5780632eb4a7ab1461039e5780632f745c59146103b45780633ccfd60b146103d457600080fd5b806301ffc9a714610277578063050225ea146102ac57806306fdde03146102ce578063081812fc146102f0578063095ea7b314610328575b600080fd5b34801561028357600080fd5b50610297610292366004612d37565b610854565b60405190151581526020015b60405180910390f35b3480156102b857600080fd5b506102cc6102c7366004612cd9565b61087f565b005b3480156102da57600080fd5b506102e36108c0565b6040516102a39190612f1f565b3480156102fc57600080fd5b5061031061030b366004612d1e565b610952565b6040516001600160a01b0390911681526020016102a3565b34801561033457600080fd5b506102cc610343366004612cd9565b6109dd565b34801561035457600080fd5b5061035d610af5565b6040519081526020016102a3565b34801561037757600080fd5b506102cc610386366004612bf7565b610b0a565b6102cc610399366004612dba565b610b15565b3480156103aa57600080fd5b5061035d600a5481565b3480156103c057600080fd5b5061035d6103cf366004612cd9565b610cee565b3480156103e057600080fd5b506102cc610e66565b3480156103f557600080fd5b506102cc610404366004612bf7565b6112c7565b34801561041557600080fd5b50600b5461042a9062010000900461ffff1681565b60405161ffff90911681526020016102a3565b34801561044957600080fd5b506102cc610458366004612d03565b6112e2565b34801561046957600080fd5b50600b5461042a9061ffff1681565b34801561048457600080fd5b5061035d610493366004612d1e565b611326565b3480156104a457600080fd5b506102cc6104b3366004612d71565b61138e565b3480156104c457600080fd5b50600d5461029790610100900460ff1681565b3480156104e357600080fd5b506102cc6104f2366004612d71565b6113cb565b34801561050357600080fd5b506102cc610512366004612dd5565b611408565b34801561052357600080fd5b506102cc610532366004612d03565b611518565b34801561054357600080fd5b50610310610552366004612d1e565b611555565b34801561056357600080fd5b5061035d610572366004612ba9565b611567565b34801561058357600080fd5b506102cc6115f8565b34801561059857600080fd5b506102cc6105a7366004612d1e565b61162e565b3480156105b857600080fd5b506000546001600160a01b0316610310565b3480156105d657600080fd5b506102cc6105e5366004612d1e565b61165d565b3480156105f657600080fd5b5061060a610605366004612d1e565b61168c565b6040805182516001600160a01b0316815260209283015167ffffffffffffffff1692810192909252016102a3565b34801561064457600080fd5b506102cc610653366004612dba565b6116a9565b34801561066457600080fd5b506102e36116eb565b34801561067957600080fd5b50600d546102979062010000900460ff1681565b34801561069957600080fd5b5061035d600c5481565b3480156106af57600080fd5b506102cc6106be366004612caf565b6116fa565b3480156106cf57600080fd5b506102e36117bf565b3480156106e457600080fd5b506102cc6106f3366004612dba565b61184d565b6102cc610706366004612df1565b611897565b34801561071757600080fd5b50600d546102979060ff1681565b34801561073157600080fd5b506102cc610740366004612c33565b611b51565b34801561075157600080fd5b506102e3610760366004612d1e565b611b8a565b34801561077157600080fd5b5061035d60085481565b34801561078757600080fd5b50610297610796366004612ba9565b60106020526000908152604090205460ff1681565b3480156107b757600080fd5b5061035d6107c6366004612ba9565b611cf8565b3480156107d757600080fd5b506102cc6107e6366004612d03565b611d03565b3480156107f757600080fd5b50610297610806366004612bc4565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b34801561084057600080fd5b506102cc61084f366004612ba9565b611d49565b600063152a902d60e11b6001600160e01b031983161480610879575061087982611de4565b92915050565b6000546001600160a01b031633146108b25760405162461bcd60e51b81526004016108a990612f95565b60405180910390fd5b6108bc8282611e4f565b5050565b6060600280546108cf90613145565b80601f01602080910402602001604051908101604052809291908181526020018280546108fb90613145565b80156109485780601f1061091d57610100808354040283529160200191610948565b820191906000526020600020905b81548152906001019060200180831161092b57829003601f168201915b5050505050905090565b600061095f826001541190565b6109c15760405162461bcd60e51b815260206004820152602d60248201527f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560448201526c3c34b9ba32b73a103a37b5b2b760991b60648201526084016108a9565b506000908152600660205260409020546001600160a01b031690565b60006109e882611555565b9050806001600160a01b0316836001600160a01b03161415610a575760405162461bcd60e51b815260206004820152602260248201527f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60448201526132b960f11b60648201526084016108a9565b336001600160a01b0382161480610a735750610a738133610806565b610ae55760405162461bcd60e51b815260206004820152603960248201527f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c0000000000000060648201526084016108a9565b610af0838383611e69565b505050565b600060018054610b0591906130eb565b905090565b610af0838383611ec5565b806126c061ffff8216610b26610af5565b610b309190613078565b1115610b4e5760405162461bcd60e51b81526004016108a990612f69565b600b5461ffff9081169082161115610b785760405162461bcd60e51b81526004016108a99061301d565b600b5461ffff620100009091048116908216610b9333611cf8565b610b9d9190613078565b1115610bbb5760405162461bcd60e51b81526004016108a990612f32565b610bc3610af5565b610e461480610bda5750610bd5610af5565b6117df145b15610bed57600d805460ff191660011790555b600d5460ff1615610c315760405162461bcd60e51b815260206004820152600e60248201526d1b5a5b9d081a5cc81c185d5cd95960921b60448201526064016108a9565b600d5462010000900460ff1615610c8a5760405162461bcd60e51b815260206004820152601960248201527f6d696e74206f6e6c7920666f722077686974656c69737465640000000000000060448201526064016108a9565b8161ffff16600c54610c9c91906130a4565b341015610ce05760405162461bcd60e51b8152602060048201526012602482015271696e73756666696369656e742066756e647360701b60448201526064016108a9565b6108bc338361ffff16611e4f565b6000610cf983611567565b8210610d525760405162461bcd60e51b815260206004820152602260248201527f455243373231413a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b60648201526084016108a9565b6000610d5c610af5565b905060008060005b83811015610e06576000818152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215610db757805192505b876001600160a01b0316836001600160a01b03161415610df35786841415610de55750935061087992505050565b83610def81613180565b9450505b5080610dfe81613180565b915050610d64565b5060405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060448201526d0deeedccae440c4f240d2dcc8caf60931b60648201526084016108a9565b6000546001600160a01b03163314610e905760405162461bcd60e51b81526004016108a990612f95565b60026009541415610ee35760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108a9565b600260095560007398d914cb41fad42080aab1a470256759e59f05e86064610f0c4760046130a4565b610f169190613090565b604051600081818185875af1925050503d8060008114610f52576040519150601f19603f3d011682016040523d82523d6000602084013e610f57565b606091505b5050905080610f6557600080fd5b47600073b7d2ed9fec57439a93d10cd18d0598c5df5c3fcb6103e8610f8c846102856130a4565b610f969190613090565b604051600081818185875af1925050503d8060008114610fd2576040519150601f19603f3d011682016040523d82523d6000602084013e610fd7565b606091505b5050905080610fe557600080fd5b6000731acfc3d1cdcbf4e84e015db1c90083e1fb68a0706103e861100a85607d6130a4565b6110149190613090565b604051600081818185875af1925050503d8060008114611050576040519150601f19603f3d011682016040523d82523d6000602084013e611055565b606091505b505090508061106357600080fd5b600073df1cfafd5330455df528156ef9014f5485476453606461108786600a6130a4565b6110919190613090565b604051600081818185875af1925050503d80600081146110cd576040519150601f19603f3d011682016040523d82523d6000602084013e6110d2565b606091505b50509050806110e057600080fd5b600073ba9aa44f6303ec415437cdbe2de952287e8973be60646111048760056130a4565b61110e9190613090565b604051600081818185875af1925050503d806000811461114a576040519150601f19603f3d011682016040523d82523d6000602084013e61114f565b606091505b505090508061115d57600080fd5b600073f40dfe9e179437e8437d53cd21b04f237d1adf7a60646111818860036130a4565b61118b9190613090565b604051600081818185875af1925050503d80600081146111c7576040519150601f19603f3d011682016040523d82523d6000602084013e6111cc565b606091505b50509050806111da57600080fd5b6000735bbbbed03e7b05ecd43eb2f8079aab51662604f160646111fe8960056130a4565b6112089190613090565b604051600081818185875af1925050503d8060008114611244576040519150601f19603f3d011682016040523d82523d6000602084013e611249565b606091505b505090508061125757600080fd5b600080546040516001600160a01b039091169047908381818185875af1925050503d80600081146112a4576040519150601f19603f3d011682016040523d82523d6000602084013e6112a9565b606091505b50509050806112b757600080fd5b5050600160095550505050505050565b610af083838360405180602001604052806000815250611b51565b6000546001600160a01b0316331461130c5760405162461bcd60e51b81526004016108a990612f95565b600d80549115156101000261ff0019909216919091179055565b6000611330610af5565b821061138a5760405162461bcd60e51b815260206004820152602360248201527f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b60648201526084016108a9565b5090565b6000546001600160a01b031633146113b85760405162461bcd60e51b81526004016108a990612f95565b80516108bc90600f906020840190612a65565b6000546001600160a01b031633146113f55760405162461bcd60e51b81526004016108a990612f95565b80516108bc90600e906020840190612a65565b816126c061ffff8216611419610af5565b6114239190613078565b11156114415760405162461bcd60e51b81526004016108a990612f69565b600b5461ffff908116908216111561146b5760405162461bcd60e51b81526004016108a99061301d565b600b5461ffff62010000909104811690821661148633611cf8565b6114909190613078565b11156114ae5760405162461bcd60e51b81526004016108a990612f32565b6114b6610af5565b610e4614806114cd57506114c8610af5565b6117df145b156114e057600d805460ff191660011790555b6000546001600160a01b0316331461150a5760405162461bcd60e51b81526004016108a990612f95565b610af0828461ffff16611e4f565b6000546001600160a01b031633146115425760405162461bcd60e51b81526004016108a990612f95565b600d805460ff1916911515919091179055565b60006115608261224d565b5192915050565b60006001600160a01b0382166115d35760405162461bcd60e51b815260206004820152602b60248201527f455243373231413a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084016108a9565b506001600160a01b03166000908152600560205260409020546001600160801b031690565b6000546001600160a01b031633146116225760405162461bcd60e51b81526004016108a990612f95565b61162c60006123f7565b565b6000546001600160a01b031633146116585760405162461bcd60e51b81526004016108a990612f95565b600a55565b6000546001600160a01b031633146116875760405162461bcd60e51b81526004016108a990612f95565b600c55565b60408051808201909152600080825260208201526108798261224d565b6000546001600160a01b031633146116d35760405162461bcd60e51b81526004016108a990612f95565b600b805461ffff191661ffff92909216919091179055565b6060600380546108cf90613145565b6001600160a01b0382163314156117535760405162461bcd60e51b815260206004820152601a60248201527f455243373231413a20617070726f766520746f2063616c6c657200000000000060448201526064016108a9565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600f80546117cc90613145565b80601f01602080910402602001604051908101604052809291908181526020018280546117f890613145565b80156118455780601f1061181a57610100808354040283529160200191611845565b820191906000526020600020905b81548152906001019060200180831161182857829003601f168201915b505050505081565b6000546001600160a01b031633146118775760405162461bcd60e51b81526004016108a990612f95565b600b805461ffff909216620100000263ffff000019909216919091179055565b826126c061ffff82166118a8610af5565b6118b29190613078565b11156118d05760405162461bcd60e51b81526004016108a990612f69565b600b5461ffff90811690821611156118fa5760405162461bcd60e51b81526004016108a99061301d565b600b5461ffff62010000909104811690821661191533611cf8565b61191f9190613078565b111561193d5760405162461bcd60e51b81526004016108a990612f32565b611945610af5565b610e46148061195c5750611957610af5565b6117df145b1561196f57600d805460ff191660011790555b600d5462010000900460ff166119c75760405162461bcd60e51b815260206004820152601860248201527f57686974656c697374206d696e7420697320636c6f736564000000000000000060448201526064016108a9565b3360009081526010602052604090205460ff1615611a275760405162461bcd60e51b815260206004820152601760248201527f4164647265737320616c726561647920636c61696d656400000000000000000060448201526064016108a9565b6040516bffffffffffffffffffffffff193360601b166020820152600090603401604051602081830303815290604052805190602001209050611aa184848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600a549150849050612447565b611ae65760405162461bcd60e51b815260206004820152601660248201527515d85b1b195d081b9bdd081dda1a5d195b1a5cdd195960521b60448201526064016108a9565b8461ffff16600c54611af891906130a4565b341015611b3c5760405162461bcd60e51b8152602060048201526012602482015271696e73756666696369656e742066756e647360701b60448201526064016108a9565b611b4a338661ffff16611e4f565b5050505050565b611b5c848484611ec5565b611b688484848461245d565b611b845760405162461bcd60e51b81526004016108a990612fca565b50505050565b6060611b97826001541190565b611bfb5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016108a9565b600d54610100900460ff16611c9c57600f8054611c1790613145565b80601f0160208091040260200160405190810160405280929190818152602001828054611c4390613145565b8015611c905780601f10611c6557610100808354040283529160200191611c90565b820191906000526020600020905b815481529060010190602001808311611c7357829003601f168201915b50505050509050919050565b6000611ca661256b565b90506000815111611cc65760405180602001604052806000815250611cf1565b80611cd08461257a565b604051602001611ce1929190612ea3565b6040516020818303038152906040525b9392505050565b600061087982612678565b6000546001600160a01b03163314611d2d5760405162461bcd60e51b81526004016108a990612f95565b600d8054911515620100000262ff000019909216919091179055565b6000546001600160a01b03163314611d735760405162461bcd60e51b81526004016108a990612f95565b6001600160a01b038116611dd85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a9565b611de1816123f7565b50565b60006001600160e01b031982166380ac58cd60e01b1480611e1557506001600160e01b03198216635b5e139f60e01b145b80611e3057506001600160e01b0319821663780e9d6360e01b145b8061087957506301ffc9a760e01b6001600160e01b0319831614610879565b6108bc828260405180602001604052806000815250612716565b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000611ed08261224d565b80519091506000906001600160a01b0316336001600160a01b03161480611f07575033611efc84610952565b6001600160a01b0316145b80611f1957508151611f199033610806565b905080611f835760405162461bcd60e51b815260206004820152603260248201527f455243373231413a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b60648201526084016108a9565b846001600160a01b031682600001516001600160a01b031614611ff75760405162461bcd60e51b815260206004820152602660248201527f455243373231413a207472616e736665722066726f6d20696e636f72726563746044820152651037bbb732b960d11b60648201526084016108a9565b6001600160a01b03841661205b5760405162461bcd60e51b815260206004820152602560248201527f455243373231413a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b60648201526084016108a9565b61206b6000848460000151611e69565b6001600160a01b038516600090815260056020526040812080546001929061209d9084906001600160801b03166130c3565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b038616600090815260056020526040812080546001945090926120e99185911661304d565b82546001600160801b039182166101009390930a9283029190920219909116179055506040805180820182526001600160a01b03808716825267ffffffffffffffff428116602080850191825260008981526004909152948520935184549151909216600160a01b026001600160e01b03199091169190921617179055612171846001613078565b6000818152600460205260409020549091506001600160a01b03166122035761219b816001541190565b156122035760408051808201825284516001600160a01b03908116825260208087015167ffffffffffffffff9081168285019081526000878152600490935294909120925183549451909116600160a01b026001600160e01b03199094169116179190911790555b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b604080518082019091526000808252602082015261226c826001541190565b6122cb5760405162461bcd60e51b815260206004820152602a60248201527f455243373231413a206f776e657220717565727920666f72206e6f6e657869736044820152693a32b73a103a37b5b2b760b11b60648201526084016108a9565b60007f0000000000000000000000000000000000000000000000000000000000000000831061232c5761231e7f0000000000000000000000000000000000000000000000000000000000000000846130eb565b612329906001613078565b90505b825b818110612396576000818152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff16918301919091521561238357949350505050565b508061238e8161312e565b91505061232e565b5060405162461bcd60e51b815260206004820152602f60248201527f455243373231413a20756e61626c6520746f2064657465726d696e652074686560448201526e1037bbb732b91037b3103a37b5b2b760891b60648201526084016108a9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008261245485846129f1565b14949350505050565b60006001600160a01b0384163b1561255f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906124a1903390899088908890600401612ee2565b602060405180830381600087803b1580156124bb57600080fd5b505af19250505080156124eb575060408051601f3d908101601f191682019092526124e891810190612d54565b60015b612545573d808015612519576040519150601f19603f3d011682016040523d82523d6000602084013e61251e565b606091505b50805161253d5760405162461bcd60e51b81526004016108a990612fca565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612563565b5060015b949350505050565b6060600e80546108cf90613145565b60608161259e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156125c857806125b281613180565b91506125c19050600a83613090565b91506125a2565b60008167ffffffffffffffff8111156125e3576125e36131f1565b6040519080825280601f01601f19166020018201604052801561260d576020820181803683370190505b5090505b8415612563576126226001836130eb565b915061262f600a8661319b565b61263a906030613078565b60f81b81838151811061264f5761264f6131db565b60200101906001600160f81b031916908160001a905350612671600a86613090565b9450612611565b60006001600160a01b0382166126ea5760405162461bcd60e51b815260206004820152603160248201527f455243373231413a206e756d626572206d696e74656420717565727920666f7260448201527020746865207a65726f206164647265737360781b60648201526084016108a9565b506001600160a01b0316600090815260056020526040902054600160801b90046001600160801b031690565b6001546001600160a01b0384166127795760405162461bcd60e51b815260206004820152602160248201527f455243373231413a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084016108a9565b612784816001541190565b156127d15760405162461bcd60e51b815260206004820152601d60248201527f455243373231413a20746f6b656e20616c7265616479206d696e74656400000060448201526064016108a9565b7f000000000000000000000000000000000000000000000000000000000000000083111561284c5760405162461bcd60e51b815260206004820152602260248201527f455243373231413a207175616e7469747920746f206d696e7420746f6f2068696044820152610ced60f31b60648201526084016108a9565b6001600160a01b0384166000908152600560209081526040918290208251808401845290546001600160801b038082168352600160801b90910416918101919091528151808301909252805190919081906128a890879061304d565b6001600160801b031681526020018583602001516128c6919061304d565b6001600160801b039081169091526001600160a01b0380881660008181526005602090815260408083208751978301518716600160801b0297909616969096179094558451808601865291825267ffffffffffffffff4281168386019081528883526004909552948120915182549451909516600160a01b026001600160e01b031990941694909216939093179190911790915582905b858110156129e65760405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46129aa600088848861245d565b6129c65760405162461bcd60e51b81526004016108a990612fca565b816129d081613180565b92505080806129de90613180565b91505061295d565b506001819055612245565b600081815b8451811015612a5d576000858281518110612a1357612a136131db565b60200260200101519050808311612a395760008381526020829052604090209250612a4a565b600081815260208490526040902092505b5080612a5581613180565b9150506129f6565b509392505050565b828054612a7190613145565b90600052602060002090601f016020900481019282612a935760008555612ad9565b82601f10612aac57805160ff1916838001178555612ad9565b82800160010185558215612ad9579182015b82811115612ad9578251825591602001919060010190612abe565b5061138a9291505b8082111561138a5760008155600101612ae1565b600067ffffffffffffffff80841115612b1057612b106131f1565b604051601f8501601f19908116603f01168101908282118183101715612b3857612b386131f1565b81604052809350858152868686011115612b5157600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b0381168114612b8257600080fd5b919050565b80358015158114612b8257600080fd5b803561ffff81168114612b8257600080fd5b600060208284031215612bbb57600080fd5b611cf182612b6b565b60008060408385031215612bd757600080fd5b612be083612b6b565b9150612bee60208401612b6b565b90509250929050565b600080600060608486031215612c0c57600080fd5b612c1584612b6b565b9250612c2360208501612b6b565b9150604084013590509250925092565b60008060008060808587031215612c4957600080fd5b612c5285612b6b565b9350612c6060208601612b6b565b925060408501359150606085013567ffffffffffffffff811115612c8357600080fd5b8501601f81018713612c9457600080fd5b612ca387823560208401612af5565b91505092959194509250565b60008060408385031215612cc257600080fd5b612ccb83612b6b565b9150612bee60208401612b87565b60008060408385031215612cec57600080fd5b612cf583612b6b565b946020939093013593505050565b600060208284031215612d1557600080fd5b611cf182612b87565b600060208284031215612d3057600080fd5b5035919050565b600060208284031215612d4957600080fd5b8135611cf181613207565b600060208284031215612d6657600080fd5b8151611cf181613207565b600060208284031215612d8357600080fd5b813567ffffffffffffffff811115612d9a57600080fd5b8201601f81018413612dab57600080fd5b61256384823560208401612af5565b600060208284031215612dcc57600080fd5b611cf182612b97565b60008060408385031215612de857600080fd5b612be083612b97565b600080600060408486031215612e0657600080fd5b612e0f84612b97565b9250602084013567ffffffffffffffff80821115612e2c57600080fd5b818601915086601f830112612e4057600080fd5b813581811115612e4f57600080fd5b8760208260051b8501011115612e6457600080fd5b6020830194508093505050509250925092565b60008151808452612e8f816020860160208601613102565b601f01601f19169290920160200192915050565b60008351612eb5818460208801613102565b835190830190612ec9818360208801613102565b64173539b7b760d91b9101908152600501949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612f1590830184612e77565b9695505050505050565b602081526000611cf16020830184612e77565b6020808252601e908201527f5175616e74697479206578636565647320616c6c6f776564204d696e74730000604082015260600190565b60208082526012908201527172656163686564206d617820737570706c7960701b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526033908201527f455243373231413a207472616e7366657220746f206e6f6e204552433732315260408201527232b1b2b4bb32b91034b6b83632b6b2b73a32b960691b606082015260800190565b60208082526016908201527563616e206e6f74206d696e742074686973206d616e7960501b604082015260600190565b60006001600160801b0380831681851680830382111561306f5761306f6131af565b01949350505050565b6000821982111561308b5761308b6131af565b500190565b60008261309f5761309f6131c5565b500490565b60008160001904831182151516156130be576130be6131af565b500290565b60006001600160801b03838116908316818110156130e3576130e36131af565b039392505050565b6000828210156130fd576130fd6131af565b500390565b60005b8381101561311d578181015183820152602001613105565b83811115611b845750506000910152565b60008161313d5761313d6131af565b506000190190565b600181811c9082168061315957607f821691505b6020821081141561317a57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613194576131946131af565b5060010190565b6000826131aa576131aa6131c5565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114611de157600080fdfea2646970667358221220bd98704492d0c655430fe0b40051a7398da70f27334fe51bc49e84489d7c65b864736f6c63430008070033697066733a2f2f516d64527968647831713144593669365263666e6b4c5775423652464a635641396774457332725754424a3150692f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572697066733a2f2f516d64527968647831713144593669365263666e6b4c5775423652464a635641396774457332725754424a3150692f68696464656e2e6a736f6e

Deployed Bytecode

0x6080604052600436106102725760003560e01c806370a082311161014f578063a45ba8e7116100c1578063d7224ba01161007a578063d7224ba014610765578063db4bec441461077b578063dc33e681146107ab578063e54b57dd146107cb578063e985e9c5146107eb578063f2fde38b1461083457600080fd5b8063a45ba8e7146106c3578063af23ee33146106d8578063b182e818146106f8578063b187bd261461070b578063b88d4fde14610725578063c87b56dd1461074557600080fd5b80639231ab2a116101135780639231ab2a146105ea578063936196fb1461063857806395d89b41146106585780639c7cbec61461066d578063a035b1fe1461068d578063a22cb465146106a357600080fd5b806370a0823114610557578063715018a6146105775780637cb647591461058c5780638da5cb5b146105ac57806391b7f5ed146105ca57600080fd5b806342842e0e116101e85780634fdd43cb116101ac5780634fdd43cb1461049857806354214f69146104b857806355f804b3146104d75780635bce6713146104f757806362aa5ae4146105175780636352211e1461053757600080fd5b806342842e0e146103e9578063453c23101461040957806349a5980a1461043d5780634b980d671461045d5780634f6ccce71461047857600080fd5b806318160ddd1161023a57806318160ddd1461034857806323b872dd1461036b57806323cf0a221461038b5780632eb4a7ab1461039e5780632f745c59146103b45780633ccfd60b146103d457600080fd5b806301ffc9a714610277578063050225ea146102ac57806306fdde03146102ce578063081812fc146102f0578063095ea7b314610328575b600080fd5b34801561028357600080fd5b50610297610292366004612d37565b610854565b60405190151581526020015b60405180910390f35b3480156102b857600080fd5b506102cc6102c7366004612cd9565b61087f565b005b3480156102da57600080fd5b506102e36108c0565b6040516102a39190612f1f565b3480156102fc57600080fd5b5061031061030b366004612d1e565b610952565b6040516001600160a01b0390911681526020016102a3565b34801561033457600080fd5b506102cc610343366004612cd9565b6109dd565b34801561035457600080fd5b5061035d610af5565b6040519081526020016102a3565b34801561037757600080fd5b506102cc610386366004612bf7565b610b0a565b6102cc610399366004612dba565b610b15565b3480156103aa57600080fd5b5061035d600a5481565b3480156103c057600080fd5b5061035d6103cf366004612cd9565b610cee565b3480156103e057600080fd5b506102cc610e66565b3480156103f557600080fd5b506102cc610404366004612bf7565b6112c7565b34801561041557600080fd5b50600b5461042a9062010000900461ffff1681565b60405161ffff90911681526020016102a3565b34801561044957600080fd5b506102cc610458366004612d03565b6112e2565b34801561046957600080fd5b50600b5461042a9061ffff1681565b34801561048457600080fd5b5061035d610493366004612d1e565b611326565b3480156104a457600080fd5b506102cc6104b3366004612d71565b61138e565b3480156104c457600080fd5b50600d5461029790610100900460ff1681565b3480156104e357600080fd5b506102cc6104f2366004612d71565b6113cb565b34801561050357600080fd5b506102cc610512366004612dd5565b611408565b34801561052357600080fd5b506102cc610532366004612d03565b611518565b34801561054357600080fd5b50610310610552366004612d1e565b611555565b34801561056357600080fd5b5061035d610572366004612ba9565b611567565b34801561058357600080fd5b506102cc6115f8565b34801561059857600080fd5b506102cc6105a7366004612d1e565b61162e565b3480156105b857600080fd5b506000546001600160a01b0316610310565b3480156105d657600080fd5b506102cc6105e5366004612d1e565b61165d565b3480156105f657600080fd5b5061060a610605366004612d1e565b61168c565b6040805182516001600160a01b0316815260209283015167ffffffffffffffff1692810192909252016102a3565b34801561064457600080fd5b506102cc610653366004612dba565b6116a9565b34801561066457600080fd5b506102e36116eb565b34801561067957600080fd5b50600d546102979062010000900460ff1681565b34801561069957600080fd5b5061035d600c5481565b3480156106af57600080fd5b506102cc6106be366004612caf565b6116fa565b3480156106cf57600080fd5b506102e36117bf565b3480156106e457600080fd5b506102cc6106f3366004612dba565b61184d565b6102cc610706366004612df1565b611897565b34801561071757600080fd5b50600d546102979060ff1681565b34801561073157600080fd5b506102cc610740366004612c33565b611b51565b34801561075157600080fd5b506102e3610760366004612d1e565b611b8a565b34801561077157600080fd5b5061035d60085481565b34801561078757600080fd5b50610297610796366004612ba9565b60106020526000908152604090205460ff1681565b3480156107b757600080fd5b5061035d6107c6366004612ba9565b611cf8565b3480156107d757600080fd5b506102cc6107e6366004612d03565b611d03565b3480156107f757600080fd5b50610297610806366004612bc4565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b34801561084057600080fd5b506102cc61084f366004612ba9565b611d49565b600063152a902d60e11b6001600160e01b031983161480610879575061087982611de4565b92915050565b6000546001600160a01b031633146108b25760405162461bcd60e51b81526004016108a990612f95565b60405180910390fd5b6108bc8282611e4f565b5050565b6060600280546108cf90613145565b80601f01602080910402602001604051908101604052809291908181526020018280546108fb90613145565b80156109485780601f1061091d57610100808354040283529160200191610948565b820191906000526020600020905b81548152906001019060200180831161092b57829003601f168201915b5050505050905090565b600061095f826001541190565b6109c15760405162461bcd60e51b815260206004820152602d60248201527f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560448201526c3c34b9ba32b73a103a37b5b2b760991b60648201526084016108a9565b506000908152600660205260409020546001600160a01b031690565b60006109e882611555565b9050806001600160a01b0316836001600160a01b03161415610a575760405162461bcd60e51b815260206004820152602260248201527f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60448201526132b960f11b60648201526084016108a9565b336001600160a01b0382161480610a735750610a738133610806565b610ae55760405162461bcd60e51b815260206004820152603960248201527f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c0000000000000060648201526084016108a9565b610af0838383611e69565b505050565b600060018054610b0591906130eb565b905090565b610af0838383611ec5565b806126c061ffff8216610b26610af5565b610b309190613078565b1115610b4e5760405162461bcd60e51b81526004016108a990612f69565b600b5461ffff9081169082161115610b785760405162461bcd60e51b81526004016108a99061301d565b600b5461ffff620100009091048116908216610b9333611cf8565b610b9d9190613078565b1115610bbb5760405162461bcd60e51b81526004016108a990612f32565b610bc3610af5565b610e461480610bda5750610bd5610af5565b6117df145b15610bed57600d805460ff191660011790555b600d5460ff1615610c315760405162461bcd60e51b815260206004820152600e60248201526d1b5a5b9d081a5cc81c185d5cd95960921b60448201526064016108a9565b600d5462010000900460ff1615610c8a5760405162461bcd60e51b815260206004820152601960248201527f6d696e74206f6e6c7920666f722077686974656c69737465640000000000000060448201526064016108a9565b8161ffff16600c54610c9c91906130a4565b341015610ce05760405162461bcd60e51b8152602060048201526012602482015271696e73756666696369656e742066756e647360701b60448201526064016108a9565b6108bc338361ffff16611e4f565b6000610cf983611567565b8210610d525760405162461bcd60e51b815260206004820152602260248201527f455243373231413a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b60648201526084016108a9565b6000610d5c610af5565b905060008060005b83811015610e06576000818152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215610db757805192505b876001600160a01b0316836001600160a01b03161415610df35786841415610de55750935061087992505050565b83610def81613180565b9450505b5080610dfe81613180565b915050610d64565b5060405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060448201526d0deeedccae440c4f240d2dcc8caf60931b60648201526084016108a9565b6000546001600160a01b03163314610e905760405162461bcd60e51b81526004016108a990612f95565b60026009541415610ee35760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108a9565b600260095560007398d914cb41fad42080aab1a470256759e59f05e86064610f0c4760046130a4565b610f169190613090565b604051600081818185875af1925050503d8060008114610f52576040519150601f19603f3d011682016040523d82523d6000602084013e610f57565b606091505b5050905080610f6557600080fd5b47600073b7d2ed9fec57439a93d10cd18d0598c5df5c3fcb6103e8610f8c846102856130a4565b610f969190613090565b604051600081818185875af1925050503d8060008114610fd2576040519150601f19603f3d011682016040523d82523d6000602084013e610fd7565b606091505b5050905080610fe557600080fd5b6000731acfc3d1cdcbf4e84e015db1c90083e1fb68a0706103e861100a85607d6130a4565b6110149190613090565b604051600081818185875af1925050503d8060008114611050576040519150601f19603f3d011682016040523d82523d6000602084013e611055565b606091505b505090508061106357600080fd5b600073df1cfafd5330455df528156ef9014f5485476453606461108786600a6130a4565b6110919190613090565b604051600081818185875af1925050503d80600081146110cd576040519150601f19603f3d011682016040523d82523d6000602084013e6110d2565b606091505b50509050806110e057600080fd5b600073ba9aa44f6303ec415437cdbe2de952287e8973be60646111048760056130a4565b61110e9190613090565b604051600081818185875af1925050503d806000811461114a576040519150601f19603f3d011682016040523d82523d6000602084013e61114f565b606091505b505090508061115d57600080fd5b600073f40dfe9e179437e8437d53cd21b04f237d1adf7a60646111818860036130a4565b61118b9190613090565b604051600081818185875af1925050503d80600081146111c7576040519150601f19603f3d011682016040523d82523d6000602084013e6111cc565b606091505b50509050806111da57600080fd5b6000735bbbbed03e7b05ecd43eb2f8079aab51662604f160646111fe8960056130a4565b6112089190613090565b604051600081818185875af1925050503d8060008114611244576040519150601f19603f3d011682016040523d82523d6000602084013e611249565b606091505b505090508061125757600080fd5b600080546040516001600160a01b039091169047908381818185875af1925050503d80600081146112a4576040519150601f19603f3d011682016040523d82523d6000602084013e6112a9565b606091505b50509050806112b757600080fd5b5050600160095550505050505050565b610af083838360405180602001604052806000815250611b51565b6000546001600160a01b0316331461130c5760405162461bcd60e51b81526004016108a990612f95565b600d80549115156101000261ff0019909216919091179055565b6000611330610af5565b821061138a5760405162461bcd60e51b815260206004820152602360248201527f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b60648201526084016108a9565b5090565b6000546001600160a01b031633146113b85760405162461bcd60e51b81526004016108a990612f95565b80516108bc90600f906020840190612a65565b6000546001600160a01b031633146113f55760405162461bcd60e51b81526004016108a990612f95565b80516108bc90600e906020840190612a65565b816126c061ffff8216611419610af5565b6114239190613078565b11156114415760405162461bcd60e51b81526004016108a990612f69565b600b5461ffff908116908216111561146b5760405162461bcd60e51b81526004016108a99061301d565b600b5461ffff62010000909104811690821661148633611cf8565b6114909190613078565b11156114ae5760405162461bcd60e51b81526004016108a990612f32565b6114b6610af5565b610e4614806114cd57506114c8610af5565b6117df145b156114e057600d805460ff191660011790555b6000546001600160a01b0316331461150a5760405162461bcd60e51b81526004016108a990612f95565b610af0828461ffff16611e4f565b6000546001600160a01b031633146115425760405162461bcd60e51b81526004016108a990612f95565b600d805460ff1916911515919091179055565b60006115608261224d565b5192915050565b60006001600160a01b0382166115d35760405162461bcd60e51b815260206004820152602b60248201527f455243373231413a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084016108a9565b506001600160a01b03166000908152600560205260409020546001600160801b031690565b6000546001600160a01b031633146116225760405162461bcd60e51b81526004016108a990612f95565b61162c60006123f7565b565b6000546001600160a01b031633146116585760405162461bcd60e51b81526004016108a990612f95565b600a55565b6000546001600160a01b031633146116875760405162461bcd60e51b81526004016108a990612f95565b600c55565b60408051808201909152600080825260208201526108798261224d565b6000546001600160a01b031633146116d35760405162461bcd60e51b81526004016108a990612f95565b600b805461ffff191661ffff92909216919091179055565b6060600380546108cf90613145565b6001600160a01b0382163314156117535760405162461bcd60e51b815260206004820152601a60248201527f455243373231413a20617070726f766520746f2063616c6c657200000000000060448201526064016108a9565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600f80546117cc90613145565b80601f01602080910402602001604051908101604052809291908181526020018280546117f890613145565b80156118455780601f1061181a57610100808354040283529160200191611845565b820191906000526020600020905b81548152906001019060200180831161182857829003601f168201915b505050505081565b6000546001600160a01b031633146118775760405162461bcd60e51b81526004016108a990612f95565b600b805461ffff909216620100000263ffff000019909216919091179055565b826126c061ffff82166118a8610af5565b6118b29190613078565b11156118d05760405162461bcd60e51b81526004016108a990612f69565b600b5461ffff90811690821611156118fa5760405162461bcd60e51b81526004016108a99061301d565b600b5461ffff62010000909104811690821661191533611cf8565b61191f9190613078565b111561193d5760405162461bcd60e51b81526004016108a990612f32565b611945610af5565b610e46148061195c5750611957610af5565b6117df145b1561196f57600d805460ff191660011790555b600d5462010000900460ff166119c75760405162461bcd60e51b815260206004820152601860248201527f57686974656c697374206d696e7420697320636c6f736564000000000000000060448201526064016108a9565b3360009081526010602052604090205460ff1615611a275760405162461bcd60e51b815260206004820152601760248201527f4164647265737320616c726561647920636c61696d656400000000000000000060448201526064016108a9565b6040516bffffffffffffffffffffffff193360601b166020820152600090603401604051602081830303815290604052805190602001209050611aa184848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600a549150849050612447565b611ae65760405162461bcd60e51b815260206004820152601660248201527515d85b1b195d081b9bdd081dda1a5d195b1a5cdd195960521b60448201526064016108a9565b8461ffff16600c54611af891906130a4565b341015611b3c5760405162461bcd60e51b8152602060048201526012602482015271696e73756666696369656e742066756e647360701b60448201526064016108a9565b611b4a338661ffff16611e4f565b5050505050565b611b5c848484611ec5565b611b688484848461245d565b611b845760405162461bcd60e51b81526004016108a990612fca565b50505050565b6060611b97826001541190565b611bfb5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016108a9565b600d54610100900460ff16611c9c57600f8054611c1790613145565b80601f0160208091040260200160405190810160405280929190818152602001828054611c4390613145565b8015611c905780601f10611c6557610100808354040283529160200191611c90565b820191906000526020600020905b815481529060010190602001808311611c7357829003601f168201915b50505050509050919050565b6000611ca661256b565b90506000815111611cc65760405180602001604052806000815250611cf1565b80611cd08461257a565b604051602001611ce1929190612ea3565b6040516020818303038152906040525b9392505050565b600061087982612678565b6000546001600160a01b03163314611d2d5760405162461bcd60e51b81526004016108a990612f95565b600d8054911515620100000262ff000019909216919091179055565b6000546001600160a01b03163314611d735760405162461bcd60e51b81526004016108a990612f95565b6001600160a01b038116611dd85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a9565b611de1816123f7565b50565b60006001600160e01b031982166380ac58cd60e01b1480611e1557506001600160e01b03198216635b5e139f60e01b145b80611e3057506001600160e01b0319821663780e9d6360e01b145b8061087957506301ffc9a760e01b6001600160e01b0319831614610879565b6108bc828260405180602001604052806000815250612716565b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000611ed08261224d565b80519091506000906001600160a01b0316336001600160a01b03161480611f07575033611efc84610952565b6001600160a01b0316145b80611f1957508151611f199033610806565b905080611f835760405162461bcd60e51b815260206004820152603260248201527f455243373231413a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b60648201526084016108a9565b846001600160a01b031682600001516001600160a01b031614611ff75760405162461bcd60e51b815260206004820152602660248201527f455243373231413a207472616e736665722066726f6d20696e636f72726563746044820152651037bbb732b960d11b60648201526084016108a9565b6001600160a01b03841661205b5760405162461bcd60e51b815260206004820152602560248201527f455243373231413a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b60648201526084016108a9565b61206b6000848460000151611e69565b6001600160a01b038516600090815260056020526040812080546001929061209d9084906001600160801b03166130c3565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b038616600090815260056020526040812080546001945090926120e99185911661304d565b82546001600160801b039182166101009390930a9283029190920219909116179055506040805180820182526001600160a01b03808716825267ffffffffffffffff428116602080850191825260008981526004909152948520935184549151909216600160a01b026001600160e01b03199091169190921617179055612171846001613078565b6000818152600460205260409020549091506001600160a01b03166122035761219b816001541190565b156122035760408051808201825284516001600160a01b03908116825260208087015167ffffffffffffffff9081168285019081526000878152600490935294909120925183549451909116600160a01b026001600160e01b03199094169116179190911790555b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b604080518082019091526000808252602082015261226c826001541190565b6122cb5760405162461bcd60e51b815260206004820152602a60248201527f455243373231413a206f776e657220717565727920666f72206e6f6e657869736044820152693a32b73a103a37b5b2b760b11b60648201526084016108a9565b60007f0000000000000000000000000000000000000000000000000000000000000032831061232c5761231e7f0000000000000000000000000000000000000000000000000000000000000032846130eb565b612329906001613078565b90505b825b818110612396576000818152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff16918301919091521561238357949350505050565b508061238e8161312e565b91505061232e565b5060405162461bcd60e51b815260206004820152602f60248201527f455243373231413a20756e61626c6520746f2064657465726d696e652074686560448201526e1037bbb732b91037b3103a37b5b2b760891b60648201526084016108a9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008261245485846129f1565b14949350505050565b60006001600160a01b0384163b1561255f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906124a1903390899088908890600401612ee2565b602060405180830381600087803b1580156124bb57600080fd5b505af19250505080156124eb575060408051601f3d908101601f191682019092526124e891810190612d54565b60015b612545573d808015612519576040519150601f19603f3d011682016040523d82523d6000602084013e61251e565b606091505b50805161253d5760405162461bcd60e51b81526004016108a990612fca565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612563565b5060015b949350505050565b6060600e80546108cf90613145565b60608161259e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156125c857806125b281613180565b91506125c19050600a83613090565b91506125a2565b60008167ffffffffffffffff8111156125e3576125e36131f1565b6040519080825280601f01601f19166020018201604052801561260d576020820181803683370190505b5090505b8415612563576126226001836130eb565b915061262f600a8661319b565b61263a906030613078565b60f81b81838151811061264f5761264f6131db565b60200101906001600160f81b031916908160001a905350612671600a86613090565b9450612611565b60006001600160a01b0382166126ea5760405162461bcd60e51b815260206004820152603160248201527f455243373231413a206e756d626572206d696e74656420717565727920666f7260448201527020746865207a65726f206164647265737360781b60648201526084016108a9565b506001600160a01b0316600090815260056020526040902054600160801b90046001600160801b031690565b6001546001600160a01b0384166127795760405162461bcd60e51b815260206004820152602160248201527f455243373231413a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084016108a9565b612784816001541190565b156127d15760405162461bcd60e51b815260206004820152601d60248201527f455243373231413a20746f6b656e20616c7265616479206d696e74656400000060448201526064016108a9565b7f000000000000000000000000000000000000000000000000000000000000003283111561284c5760405162461bcd60e51b815260206004820152602260248201527f455243373231413a207175616e7469747920746f206d696e7420746f6f2068696044820152610ced60f31b60648201526084016108a9565b6001600160a01b0384166000908152600560209081526040918290208251808401845290546001600160801b038082168352600160801b90910416918101919091528151808301909252805190919081906128a890879061304d565b6001600160801b031681526020018583602001516128c6919061304d565b6001600160801b039081169091526001600160a01b0380881660008181526005602090815260408083208751978301518716600160801b0297909616969096179094558451808601865291825267ffffffffffffffff4281168386019081528883526004909552948120915182549451909516600160a01b026001600160e01b031990941694909216939093179190911790915582905b858110156129e65760405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46129aa600088848861245d565b6129c65760405162461bcd60e51b81526004016108a990612fca565b816129d081613180565b92505080806129de90613180565b91505061295d565b506001819055612245565b600081815b8451811015612a5d576000858281518110612a1357612a136131db565b60200260200101519050808311612a395760008381526020829052604090209250612a4a565b600081815260208490526040902092505b5080612a5581613180565b9150506129f6565b509392505050565b828054612a7190613145565b90600052602060002090601f016020900481019282612a935760008555612ad9565b82601f10612aac57805160ff1916838001178555612ad9565b82800160010185558215612ad9579182015b82811115612ad9578251825591602001919060010190612abe565b5061138a9291505b8082111561138a5760008155600101612ae1565b600067ffffffffffffffff80841115612b1057612b106131f1565b604051601f8501601f19908116603f01168101908282118183101715612b3857612b386131f1565b81604052809350858152868686011115612b5157600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b0381168114612b8257600080fd5b919050565b80358015158114612b8257600080fd5b803561ffff81168114612b8257600080fd5b600060208284031215612bbb57600080fd5b611cf182612b6b565b60008060408385031215612bd757600080fd5b612be083612b6b565b9150612bee60208401612b6b565b90509250929050565b600080600060608486031215612c0c57600080fd5b612c1584612b6b565b9250612c2360208501612b6b565b9150604084013590509250925092565b60008060008060808587031215612c4957600080fd5b612c5285612b6b565b9350612c6060208601612b6b565b925060408501359150606085013567ffffffffffffffff811115612c8357600080fd5b8501601f81018713612c9457600080fd5b612ca387823560208401612af5565b91505092959194509250565b60008060408385031215612cc257600080fd5b612ccb83612b6b565b9150612bee60208401612b87565b60008060408385031215612cec57600080fd5b612cf583612b6b565b946020939093013593505050565b600060208284031215612d1557600080fd5b611cf182612b87565b600060208284031215612d3057600080fd5b5035919050565b600060208284031215612d4957600080fd5b8135611cf181613207565b600060208284031215612d6657600080fd5b8151611cf181613207565b600060208284031215612d8357600080fd5b813567ffffffffffffffff811115612d9a57600080fd5b8201601f81018413612dab57600080fd5b61256384823560208401612af5565b600060208284031215612dcc57600080fd5b611cf182612b97565b60008060408385031215612de857600080fd5b612be083612b97565b600080600060408486031215612e0657600080fd5b612e0f84612b97565b9250602084013567ffffffffffffffff80821115612e2c57600080fd5b818601915086601f830112612e4057600080fd5b813581811115612e4f57600080fd5b8760208260051b8501011115612e6457600080fd5b6020830194508093505050509250925092565b60008151808452612e8f816020860160208601613102565b601f01601f19169290920160200192915050565b60008351612eb5818460208801613102565b835190830190612ec9818360208801613102565b64173539b7b760d91b9101908152600501949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612f1590830184612e77565b9695505050505050565b602081526000611cf16020830184612e77565b6020808252601e908201527f5175616e74697479206578636565647320616c6c6f776564204d696e74730000604082015260600190565b60208082526012908201527172656163686564206d617820737570706c7960701b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526033908201527f455243373231413a207472616e7366657220746f206e6f6e204552433732315260408201527232b1b2b4bb32b91034b6b83632b6b2b73a32b960691b606082015260800190565b60208082526016908201527563616e206e6f74206d696e742074686973206d616e7960501b604082015260600190565b60006001600160801b0380831681851680830382111561306f5761306f6131af565b01949350505050565b6000821982111561308b5761308b6131af565b500190565b60008261309f5761309f6131c5565b500490565b60008160001904831182151516156130be576130be6131af565b500290565b60006001600160801b03838116908316818110156130e3576130e36131af565b039392505050565b6000828210156130fd576130fd6131af565b500390565b60005b8381101561311d578181015183820152602001613105565b83811115611b845750506000910152565b60008161313d5761313d6131af565b506000190190565b600181811c9082168061315957607f821691505b6020821081141561317a57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613194576131946131af565b5060010190565b6000826131aa576131aa6131c5565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114611de157600080fdfea2646970667358221220bd98704492d0c655430fe0b40051a7398da70f27334fe51bc49e84489d7c65b864736f6c63430008070033

Deployed Bytecode Sourcemap

22918:5663:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24311:183;;;;;;;;;;-1:-1:-1;24311:183:0;;;;;:::i;:::-;;:::i;:::-;;;8007:14:1;;8000:22;7982:41;;7970:2;7955:18;24311:183:0;;;;;;;;26830:91;;;;;;;;;;-1:-1:-1;26830:91:0;;;;;:::i;:::-;;:::i;:::-;;15579:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;16739:212::-;;;;;;;;;;-1:-1:-1;16739:212:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;7305:32:1;;;7287:51;;7275:2;7260:18;16739:212:0;7141:203:1;16361:372:0;;;;;;;;;;-1:-1:-1;16361:372:0;;;;;:::i;:::-;;:::i;12879:104::-;;;;;;;;;;;;;:::i;:::-;;;8180:25:1;;;8168:2;8153:18;12879:104:0;8034:177:1;17418:128:0;;;;;;;;;;-1:-1:-1;17418:128:0;;;;;:::i;:::-;;:::i;24500:315::-;;;;;;:::i;:::-;;:::i;23051:94::-;;;;;;;;;;;;;;;;13182:823;;;;;;;;;;-1:-1:-1;13182:823:0;;;;;:::i;:::-;;:::i;27389:1189::-;;;;;;;;;;;;;:::i;17552:143::-;;;;;;;;;;-1:-1:-1;17552:143:0;;;;;:::i;:::-;;:::i;23196:31::-;;;;;;;;;;-1:-1:-1;23196:31:0;;;;;;;;;;;;;;20974:6:1;20962:19;;;20944:38;;20932:2;20917:18;23196:31:0;20800:188:1;27071:91:0;;;;;;;;;;-1:-1:-1;27071:91:0;;;;;:::i;:::-;;:::i;23152:36::-;;;;;;;;;;-1:-1:-1;23152:36:0;;;;;;;;12989:187;;;;;;;;;;-1:-1:-1;12989:187:0;;;;;:::i;:::-;;:::i;26927:138::-;;;;;;;;;;-1:-1:-1;26927:138:0;;;;;:::i;:::-;;:::i;23383:30::-;;;;;;;;;;-1:-1:-1;23383:30:0;;;;;;;;;;;25963:101;;;;;;;;;;-1:-1:-1;25963:101:0;;;;;:::i;:::-;;:::i;24821:149::-;;;;;;;;;;-1:-1:-1;24821:149:0;;;;;:::i;:::-;;:::i;26741:83::-;;;;;;;;;;-1:-1:-1;26741:83:0;;;;;:::i;:::-;;:::i;15449:124::-;;;;;;;;;;-1:-1:-1;15449:124:0;;;;;:::i;:::-;;:::i;14337:221::-;;;;;;;;;;-1:-1:-1;14337:221:0;;;;;:::i;:::-;;:::i;5815:103::-;;;;;;;;;;;;;:::i;27279:104::-;;;;;;;;;;-1:-1:-1;27279:104:0;;;;;:::i;:::-;;:::i;5596:87::-;;;;;;;;;;-1:-1:-1;5642:7:0;5669:6;-1:-1:-1;;;;;5669:6:0;5596:87;;26449:90;;;;;;;;;;-1:-1:-1;26449:90:0;;;;;:::i;:::-;;:::i;26308:135::-;;;;;;;;;;-1:-1:-1;26308:135:0;;;;;:::i;:::-;;:::i;:::-;;;;20665:13:1;;-1:-1:-1;;;;;20661:39:1;20643:58;;20761:4;20749:17;;;20743:24;20769:18;20739:49;20717:20;;;20710:79;;;;20616:18;26308:135:0;20433:362:1;26545:97:0;;;;;;;;;;-1:-1:-1;26545:97:0;;;;;:::i;:::-;;:::i;15685:104::-;;;;;;;;;;;;;:::i;23420:36::-;;;;;;;;;;-1:-1:-1;23420:36:0;;;;;;;;;;;23234:49;;;;;;;;;;;;;;;;16957:286;;;;;;;;;;-1:-1:-1;16957:286:0;;;;;:::i;:::-;;:::i;23497:31::-;;;;;;;;;;;;;:::i;26648:87::-;;;;;;;;;;-1:-1:-1;26648:87:0;;;;;:::i;:::-;;:::i;24976:546::-;;;;;;:::i;:::-;;:::i;23348:28::-;;;;;;;;;;-1:-1:-1;23348:28:0;;;;;;;;17701:275;;;;;;;;;;-1:-1:-1;17701:275:0;;;;;:::i;:::-;;:::i;25528:429::-;;;;;;;;;;-1:-1:-1;25528:429:0;;;;;:::i;:::-;;:::i;20827:43::-;;;;;;;;;;;;;;;;23535:46;;;;;;;;;;-1:-1:-1;23535:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;26189:113;;;;;;;;;;-1:-1:-1;26189:113:0;;;;;:::i;:::-;;:::i;27168:105::-;;;;;;;;;;-1:-1:-1;27168:105:0;;;;;:::i;:::-;;:::i;17249:163::-;;;;;;;;;;-1:-1:-1;17249:163:0;;;;;:::i;:::-;-1:-1:-1;;;;;17369:25:0;;;17346:4;17369:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;17249:163;5924:201;;;;;;;;;;-1:-1:-1;5924:201:0;;;;;:::i;:::-;;:::i;24311:183::-;24397:4;-1:-1:-1;;;;;;;;;24421:25:0;;;;:65;;;24450:36;24474:11;24450:23;:36::i;:::-;24414:72;24311:183;-1:-1:-1;;24311:183:0:o;26830:91::-;5642:7;5669:6;-1:-1:-1;;;;;5669:6:0;5231:10;5729:23;5721:68;;;;-1:-1:-1;;;5721:68:0;;;;;;;:::i;:::-;;;;;;;;;26898:15:::1;26908:1;26911;26898:9;:15::i;:::-;26830:91:::0;;:::o;15579:100::-;15633:13;15666:5;15659:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15579:100;:::o;16739:212::-;16807:7;16835:16;16843:7;18073:12;;-1:-1:-1;18063:22:0;17982:111;16835:16;16827:74;;;;-1:-1:-1;;;16827:74:0;;19818:2:1;16827:74:0;;;19800:21:1;19857:2;19837:18;;;19830:30;19896:34;19876:18;;;19869:62;-1:-1:-1;;;19947:18:1;;;19940:43;20000:19;;16827:74:0;19616:409:1;16827:74:0;-1:-1:-1;16919:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;16919:24:0;;16739:212::o;16361:372::-;16434:13;16450:24;16466:7;16450:15;:24::i;:::-;16434:40;;16499:5;-1:-1:-1;;;;;16493:11:0;:2;-1:-1:-1;;;;;16493:11:0;;;16485:58;;;;-1:-1:-1;;;16485:58:0;;15299:2:1;16485:58:0;;;15281:21:1;15338:2;15318:18;;;15311:30;15377:34;15357:18;;;15350:62;-1:-1:-1;;;15428:18:1;;;15421:32;15470:19;;16485:58:0;15097:398:1;16485:58:0;5231:10;-1:-1:-1;;;;;16562:21:0;;;;:62;;-1:-1:-1;16587:37:0;16604:5;5231:10;17249:163;:::i;16587:37::-;16554:132;;;;-1:-1:-1;;;16554:132:0;;11091:2:1;16554:132:0;;;11073:21:1;11130:2;11110:18;;;11103:30;11169:34;11149:18;;;11142:62;11240:27;11220:18;;;11213:55;11285:19;;16554:132:0;10889:421:1;16554:132:0;16697:28;16706:2;16710:7;16719:5;16697:8;:28::i;:::-;16423:310;16361:372;;:::o;12879:104::-;12932:7;12974:1;12959:12;;:16;;;;:::i;:::-;12952:23;;12879:104;:::o;17418:128::-;17510:28;17520:4;17526:2;17530:7;17510:9;:28::i;24500:315::-;24553:8;23337:4;23930:47;:24;;:13;:11;:13::i;:::-;:24;;;;:::i;:::-;:47;;23922:78;;;;-1:-1:-1;;;23922:78:0;;;;;;;:::i;:::-;24031:17;;;;;;24019:29;;;;;24011:64;;;;-1:-1:-1;;;24011:64:0;;;;;;;:::i;:::-;24134:12;;;;;;;;;;24095:35;;:24;24108:10;24095:12;:24::i;:::-;:35;;;;:::i;:::-;:51;;24086:95;;;;-1:-1:-1;;;24086:95:0;;;;;;;:::i;:::-;24196:13;:11;:13::i;:::-;24213:4;24196:21;:46;;;;24221:13;:11;:13::i;:::-;24238:4;24221:21;24196:46;24192:94;;;24259:8;:15;;-1:-1:-1;;24259:15:0;24270:4;24259:15;;;24192:94;24591:8:::1;::::0;::::1;;24590:9;24582:36;;;::::0;-1:-1:-1;;;24582:36:0;;19475:2:1;24582:36:0::1;::::0;::::1;19457:21:1::0;19514:2;19494:18;;;19487:30;-1:-1:-1;;;19533:18:1;;;19526:44;19587:18;;24582:36:0::1;19273:338:1::0;24582:36:0::1;24638:17;::::0;;;::::1;;;24637:18;24629:56;;;::::0;-1:-1:-1;;;24629:56:0;;11876:2:1;24629:56:0::1;::::0;::::1;11858:21:1::0;11915:2;11895:18;;;11888:30;11954:27;11934:18;;;11927:55;11999:18;;24629:56:0::1;11674:349:1::0;24629:56:0::1;24725:8;24717:16;;:5;;:16;;;;:::i;:::-;24704:9;:29;;24696:60;;;::::0;-1:-1:-1;;;24696:60:0;;15702:2:1;24696:60:0::1;::::0;::::1;15684:21:1::0;15741:2;15721:18;;;15714:30;-1:-1:-1;;;15760:18:1;;;15753:48;15818:18;;24696:60:0::1;15500:342:1::0;24696:60:0::1;24776:31;24786:10;24798:8;24776:31;;:9;:31::i;13182:823::-:0;13271:7;13307:16;13317:5;13307:9;:16::i;:::-;13299:5;:24;13291:71;;;;-1:-1:-1;;;13291:71:0;;8642:2:1;13291:71:0;;;8624:21:1;8681:2;8661:18;;;8654:30;8720:34;8700:18;;;8693:62;-1:-1:-1;;;8771:18:1;;;8764:32;8813:19;;13291:71:0;8440:398:1;13291:71:0;13373:22;13398:13;:11;:13::i;:::-;13373:38;;13422:19;13456:25;13510:9;13505:426;13529:14;13525:1;:18;13505:426;;;13565:31;13599:14;;;:11;:14;;;;;;;;;13565:48;;;;;;;;;-1:-1:-1;;;;;13565:48:0;;;;;-1:-1:-1;;;13565:48:0;;;;;;;;;;;;13632:28;13628:103;;13701:14;;;-1:-1:-1;13628:103:0;13770:5;-1:-1:-1;;;;;13749:26:0;:17;-1:-1:-1;;;;;13749:26:0;;13745:175;;;13815:5;13800:11;:20;13796:77;;;-1:-1:-1;13852:1:0;-1:-1:-1;13845:8:0;;-1:-1:-1;;;13845:8:0;13796:77;13891:13;;;;:::i;:::-;;;;13745:175;-1:-1:-1;13545:3:0;;;;:::i;:::-;;;;13505:426;;;-1:-1:-1;13941:56:0;;-1:-1:-1;;;13941:56:0;;18284:2:1;13941:56:0;;;18266:21:1;18323:2;18303:18;;;18296:30;18362:34;18342:18;;;18335:62;-1:-1:-1;;;18413:18:1;;;18406:44;18467:19;;13941:56:0;18082:410:1;27389:1189:0;5642:7;5669:6;-1:-1:-1;;;;;5669:6:0;5231:10;5729:23;5721:68;;;;-1:-1:-1;;;5721:68:0;;;;;;;:::i;:::-;183:1:::1;325:7;;:19;;317:63;;;::::0;-1:-1:-1;;;317:63:0;;18699:2:1;317:63:0::1;::::0;::::1;18681:21:1::0;18738:2;18718:18;;;18711:30;18777:33;18757:18;;;18750:61;18828:18;;317:63:0::1;18497:355:1::0;317:63:0::1;183:1;391:7;:18:::0;27453:7:::2;27474:42;27558:3;27530:25;:21;27554:1;27530:25;:::i;:::-;:31;;;;:::i;:::-;27466:100;::::0;::::2;::::0;;;;;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27452:114;;;27585:2;27577:11;;;::::0;::::2;;27622:21;27601:18;27677:42;27752:4;27733:16;27622:21:::0;27746:3:::2;27733:16;:::i;:::-;:23;;;;:::i;:::-;27669:92;::::0;::::2;::::0;;;;;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27656:105;;;27780:1;27772:10;;;::::0;::::2;;27796:6;27816:42;27891:4;27872:16;:10:::0;27885:3:::2;27872:16;:::i;:::-;:23;;;;:::i;:::-;27808:92;::::0;::::2;::::0;;;;;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27795:105;;;27919:1;27911:10;;;::::0;::::2;;27935:6;27955:42;28029:3;28011:15;:10:::0;28024:2:::2;28011:15;:::i;:::-;:21;;;;:::i;:::-;27947:90;::::0;::::2;::::0;;;;;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27934:103;;;28056:1;28048:10;;;::::0;::::2;;28072:6;28092:42;28165:3;28148:14;:10:::0;28161:1:::2;28148:14;:::i;:::-;:20;;;;:::i;:::-;28084:89;::::0;::::2;::::0;;;;;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28071:102;;;28192:1;28184:10;;;::::0;::::2;;28208:6;28228:42;28301:3;28284:14;:10:::0;28297:1:::2;28284:14;:::i;:::-;:20;;;;:::i;:::-;28220:89;::::0;::::2;::::0;;;;;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28207:102;;;28328:1;28320:10;;;::::0;::::2;;28344:6;28364:42;28437:3;28420:14;:10:::0;28433:1:::2;28420:14;:::i;:::-;:20;;;;:::i;:::-;28356:89;::::0;::::2;::::0;;;;;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28343:102;;;28464:1;28456:10;;;::::0;::::2;;28480:7;5669:6:::0;;28493:55:::2;::::0;-1:-1:-1;;;;;5669:6:0;;;;28522:21:::2;::::0;28480:7;28493:55;28480:7;28493:55;28522:21;5669:6;28493:55:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28479:69;;;28567:2;28559:11;;;::::0;::::2;;-1:-1:-1::0;;139:1:0::1;432:7;:22:::0;-1:-1:-1;;;;;;;27389:1189:0:o;17552:143::-;17648:39;17665:4;17671:2;17675:7;17648:39;;;;;;;;;;;;:16;:39::i;27071:91::-;5642:7;5669:6;-1:-1:-1;;;;;5669:6:0;5231:10;5729:23;5721:68;;;;-1:-1:-1;;;5721:68:0;;;;;;;:::i;:::-;27135:10:::1;:19:::0;;;::::1;;;;-1:-1:-1::0;;27135:19:0;;::::1;::::0;;;::::1;::::0;;27071:91::o;12989:187::-;13056:7;13092:13;:11;:13::i;:::-;13084:5;:21;13076:69;;;;-1:-1:-1;;;13076:69:0;;9863:2:1;13076:69:0;;;9845:21:1;9902:2;9882:18;;;9875:30;9941:34;9921:18;;;9914:62;-1:-1:-1;;;9992:18:1;;;9985:33;10035:19;;13076:69:0;9661:399:1;13076:69:0;-1:-1:-1;13163:5:0;12989:187::o;26927:138::-;5642:7;5669:6;-1:-1:-1;;;;;5669:6:0;5231:10;5729:23;5721:68;;;;-1:-1:-1;;;5721:68:0;;;;;;;:::i;:::-;27019:38;;::::1;::::0;:17:::1;::::0;:38:::1;::::0;::::1;::::0;::::1;:::i;25963:101::-:0;5642:7;5669:6;-1:-1:-1;;;;;5669:6:0;5231:10;5729:23;5721:68;;;;-1:-1:-1;;;5721:68:0;;;;;;;:::i;:::-;26034:22;;::::1;::::0;:12:::1;::::0;:22:::1;::::0;::::1;::::0;::::1;:::i;24821:149::-:0;24902:8;23337:4;23930:47;:24;;:13;:11;:13::i;:::-;:24;;;;:::i;:::-;:47;;23922:78;;;;-1:-1:-1;;;23922:78:0;;;;;;;:::i;:::-;24031:17;;;;;;24019:29;;;;;24011:64;;;;-1:-1:-1;;;24011:64:0;;;;;;;:::i;:::-;24134:12;;;;;;;;;;24095:35;;:24;24108:10;24095:12;:24::i;:::-;:35;;;;:::i;:::-;:51;;24086:95;;;;-1:-1:-1;;;24086:95:0;;;;;;;:::i;:::-;24196:13;:11;:13::i;:::-;24213:4;24196:21;:46;;;;24221:13;:11;:13::i;:::-;24238:4;24221:21;24196:46;24192:94;;;24259:8;:15;;-1:-1:-1;;24259:15:0;24270:4;24259:15;;;24192:94;5642:7;5669:6;-1:-1:-1;;;;;5669:6:0;5231:10;5729:23:::1;5721:68;;;;-1:-1:-1::0;;;5721:68:0::1;;;;;;;:::i;:::-;24933:29:::2;24943:8;24953;24933:29;;:9;:29::i;26741:83::-:0;5642:7;5669:6;-1:-1:-1;;;;;5669:6:0;5231:10;5729:23;5721:68;;;;-1:-1:-1;;;5721:68:0;;;;;;;:::i;:::-;26799:8:::1;:17:::0;;-1:-1:-1;;26799:17:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26741:83::o;15449:124::-;15513:7;15540:20;15552:7;15540:11;:20::i;:::-;:25;;15449:124;-1:-1:-1;;15449:124:0:o;14337:221::-;14401:7;-1:-1:-1;;;;;14429:19:0;;14421:75;;;;-1:-1:-1;;;14421:75:0;;12230:2:1;14421:75:0;;;12212:21:1;12269:2;12249:18;;;12242:30;12308:34;12288:18;;;12281:62;-1:-1:-1;;;12359:18:1;;;12352:41;12410:19;;14421:75:0;12028:407:1;14421:75:0;-1:-1:-1;;;;;;14522:19:0;;;;;:12;:19;;;;;:27;-1:-1:-1;;;;;14522:27:0;;14337:221::o;5815:103::-;5642:7;5669:6;-1:-1:-1;;;;;5669:6:0;5231:10;5729:23;5721:68;;;;-1:-1:-1;;;5721:68:0;;;;;;;:::i;:::-;5880:30:::1;5907:1;5880:18;:30::i;:::-;5815:103::o:0;27279:104::-;5642:7;5669:6;-1:-1:-1;;;;;5669:6:0;5231:10;5729:23;5721:68;;;;-1:-1:-1;;;5721:68:0;;;;;;;:::i;:::-;27351:10:::1;:24:::0;27279:104::o;26449:90::-;5642:7;5669:6;-1:-1:-1;;;;;5669:6:0;5231:10;5729:23;5721:68;;;;-1:-1:-1;;;5721:68:0;;;;;;;:::i;:::-;26514:5:::1;:17:::0;26449:90::o;26308:135::-;-1:-1:-1;;;;;;;;;;;;;;;;;26415:20:0;26427:7;26415:11;:20::i;26545:97::-;5642:7;5669:6;-1:-1:-1;;;;;5669:6:0;5231:10;5729:23;5721:68;;;;-1:-1:-1;;;5721:68:0;;;;;;;:::i;:::-;26613:17:::1;:21:::0;;-1:-1:-1;;26613:21:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;26545:97::o;15685:104::-;15741:13;15774:7;15767:14;;;;;:::i;16957:286::-;-1:-1:-1;;;;;17052:24:0;;5231:10;17052:24;;17044:63;;;;-1:-1:-1;;;17044:63:0;;14525:2:1;17044:63:0;;;14507:21:1;14564:2;14544:18;;;14537:30;14603:28;14583:18;;;14576:56;14649:18;;17044:63:0;14323:350:1;17044:63:0;5231:10;17118:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;17118:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;17118:53:0;;;;;;;;;;17187:48;;7982:41:1;;;17118:42:0;;5231:10;17187:48;;7955:18:1;17187:48:0;;;;;;;16957:286;;:::o;23497:31::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26648:87::-;5642:7;5669:6;-1:-1:-1;;;;;5669:6:0;5231:10;5729:23;5721:68;;;;-1:-1:-1;;;5721:68:0;;;;;;;:::i;:::-;26711:12:::1;:16:::0;;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;26711:16:0;;::::1;::::0;;;::::1;::::0;;26648:87::o;24976:546::-;25064:8;23337:4;23930:47;:24;;:13;:11;:13::i;:::-;:24;;;;:::i;:::-;:47;;23922:78;;;;-1:-1:-1;;;23922:78:0;;;;;;;:::i;:::-;24031:17;;;;;;24019:29;;;;;24011:64;;;;-1:-1:-1;;;24011:64:0;;;;;;;:::i;:::-;24134:12;;;;;;;;;;24095:35;;:24;24108:10;24095:12;:24::i;:::-;:35;;;;:::i;:::-;:51;;24086:95;;;;-1:-1:-1;;;24086:95:0;;;;;;;:::i;:::-;24196:13;:11;:13::i;:::-;24213:4;24196:21;:46;;;;24221:13;:11;:13::i;:::-;24238:4;24221:21;24196:46;24192:94;;;24259:8;:15;;-1:-1:-1;;24259:15:0;24270:4;24259:15;;;24192:94;25109:17:::1;::::0;;;::::1;;;25101:54;;;::::0;-1:-1:-1;;;25101:54:0;;16827:2:1;25101:54:0::1;::::0;::::1;16809:21:1::0;16866:2;16846:18;;;16839:30;16905:26;16885:18;;;16878:54;16949:18;;25101:54:0::1;16625:348:1::0;25101:54:0::1;25192:10;25175:28;::::0;;;:16:::1;:28;::::0;;;;;::::1;;25174:29;25166:65;;;::::0;-1:-1:-1;;;25166:65:0;;13757:2:1;25166:65:0::1;::::0;::::1;13739:21:1::0;13796:2;13776:18;;;13769:30;13835:25;13815:18;;;13808:53;13878:18;;25166:65:0::1;13555:347:1::0;25166:65:0::1;25267:28;::::0;-1:-1:-1;;25284:10:0::1;6204:2:1::0;6200:15;6196:53;25267:28:0::1;::::0;::::1;6184:66:1::0;25242:12:0::1;::::0;6266::1;;25267:28:0::1;;;;;;;;;;;;25257:39;;;;;;25242:54;;25315:50;25334:12;;25315:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;25348:10:0::1;::::0;;-1:-1:-1;25360:4:0;;-1:-1:-1;25315:18:0::1;:50::i;:::-;25307:85;;;::::0;-1:-1:-1;;;25307:85:0;;17933:2:1;25307:85:0::1;::::0;::::1;17915:21:1::0;17972:2;17952:18;;;17945:30;-1:-1:-1;;;17991:18:1;;;17984:52;18053:18;;25307:85:0::1;17731:346:1::0;25307:85:0::1;25432:8;25424:16;;:5;;:16;;;;:::i;:::-;25411:9;:29;;25403:60;;;::::0;-1:-1:-1;;;25403:60:0;;15702:2:1;25403:60:0::1;::::0;::::1;15684:21:1::0;15741:2;15721:18;;;15714:30;-1:-1:-1;;;15760:18:1;;;15753:48;15818:18;;25403:60:0::1;15500:342:1::0;25403:60:0::1;25483:31;25493:10;25505:8;25483:31;;:9;:31::i;:::-;25088:434;24976:546:::0;;;;:::o;17701:275::-;17817:28;17827:4;17833:2;17837:7;17817:9;:28::i;:::-;17864:48;17887:4;17893:2;17897:7;17906:5;17864:22;:48::i;:::-;17856:112;;;;-1:-1:-1;;;17856:112:0;;;;;;;:::i;:::-;17701:275;;;;:::o;25528:429::-;25601:13;25635:16;25643:7;18073:12;;-1:-1:-1;18063:22:0;17982:111;25635:16;25627:76;;;;-1:-1:-1;;;25627:76:0;;14109:2:1;25627:76:0;;;14091:21:1;14148:2;14128:18;;;14121:30;14187:34;14167:18;;;14160:62;-1:-1:-1;;;14238:18:1;;;14231:45;14293:19;;25627:76:0;13907:411:1;25627:76:0;25718:10;;;;;;;25714:77;;25761:17;25754:24;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25528:429;;;:::o;25714:77::-;25801:21;25825:10;:8;:10::i;:::-;25801:34;;25877:1;25859:7;25853:21;:25;:95;;;;;;;;;;;;;;;;;25905:7;25914:18;:7;:16;:18::i;:::-;25888:54;;;;;;;;;:::i;:::-;;;;;;;;;;;;;25853:95;25846:102;25528:429;-1:-1:-1;;;25528:429:0:o;26189:113::-;26247:7;26274:20;26288:5;26274:13;:20::i;27168:105::-;5642:7;5669:6;-1:-1:-1;;;;;5669:6:0;5231:10;5729:23;5721:68;;;;-1:-1:-1;;;5721:68:0;;;;;;;:::i;:::-;27239:17:::1;:26:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;27239:26:0;;::::1;::::0;;;::::1;::::0;;27168:105::o;5924:201::-;5642:7;5669:6;-1:-1:-1;;;;;5669:6:0;5231:10;5729:23;5721:68;;;;-1:-1:-1;;;5721:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6013:22:0;::::1;6005:73;;;::::0;-1:-1:-1;;;6005:73:0;;9045:2:1;6005:73:0::1;::::0;::::1;9027:21:1::0;9084:2;9064:18;;;9057:30;9123:34;9103:18;;;9096:62;-1:-1:-1;;;9174:18:1;;;9167:36;9220:19;;6005:73:0::1;8843:402:1::0;6005:73:0::1;6089:28;6108:8;6089:18;:28::i;:::-;5924:201:::0;:::o;14011:320::-;14113:4;-1:-1:-1;;;;;;14137:40:0;;-1:-1:-1;;;14137:40:0;;:92;;-1:-1:-1;;;;;;;14181:48:0;;-1:-1:-1;;;14181:48:0;14137:92;:146;;;-1:-1:-1;;;;;;;14233:50:0;;-1:-1:-1;;;14233:50:0;14137:146;:186;;;-1:-1:-1;;;;;;;;;;10053:40:0;;;14287:36;9944:157;18099:104;18168:27;18178:2;18182:8;18168:27;;;;;;;;;;;;:9;:27::i;20659:162::-;20740:24;;;;:15;:24;;;;;;:29;;-1:-1:-1;;;;;;20740:29:0;-1:-1:-1;;;;;20740:29:0;;;;;;;;;20785:28;;20740:24;;20785:28;;;;;;;20659:162;;;:::o;19371:1282::-;19452:35;19490:20;19502:7;19490:11;:20::i;:::-;19563:18;;19452:58;;-1:-1:-1;19521:22:0;;-1:-1:-1;;;;;19547:34:0;5231:10;-1:-1:-1;;;;;19547:34:0;;:74;;;-1:-1:-1;5231:10:0;19585:20;19597:7;19585:11;:20::i;:::-;-1:-1:-1;;;;;19585:36:0;;19547:74;:128;;;-1:-1:-1;19642:18:0;;19625:50;;5231:10;17249:163;:::i;19625:50::-;19521:155;;19696:17;19688:80;;;;-1:-1:-1;;;19688:80:0;;14880:2:1;19688:80:0;;;14862:21:1;14919:2;14899:18;;;14892:30;14958:34;14938:18;;;14931:62;-1:-1:-1;;;15009:18:1;;;15002:48;15067:19;;19688:80:0;14678:414:1;19688:80:0;19810:4;-1:-1:-1;;;;;19788:26:0;:13;:18;;;-1:-1:-1;;;;;19788:26:0;;19779:78;;;;-1:-1:-1;;;19779:78:0;;12989:2:1;19779:78:0;;;12971:21:1;13028:2;13008:18;;;13001:30;13067:34;13047:18;;;13040:62;-1:-1:-1;;;13118:18:1;;;13111:36;13164:19;;19779:78:0;12787:402:1;19779:78:0;-1:-1:-1;;;;;19876:16:0;;19868:66;;;;-1:-1:-1;;;19868:66:0;;10267:2:1;19868:66:0;;;10249:21:1;10306:2;10286:18;;;10279:30;10345:34;10325:18;;;10318:62;-1:-1:-1;;;10396:18:1;;;10389:35;10441:19;;19868:66:0;10065:401:1;19868:66:0;19999:49;20016:1;20020:7;20029:13;:18;;;19999:8;:49::i;:::-;-1:-1:-1;;;;;20059:18:0;;;;;;:12;:18;;;;;:31;;20089:1;;20059:18;:31;;20089:1;;-1:-1:-1;;;;;20059:31:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;20059:31:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;20101:16:0;;-1:-1:-1;20101:16:0;;;:12;:16;;;;;:29;;-1:-1:-1;;;20101:16:0;;:29;;-1:-1:-1;;20101:29:0;;:::i;:::-;;;-1:-1:-1;;;;;20101:29:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20164:43:0;;;;;;;;-1:-1:-1;;;;;20164:43:0;;;;;;20190:15;20164:43;;;;;;;;;-1:-1:-1;20141:20:0;;;:11;:20;;;;;;:66;;;;;;;;;-1:-1:-1;;;20141:66:0;-1:-1:-1;;;;;;20141:66:0;;;;;;;;;;;20240:11;20153:7;-1:-1:-1;20240:11:0;:::i;:::-;20307:1;20266:24;;;:11;:24;;;;;:29;20218:33;;-1:-1:-1;;;;;;20266:29:0;20262:288;;20330:20;20338:11;18073:12;;-1:-1:-1;18063:22:0;17982:111;20330:20;20326:213;;;20398:125;;;;;;;;20435:18;;-1:-1:-1;;;;;20398:125:0;;;;;;20476:28;;;;20398:125;;;;;;;;;;-1:-1:-1;20371:24:0;;;:11;:24;;;;;;;:152;;;;;;;;;-1:-1:-1;;;20371:152:0;-1:-1:-1;;;;;;20371:152:0;;;;;;;;;;;;20326:213;20584:7;20580:2;-1:-1:-1;;;;;20565:27:0;20574:4;-1:-1:-1;;;;;20565:27:0;;;;;;;;;;;20603:42;19441:1212;;;19371:1282;;;:::o;14799:644::-;-1:-1:-1;;;;;;;;;;;;;;;;;14902:16:0;14910:7;18073:12;;-1:-1:-1;18063:22:0;17982:111;14902:16;14894:71;;;;-1:-1:-1;;;14894:71:0;;9452:2:1;14894:71:0;;;9434:21:1;9491:2;9471:18;;;9464:30;9530:34;9510:18;;;9503:62;-1:-1:-1;;;9581:18:1;;;9574:40;9631:19;;14894:71:0;9250:406:1;14894:71:0;14976:26;15028:12;15017:7;:23;15013:103;;15078:22;15088:12;15078:7;:22;:::i;:::-;:26;;15103:1;15078:26;:::i;:::-;15057:47;;15013:103;15146:7;15126:242;15163:18;15155:4;:26;15126:242;;15206:31;15240:17;;;:11;:17;;;;;;;;;15206:51;;;;;;;;;-1:-1:-1;;;;;15206:51:0;;;;;-1:-1:-1;;;15206:51:0;;;;;;;;;;;;15276:28;15272:85;;15332:9;14799:644;-1:-1:-1;;;;14799:644:0:o;15272:85::-;-1:-1:-1;15183:6:0;;;;:::i;:::-;;;;15126:242;;;-1:-1:-1;15378:57:0;;-1:-1:-1;;;15378:57:0;;19059:2:1;15378:57:0;;;19041:21:1;19098:2;19078:18;;;19071:30;19137:34;19117:18;;;19110:62;-1:-1:-1;;;19188:18:1;;;19181:45;19243:19;;15378:57:0;18857:411:1;6131:191:0;6205:16;6224:6;;-1:-1:-1;;;;;6241:17:0;;;-1:-1:-1;;;;;;6241:17:0;;;;;;6274:40;;6224:6;;;;;;;6274:40;;6205:16;6274:40;6194:128;6131:191;:::o;494:156::-;585:4;638;609:25;622:5;629:4;609:12;:25::i;:::-;:33;;494:156;-1:-1:-1;;;;494:156:0:o;21728:942::-;21840:4;-1:-1:-1;;;;;21861:13:0;;6482:20;6530:8;21857:806;;21914:175;;-1:-1:-1;;;21914:175:0;;-1:-1:-1;;;;;21914:36:0;;;;;:175;;5231:10;;22008:4;;22035:7;;22065:5;;21914:175;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21914:175:0;;;;;;;;-1:-1:-1;;21914:175:0;;;;;;;;;;;;:::i;:::-;;;21893:715;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22276:13:0;;22272:321;;22319:109;;-1:-1:-1;;;22319:109:0;;;;;;;:::i;22272:321::-;22543:6;22537:13;22528:6;22524:2;22520:15;22513:38;21893:715;-1:-1:-1;;;;;;22153:55:0;-1:-1:-1;;;22153:55:0;;-1:-1:-1;22146:62:0;;21857:806;-1:-1:-1;22647:4:0;21857:806;21728:942;;;;;;:::o;26070:113::-;26130:13;26163:12;26156:19;;;;;:::i;3778:532::-;3834:13;3864:10;3860:53;;-1:-1:-1;;3891:10:0;;;;;;;;;;;;-1:-1:-1;;;3891:10:0;;;;;3778:532::o;3860:53::-;3938:5;3923:12;3979:78;3986:9;;3979:78;;4012:8;;;;:::i;:::-;;-1:-1:-1;4035:10:0;;-1:-1:-1;4043:2:0;4035:10;;:::i;:::-;;;3979:78;;;4067:19;4099:6;4089:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4089:17:0;;4067:39;;4117:154;4124:10;;4117:154;;4151:11;4161:1;4151:11;;:::i;:::-;;-1:-1:-1;4220:10:0;4228:2;4220:5;:10;:::i;:::-;4207:24;;:2;:24;:::i;:::-;4194:39;;4177:6;4184;4177:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;4177:56:0;;;;;;;;-1:-1:-1;4248:11:0;4257:2;4248:11;;:::i;:::-;;;4117:154;;14564:229;14625:7;-1:-1:-1;;;;;14653:19:0;;14645:81;;;;-1:-1:-1;;;14645:81:0;;10673:2:1;14645:81:0;;;10655:21:1;10712:2;10692:18;;;10685:30;10751:34;10731:18;;;10724:62;-1:-1:-1;;;10802:18:1;;;10795:47;10859:19;;14645:81:0;10471:413:1;14645:81:0;-1:-1:-1;;;;;;14752:19:0;;;;;:12;:19;;;;;:32;-1:-1:-1;;;14752:32:0;;-1:-1:-1;;;;;14752:32:0;;14564:229::o;18209:1156::-;18322:12;;-1:-1:-1;;;;;18353:16:0;;18345:62;;;;-1:-1:-1;;;18345:62:0;;17180:2:1;18345:62:0;;;17162:21:1;17219:2;17199:18;;;17192:30;17258:34;17238:18;;;17231:62;-1:-1:-1;;;17309:18:1;;;17302:31;17350:19;;18345:62:0;16978:397:1;18345:62:0;18427:21;18435:12;18073;;-1:-1:-1;18063:22:0;17982:111;18427:21;18426:22;18418:64;;;;-1:-1:-1;;;18418:64:0;;16469:2:1;18418:64:0;;;16451:21:1;16508:2;16488:18;;;16481:30;16547:31;16527:18;;;16520:59;16596:18;;18418:64:0;16267:353:1;18418:64:0;18513:12;18501:8;:24;;18493:71;;;;-1:-1:-1;;;18493:71:0;;20232:2:1;18493:71:0;;;20214:21:1;20271:2;20251:18;;;20244:30;20310:34;20290:18;;;20283:62;-1:-1:-1;;;20361:18:1;;;20354:32;20403:19;;18493:71:0;20030:398:1;18493:71:0;-1:-1:-1;;;;;18680:16:0;;18647:30;18680:16;;;:12;:16;;;;;;;;;18647:49;;;;;;;;;-1:-1:-1;;;;;18647:49:0;;;;;-1:-1:-1;;;18647:49:0;;;;;;;;;;;18726:108;;;;;;;;18738:19;;18647:49;;18726:108;;;18738:39;;18768:8;;18738:39;:::i;:::-;-1:-1:-1;;;;;18726:108:0;;;;;18814:8;18779:11;:24;;;:44;;;;:::i;:::-;-1:-1:-1;;;;;18726:108:0;;;;;;-1:-1:-1;;;;;18707:16:0;;;;;;;:12;:16;;;;;;;;:127;;;;;;;;-1:-1:-1;;;18707:127:0;;;;;;;;;;;;18873:43;;;;;;;;;;;18899:15;18873:43;;;;;;;;18845:25;;;:11;:25;;;;;;:71;;;;;;;;;-1:-1:-1;;;18845:71:0;-1:-1:-1;;;;;;18845:71:0;;;;;;;;;;;;;;;;;;18857:12;;18973:276;18997:8;18993:1;:12;18973:276;;;19032:38;;19057:12;;-1:-1:-1;;;;;19032:38:0;;;19049:1;;19032:38;;19049:1;;19032:38;19093:59;19124:1;19128:2;19132:12;19146:5;19093:22;:59::i;:::-;19085:123;;;;-1:-1:-1;;;19085:123:0;;;;;;;:::i;:::-;19223:14;;;;:::i;:::-;;;;19007:3;;;;;:::i;:::-;;;;18973:276;;;-1:-1:-1;19259:12:0;:27;;;19297:60;17701:275;656:517;739:7;782:4;739:7;797:339;821:5;:12;817:1;:16;797:339;;;855:20;878:5;884:1;878:8;;;;;;;;:::i;:::-;;;;;;;855:31;;921:12;905;:28;901:224;;1247:13;1297:15;;;1333:4;1326:15;;;1380:4;1364:21;;954:57;;901:224;;;1247:13;1297:15;;;1333:4;1326:15;;;1380:4;1364:21;;1052:57;;901:224;-1:-1:-1;835:3:0;;;;:::i;:::-;;;;797:339;;;-1:-1:-1;1153:12:0;656:517;-1:-1:-1;;;656:517:0:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:631:1;78:5;108:18;149:2;141:6;138:14;135:40;;;155:18;;:::i;:::-;230:2;224:9;198:2;284:15;;-1:-1:-1;;280:24:1;;;306:2;276:33;272:42;260:55;;;330:18;;;350:22;;;327:46;324:72;;;376:18;;:::i;:::-;416:10;412:2;405:22;445:6;436:15;;475:6;467;460:22;515:3;506:6;501:3;497:16;494:25;491:45;;;532:1;529;522:12;491:45;582:6;577:3;570:4;562:6;558:17;545:44;637:1;630:4;621:6;613;609:19;605:30;598:41;;;;14:631;;;;;:::o;650:173::-;718:20;;-1:-1:-1;;;;;767:31:1;;757:42;;747:70;;813:1;810;803:12;747:70;650:173;;;:::o;828:160::-;893:20;;949:13;;942:21;932:32;;922:60;;978:1;975;968:12;993:159;1060:20;;1120:6;1109:18;;1099:29;;1089:57;;1142:1;1139;1132:12;1157:186;1216:6;1269:2;1257:9;1248:7;1244:23;1240:32;1237:52;;;1285:1;1282;1275:12;1237:52;1308:29;1327:9;1308:29;:::i;1348:260::-;1416:6;1424;1477:2;1465:9;1456:7;1452:23;1448:32;1445:52;;;1493:1;1490;1483:12;1445:52;1516:29;1535:9;1516:29;:::i;:::-;1506:39;;1564:38;1598:2;1587:9;1583:18;1564:38;:::i;:::-;1554:48;;1348:260;;;;;:::o;1613:328::-;1690:6;1698;1706;1759:2;1747:9;1738:7;1734:23;1730:32;1727:52;;;1775:1;1772;1765:12;1727:52;1798:29;1817:9;1798:29;:::i;:::-;1788:39;;1846:38;1880:2;1869:9;1865:18;1846:38;:::i;:::-;1836:48;;1931:2;1920:9;1916:18;1903:32;1893:42;;1613:328;;;;;:::o;1946:666::-;2041:6;2049;2057;2065;2118:3;2106:9;2097:7;2093:23;2089:33;2086:53;;;2135:1;2132;2125:12;2086:53;2158:29;2177:9;2158:29;:::i;:::-;2148:39;;2206:38;2240:2;2229:9;2225:18;2206:38;:::i;:::-;2196:48;;2291:2;2280:9;2276:18;2263:32;2253:42;;2346:2;2335:9;2331:18;2318:32;2373:18;2365:6;2362:30;2359:50;;;2405:1;2402;2395:12;2359:50;2428:22;;2481:4;2473:13;;2469:27;-1:-1:-1;2459:55:1;;2510:1;2507;2500:12;2459:55;2533:73;2598:7;2593:2;2580:16;2575:2;2571;2567:11;2533:73;:::i;:::-;2523:83;;;1946:666;;;;;;;:::o;2617:254::-;2682:6;2690;2743:2;2731:9;2722:7;2718:23;2714:32;2711:52;;;2759:1;2756;2749:12;2711:52;2782:29;2801:9;2782:29;:::i;:::-;2772:39;;2830:35;2861:2;2850:9;2846:18;2830:35;:::i;2876:254::-;2944:6;2952;3005:2;2993:9;2984:7;2980:23;2976:32;2973:52;;;3021:1;3018;3011:12;2973:52;3044:29;3063:9;3044:29;:::i;:::-;3034:39;3120:2;3105:18;;;;3092:32;;-1:-1:-1;;;2876:254:1:o;3135:180::-;3191:6;3244:2;3232:9;3223:7;3219:23;3215:32;3212:52;;;3260:1;3257;3250:12;3212:52;3283:26;3299:9;3283:26;:::i;3320:180::-;3379:6;3432:2;3420:9;3411:7;3407:23;3403:32;3400:52;;;3448:1;3445;3438:12;3400:52;-1:-1:-1;3471:23:1;;3320:180;-1:-1:-1;3320:180:1:o;3505:245::-;3563:6;3616:2;3604:9;3595:7;3591:23;3587:32;3584:52;;;3632:1;3629;3622:12;3584:52;3671:9;3658:23;3690:30;3714:5;3690:30;:::i;3755:249::-;3824:6;3877:2;3865:9;3856:7;3852:23;3848:32;3845:52;;;3893:1;3890;3883:12;3845:52;3925:9;3919:16;3944:30;3968:5;3944:30;:::i;4009:450::-;4078:6;4131:2;4119:9;4110:7;4106:23;4102:32;4099:52;;;4147:1;4144;4137:12;4099:52;4187:9;4174:23;4220:18;4212:6;4209:30;4206:50;;;4252:1;4249;4242:12;4206:50;4275:22;;4328:4;4320:13;;4316:27;-1:-1:-1;4306:55:1;;4357:1;4354;4347:12;4306:55;4380:73;4445:7;4440:2;4427:16;4422:2;4418;4414:11;4380:73;:::i;4464:184::-;4522:6;4575:2;4563:9;4554:7;4550:23;4546:32;4543:52;;;4591:1;4588;4581:12;4543:52;4614:28;4632:9;4614:28;:::i;4653:258::-;4720:6;4728;4781:2;4769:9;4760:7;4756:23;4752:32;4749:52;;;4797:1;4794;4787:12;4749:52;4820:28;4838:9;4820:28;:::i;4916:687::-;5010:6;5018;5026;5079:2;5067:9;5058:7;5054:23;5050:32;5047:52;;;5095:1;5092;5085:12;5047:52;5118:28;5136:9;5118:28;:::i;:::-;5108:38;;5197:2;5186:9;5182:18;5169:32;5220:18;5261:2;5253:6;5250:14;5247:34;;;5277:1;5274;5267:12;5247:34;5315:6;5304:9;5300:22;5290:32;;5360:7;5353:4;5349:2;5345:13;5341:27;5331:55;;5382:1;5379;5372:12;5331:55;5422:2;5409:16;5448:2;5440:6;5437:14;5434:34;;;5464:1;5461;5454:12;5434:34;5517:7;5512:2;5502:6;5499:1;5495:14;5491:2;5487:23;5483:32;5480:45;5477:65;;;5538:1;5535;5528:12;5477:65;5569:2;5565;5561:11;5551:21;;5591:6;5581:16;;;;;4916:687;;;;;:::o;5793:257::-;5834:3;5872:5;5866:12;5899:6;5894:3;5887:19;5915:63;5971:6;5964:4;5959:3;5955:14;5948:4;5941:5;5937:16;5915:63;:::i;:::-;6032:2;6011:15;-1:-1:-1;;6007:29:1;5998:39;;;;6039:4;5994:50;;5793:257;-1:-1:-1;;5793:257:1:o;6289:637::-;6569:3;6607:6;6601:13;6623:53;6669:6;6664:3;6657:4;6649:6;6645:17;6623:53;:::i;:::-;6739:13;;6698:16;;;;6761:57;6739:13;6698:16;6795:4;6783:17;;6761:57;:::i;:::-;-1:-1:-1;;;6840:20:1;;6869:22;;;6918:1;6907:13;;6289:637;-1:-1:-1;;;;6289:637:1:o;7349:488::-;-1:-1:-1;;;;;7618:15:1;;;7600:34;;7670:15;;7665:2;7650:18;;7643:43;7717:2;7702:18;;7695:34;;;7765:3;7760:2;7745:18;;7738:31;;;7543:4;;7786:45;;7811:19;;7803:6;7786:45;:::i;:::-;7778:53;7349:488;-1:-1:-1;;;;;;7349:488:1:o;8216:219::-;8365:2;8354:9;8347:21;8328:4;8385:44;8425:2;8414:9;8410:18;8402:6;8385:44;:::i;11315:354::-;11517:2;11499:21;;;11556:2;11536:18;;;11529:30;11595:32;11590:2;11575:18;;11568:60;11660:2;11645:18;;11315:354::o;12440:342::-;12642:2;12624:21;;;12681:2;12661:18;;;12654:30;-1:-1:-1;;;12715:2:1;12700:18;;12693:48;12773:2;12758:18;;12440:342::o;13194:356::-;13396:2;13378:21;;;13415:18;;;13408:30;13474:34;13469:2;13454:18;;13447:62;13541:2;13526:18;;13194:356::o;15847:415::-;16049:2;16031:21;;;16088:2;16068:18;;;16061:30;16127:34;16122:2;16107:18;;16100:62;-1:-1:-1;;;16193:2:1;16178:18;;16171:49;16252:3;16237:19;;15847:415::o;17380:346::-;17582:2;17564:21;;;17621:2;17601:18;;;17594:30;-1:-1:-1;;;17655:2:1;17640:18;;17633:52;17717:2;17702:18;;17380:346::o;21175:253::-;21215:3;-1:-1:-1;;;;;21304:2:1;21301:1;21297:10;21334:2;21331:1;21327:10;21365:3;21361:2;21357:12;21352:3;21349:21;21346:47;;;21373:18;;:::i;:::-;21409:13;;21175:253;-1:-1:-1;;;;21175:253:1:o;21433:128::-;21473:3;21504:1;21500:6;21497:1;21494:13;21491:39;;;21510:18;;:::i;:::-;-1:-1:-1;21546:9:1;;21433:128::o;21566:120::-;21606:1;21632;21622:35;;21637:18;;:::i;:::-;-1:-1:-1;21671:9:1;;21566:120::o;21691:168::-;21731:7;21797:1;21793;21789:6;21785:14;21782:1;21779:21;21774:1;21767:9;21760:17;21756:45;21753:71;;;21804:18;;:::i;:::-;-1:-1:-1;21844:9:1;;21691:168::o;21864:246::-;21904:4;-1:-1:-1;;;;;22017:10:1;;;;21987;;22039:12;;;22036:38;;;22054:18;;:::i;:::-;22091:13;;21864:246;-1:-1:-1;;;21864:246:1:o;22115:125::-;22155:4;22183:1;22180;22177:8;22174:34;;;22188:18;;:::i;:::-;-1:-1:-1;22225:9:1;;22115:125::o;22245:258::-;22317:1;22327:113;22341:6;22338:1;22335:13;22327:113;;;22417:11;;;22411:18;22398:11;;;22391:39;22363:2;22356:10;22327:113;;;22458:6;22455:1;22452:13;22449:48;;;-1:-1:-1;;22493:1:1;22475:16;;22468:27;22245:258::o;22508:136::-;22547:3;22575:5;22565:39;;22584:18;;:::i;:::-;-1:-1:-1;;;22620:18:1;;22508:136::o;22649:380::-;22728:1;22724:12;;;;22771;;;22792:61;;22846:4;22838:6;22834:17;22824:27;;22792:61;22899:2;22891:6;22888:14;22868:18;22865:38;22862:161;;;22945:10;22940:3;22936:20;22933:1;22926:31;22980:4;22977:1;22970:15;23008:4;23005:1;22998:15;22862:161;;22649:380;;;:::o;23034:135::-;23073:3;-1:-1:-1;;23094:17:1;;23091:43;;;23114:18;;:::i;:::-;-1:-1:-1;23161:1:1;23150:13;;23034:135::o;23174:112::-;23206:1;23232;23222:35;;23237:18;;:::i;:::-;-1:-1:-1;23271:9:1;;23174:112::o;23291:127::-;23352:10;23347:3;23343:20;23340:1;23333:31;23383:4;23380:1;23373:15;23407:4;23404:1;23397:15;23423:127;23484:10;23479:3;23475:20;23472:1;23465:31;23515:4;23512:1;23505:15;23539:4;23536:1;23529:15;23555:127;23616:10;23611:3;23607:20;23604:1;23597:31;23647:4;23644:1;23637:15;23671:4;23668:1;23661:15;23687:127;23748:10;23743:3;23739:20;23736:1;23729:31;23779:4;23776:1;23769:15;23803:4;23800:1;23793:15;23819:131;-1:-1:-1;;;;;;23893:32:1;;23883:43;;23873:71;;23940:1;23937;23930:12

Swarm Source

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