ETH Price: $2,512.96 (+0.59%)

Vastega: Harips (HRPS)
 

Overview

TokenID

31

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-
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:
VastegaHarips

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 5 : VastegaHarips.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.0;

import "../libs/ERC721.sol";
import "../libs/Strings.sol";
import "../libs/Owned.sol";

contract VastegaHarips is ERC721, Owned {
    using Strings for uint256;

    struct Stage {
        bool wlRequired;
        uint256 id;
        uint256 price;
        uint256 max_supply;
    }

    //// STORAGE ////

    // Metadata
    uint256 constant public MAX_SUPPLY = 5555;
    string private _baseURI = "https://vastega.io/meta/";

    // Presale
    Stage public stage;
    bool public salePaused;
    mapping(uint256 => mapping(address => bool)) public stageWlUsed; // stage.id => account => bool - one mint per stage
    address public operator;
    uint256 public supply;

    //// CONSTRUCTOR ////

    constructor(
        address operator_
    ) ERC721("Vastega: Harips", "HRPS") Owned(msg.sender) {
        operator = operator_;
    }

    //// ERC721 OVERRIDES ////

    function tokenURI(
        uint256 id_
    ) public view override returns (string memory) {
        return string.concat(_baseURI, id_.toString());
    }

    //// MINT ////

    function mint(
        address to_,
        uint256 amount_,
        bytes memory signature_
    ) public payable {

        require(!salePaused, "Vastega: Sale paused");
        require(msg.value >= stage.price*amount_, "Vastega: Wrong msg.value");
        require(supply+amount_ <= stage.max_supply, "Vastega: Stage supply overflow");

        if (stage.wlRequired) {
            require(!stageWlUsed[stage.id][to_], "Vastega: WL already used");
            stageWlUsed[stage.id][to_] = true;
            bytes memory prefix = "\x19Ethereum Signed Message:\n32";
            _verifySignature(
                keccak256(abi.encodePacked(prefix, keccak256(abi.encodePacked(to_, amount_)))),
                signature_
            );
        }

        uint256 lastId_ = supply;
        for (uint256 i = 0; i < amount_; i++) {
            lastId_ += 1;
            _mint(to_, lastId_);
        }
        supply = lastId_;
    }

    //// ONLY OWNER ////

    function setBaseURI(
        string memory baseURI_
    ) public onlyOwner {
        _baseURI = baseURI_;
    }

    function setOperator(
        address operator_
    ) public onlyOwner {
        operator = operator_;
    }

    function setStage(
        bool wlRequired_,
        uint256 id_,
        uint256 price_,
        uint256 max_supply_
    ) public onlyOwner {
        require(max_supply_ <= MAX_SUPPLY, "Vastega: stage supply exceeds MAX_SUPPLY");
        stage = Stage(wlRequired_, id_, price_, max_supply_);
    }

    function switchSalePaused() public onlyOwner {
        salePaused = !salePaused;
    }

    function withdraw() public onlyOwner {
        (bool sent,) = owner.call{value: address(this).balance}("");
        require(sent);
    }

    //// PRIVATE ////

    function _verifySignature(
        bytes32 hash,
        bytes memory signature
    ) private view {
        require(signature.length == 65, "INVALID_SIGNATURE_LENGTH");

        bytes32 r;
        bytes32 s;
        uint8 v;

        assembly {
            r := mload(add(signature, 32))
            s := mload(add(signature, 64))
            v := and(mload(add(signature, 65)), 255)
        }

        require(uint256(s) <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0, "INVALID_SIGNATURE_S_PARAMETER");
        require(v == 27 || v == 28, "INVALID_SIGNATURE_V_PARAMETER");

        require(ecrecover(hash, v, r, s) == operator, "INVALID_SIGNER");
    }

}

File 2 of 5 : Owned.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Simple single owner authorization mixin.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/Owned.sol)
abstract contract Owned {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

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

    /*//////////////////////////////////////////////////////////////
                            OWNERSHIP STORAGE
    //////////////////////////////////////////////////////////////*/

    address public owner;

    modifier onlyOwner() virtual {
        require(msg.sender == owner, "UNAUTHORIZED");

        _;
    }

    /*//////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(address _owner) {
        owner = _owner;

        emit OwnershipTransferred(address(0), _owner);
    }

    /*//////////////////////////////////////////////////////////////
                             OWNERSHIP LOGIC
    //////////////////////////////////////////////////////////////*/

    function transferOwnership(address newOwner) public virtual onlyOwner {
        owner = newOwner;

        emit OwnershipTransferred(msg.sender, newOwner);
    }
}

File 3 of 5 : Strings.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)

pragma solidity >=0.8.17;

import "./Math.sol";

/**
 * @dev String operations.
 */
library Strings {

    bytes16 private constant _SYMBOLS = "0123456789abcdef";
    uint8 private constant _ADDRESS_LENGTH = 20;

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        unchecked {
            uint256 length = Math.log10(value) + 1;
            string memory buffer = new string(length);
            uint256 ptr;
        /// @solidity memory-safe-assembly
            assembly {
                ptr := add(buffer, add(32, length))
            }
            while (true) {
                ptr--;
                /// @solidity memory-safe-assembly
                assembly {
                    mstore8(ptr, byte(mod(value, 10), _SYMBOLS))
                }
                value /= 10;
                if (value == 0) break;
            }
            return buffer;
        }
    }

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

    /**
     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.
     */
    function toHexString(address addr) internal pure returns (string memory) {
        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);
    }
}

File 4 of 5 : ERC721.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Modern, minimalist, and gas efficient ERC-721 implementation.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC721.sol)
abstract contract ERC721 {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

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

    event Approval(address indexed owner, address indexed spender, uint256 indexed id);

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

    /*//////////////////////////////////////////////////////////////
                         METADATA STORAGE/LOGIC
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;

    function tokenURI(uint256 id) public view virtual returns (string memory);

    /*//////////////////////////////////////////////////////////////
                      ERC721 BALANCE/OWNER STORAGE
    //////////////////////////////////////////////////////////////*/

    mapping(uint256 => address) internal _ownerOf;

    mapping(address => uint256) internal _balanceOf;

    function ownerOf(uint256 id) public view virtual returns (address owner) {
        require((owner = _ownerOf[id]) != address(0), "NOT_MINTED");
    }

    function balanceOf(address owner) public view virtual returns (uint256) {
        require(owner != address(0), "ZERO_ADDRESS");

        return _balanceOf[owner];
    }

    /*//////////////////////////////////////////////////////////////
                         ERC721 APPROVAL STORAGE
    //////////////////////////////////////////////////////////////*/

    mapping(uint256 => address) public getApproved;

    mapping(address => mapping(address => bool)) public isApprovedForAll;

    /*//////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(string memory _name, string memory _symbol) {
        name = _name;
        symbol = _symbol;
    }

    /*//////////////////////////////////////////////////////////////
                              ERC721 LOGIC
    //////////////////////////////////////////////////////////////*/

    function approve(address spender, uint256 id) public virtual {
        address owner = _ownerOf[id];

        require(msg.sender == owner || isApprovedForAll[owner][msg.sender], "NOT_AUTHORIZED");

        getApproved[id] = spender;

        emit Approval(owner, spender, id);
    }

    function setApprovalForAll(address operator, bool approved) public virtual {
        isApprovedForAll[msg.sender][operator] = approved;

        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function transferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual {
        require(from == _ownerOf[id], "WRONG_FROM");

        require(to != address(0), "INVALID_RECIPIENT");

        require(
            msg.sender == from || isApprovedForAll[from][msg.sender] || msg.sender == getApproved[id],
            "NOT_AUTHORIZED"
        );

        // Underflow of the sender's balance is impossible because we check for
        // ownership above and the recipient's balance can't realistically overflow.
        unchecked {
            _balanceOf[from]--;

            _balanceOf[to]++;
        }

        _ownerOf[id] = to;

        delete getApproved[id];

        emit Transfer(from, to, id);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual {
        transferFrom(from, to, id);

        require(
            to.code.length == 0 ||
            ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, "") ==
            ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        bytes calldata data
    ) public virtual {
        transferFrom(from, to, id);

        require(
            to.code.length == 0 ||
            ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, data) ==
            ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    /*//////////////////////////////////////////////////////////////
                              ERC165 LOGIC
    //////////////////////////////////////////////////////////////*/

    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165
            interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721
            interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(address to, uint256 id) internal virtual {
        require(to != address(0), "INVALID_RECIPIENT");

        require(_ownerOf[id] == address(0), "ALREADY_MINTED");

        // Counter overflow is incredibly unrealistic.
        unchecked {
            _balanceOf[to]++;
        }

        _ownerOf[id] = to;

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

    function _burn(uint256 id) internal virtual {
        address owner = _ownerOf[id];

        require(owner != address(0), "NOT_MINTED");

        // Ownership check above ensures no underflow.
        unchecked {
            _balanceOf[owner]--;
        }

        delete _ownerOf[id];

        delete getApproved[id];

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

    /*//////////////////////////////////////////////////////////////
                        INTERNAL SAFE MINT LOGIC
    //////////////////////////////////////////////////////////////*/

    function _safeMint(address to, uint256 id) internal virtual {
        _mint(to, id);

        require(
            to.code.length == 0 ||
            ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, "") ==
            ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _safeMint(
        address to,
        uint256 id,
        bytes memory data
    ) internal virtual {
        _mint(to, id);

        require(
            to.code.length == 0 ||
            ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, data) ==
            ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }
}

/// @notice A generic interface for a contract which properly accepts ERC721 tokens.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC721.sol)
abstract contract ERC721TokenReceiver {
    function onERC721Received(
        address,
        address,
        uint256,
        bytes calldata
    ) external virtual returns (bytes4) {
        return ERC721TokenReceiver.onERC721Received.selector;
    }
}

File 5 of 5 : Math.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (utils/math/Math.sol)

pragma solidity >=0.8.17;

/**
 * @dev Standard math utilities missing in the Solidity language.
 */
library Math {

    /**
     * @dev Return the log in base 10, rounded down, of a positive value.
     * Returns 0 if given 0.
     */
    function log10(uint256 value) internal pure returns (uint256) {
        uint256 result = 0;
        unchecked {
            if (value >= 10**64) {
                value /= 10**64;
                result += 64;
            }
            if (value >= 10**32) {
                value /= 10**32;
                result += 32;
            }
            if (value >= 10**16) {
                value /= 10**16;
                result += 16;
            }
            if (value >= 10**8) {
                value /= 10**8;
                result += 8;
            }
            if (value >= 10**4) {
                value /= 10**4;
                result += 4;
            }
            if (value >= 10**2) {
                value /= 10**2;
                result += 2;
            }
            if (value >= 10**1) {
                result += 1;
            }
        }
        return result;
    }

}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"operator_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","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":"user","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":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","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":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"bytes","name":"signature_","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","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":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"salePaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator_","type":"address"}],"name":"setOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"wlRequired_","type":"bool"},{"internalType":"uint256","name":"id_","type":"uint256"},{"internalType":"uint256","name":"price_","type":"uint256"},{"internalType":"uint256","name":"max_supply_","type":"uint256"}],"name":"setStage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stage","outputs":[{"internalType":"bool","name":"wlRequired","type":"bool"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"max_supply","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"stageWlUsed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"switchSalePaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id_","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526040518060400160405280601881526020017f68747470733a2f2f766173746567612e696f2f6d6574612f0000000000000000815250600790816200004a919062000455565b5034801562000057575f80fd5b5060405162003f2038038062003f2083398181016040528101906200007d91906200059e565b336040518060400160405280600f81526020017f566173746567613a2048617269707300000000000000000000000000000000008152506040518060400160405280600481526020017f4852505300000000000000000000000000000000000000000000000000000000815250815f9081620000fa919062000455565b5080600190816200010c919062000455565b5050508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620005ce565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200026d57607f821691505b60208210810362000283576200028262000228565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620002e77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620002aa565b620002f38683620002aa565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6200033d6200033762000331846200030b565b62000314565b6200030b565b9050919050565b5f819050919050565b62000358836200031d565b62000370620003678262000344565b848454620002b6565b825550505050565b5f90565b6200038662000378565b620003938184846200034d565b505050565b5b81811015620003ba57620003ae5f826200037c565b60018101905062000399565b5050565b601f8211156200040957620003d38162000289565b620003de846200029b565b81016020851015620003ee578190505b62000406620003fd856200029b565b83018262000398565b50505b505050565b5f82821c905092915050565b5f6200042b5f19846008026200040e565b1980831691505092915050565b5f6200044583836200041a565b9150826002028217905092915050565b6200046082620001f1565b67ffffffffffffffff8111156200047c576200047b620001fb565b5b62000488825462000255565b62000495828285620003be565b5f60209050601f831160018114620004cb575f8415620004b6578287015190505b620004c2858262000438565b86555062000531565b601f198416620004db8662000289565b5f5b828110156200050457848901518255600182019150602085019450602081019050620004dd565b8683101562000524578489015162000520601f8916826200041a565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000568826200053d565b9050919050565b6200057a816200055c565b811462000585575f80fd5b50565b5f8151905062000598816200056f565b92915050565b5f60208284031215620005b657620005b562000539565b5b5f620005c58482850162000588565b91505092915050565b61394480620005dc5f395ff3fe60806040526004361061019b575f3560e01c806370a08231116100eb578063b3ab15fb11610089578063c87b56dd11610063578063c87b56dd1461056a578063e985e9c5146105a6578063eaf664a3146105e2578063f2fde38b1461061e5761019b565b8063b3ab15fb146104ed578063b88d4fde14610515578063c040e6b81461053d5761019b565b806395d89b41116100c557806395d89b411461045d5780639990710a146104875780639f99277a1461049d578063a22cb465146104c55761019b565b806370a08231146103db5780638da5cb5b1461041757806394d008ef146104415761019b565b806332cb6b0c1161015857806355f804b31161013257806355f804b314610323578063570ca7351461034b5780635d08c1ae146103755780636352211e1461039f5761019b565b806332cb6b0c146102bb5780633ccfd60b146102e557806342842e0e146102fb5761019b565b806301ffc9a71461019f578063047fc9aa146101db57806306fdde0314610205578063081812fc1461022f578063095ea7b31461026b57806323b872dd14610293575b5f80fd5b3480156101aa575f80fd5b506101c560048036038101906101c091906122e3565b610646565b6040516101d29190612328565b60405180910390f35b3480156101e6575f80fd5b506101ef6106d7565b6040516101fc9190612359565b60405180910390f35b348015610210575f80fd5b506102196106dd565b60405161022691906123fc565b60405180910390f35b34801561023a575f80fd5b5061025560048036038101906102509190612446565b610768565b60405161026291906124b0565b60405180910390f35b348015610276575f80fd5b50610291600480360381019061028c91906124f3565b610798565b005b34801561029e575f80fd5b506102b960048036038101906102b49190612531565b610975565b005b3480156102c6575f80fd5b506102cf610d5c565b6040516102dc9190612359565b60405180910390f35b3480156102f0575f80fd5b506102f9610d62565b005b348015610306575f80fd5b50610321600480360381019061031c9190612531565b610e86565b005b34801561032e575f80fd5b50610349600480360381019061034491906126ad565b610fba565b005b348015610356575f80fd5b5061035f61105c565b60405161036c91906124b0565b60405180910390f35b348015610380575f80fd5b50610389611081565b6040516103969190612328565b60405180910390f35b3480156103aa575f80fd5b506103c560048036038101906103c09190612446565b611093565b6040516103d291906124b0565b60405180910390f35b3480156103e6575f80fd5b5061040160048036038101906103fc91906126f4565b61113a565b60405161040e9190612359565b60405180910390f35b348015610422575f80fd5b5061042b6111ee565b60405161043891906124b0565b60405180910390f35b61045b600480360381019061045691906127bd565b611213565b005b348015610468575f80fd5b50610471611500565b60405161047e91906123fc565b60405180910390f35b348015610492575f80fd5b5061049b61158c565b005b3480156104a8575f80fd5b506104c360048036038101906104be9190612853565b611645565b005b3480156104d0575f80fd5b506104eb60048036038101906104e691906128b7565b611782565b005b3480156104f8575f80fd5b50610513600480360381019061050e91906126f4565b61187a565b005b348015610520575f80fd5b5061053b60048036038101906105369190612952565b61194c565b005b348015610548575f80fd5b50610551611a86565b60405161056194939291906129d6565b60405180910390f35b348015610575575f80fd5b50610590600480360381019061058b9190612446565b611aaf565b60405161059d91906123fc565b60405180910390f35b3480156105b1575f80fd5b506105cc60048036038101906105c79190612a19565b611ae3565b6040516105d99190612328565b60405180910390f35b3480156105ed575f80fd5b5061060860048036038101906106039190612a57565b611b0d565b6040516106159190612328565b60405180910390f35b348015610629575f80fd5b50610644600480360381019061063f91906126f4565b611b37565b005b5f6301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106a057506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106d05750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600f5481565b5f80546106e990612ac2565b80601f016020809104026020016040519081016040528092919081815260200182805461071590612ac2565b80156107605780601f1061073757610100808354040283529160200191610760565b820191905f5260205f20905b81548152906001019060200180831161074357829003601f168201915b505050505081565b6004602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610887575060055f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6108c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bd90612b3c565b60405180910390fd5b8260045f8481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60025f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0a90612ba4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7890612c0c565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610b3c575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80610ba2575060045f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd890612b3c565b60405180910390fd5b60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548092919060019003919050555060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548092919060010191905055508160025f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060045f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6115b381565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610df1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de890612c74565b60405180910390fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610e3790612cbf565b5f6040518083038185875af1925050503d805f8114610e71576040519150601f19603f3d011682016040523d82523d5f602084013e610e76565b606091505b5050905080610e83575f80fd5b50565b610e91838383610975565b5f8273ffffffffffffffffffffffffffffffffffffffff163b1480610f76575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b8152600401610f1593929190612d03565b6020604051808303815f875af1158015610f31573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f559190612d5f565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b610fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fac90612dd4565b60405180910390fd5b505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104090612c74565b60405180910390fd5b80600790816110589190612f8f565b5050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5f9054906101000a900460ff1681565b5f8073ffffffffffffffffffffffffffffffffffffffff1660025f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff1603611135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112c906130a8565b60405180910390fd5b919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a090613110565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5f9054906101000a900460ff1615611262576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125990613178565b60405180910390fd5b8160086002015461127391906131c3565b3410156112b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ac9061324e565b60405180910390fd5b60086003015482600f546112c9919061326c565b111561130a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611301906132e9565b60405180910390fd5b60085f015f9054906101000a900460ff16156114bc57600d5f60086001015481526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156113be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b590613351565b60405180910390fd5b6001600d5f60086001015481526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f6040518060400160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a33320000000081525090506114ba8185856040516020016114779291906133d4565b6040516020818303038152906040528051906020012060405160200161149e929190613462565b6040516020818303038152906040528051906020012083611c63565b505b5f600f5490505f5b838110156114f2576001826114d9919061326c565b91506114e58583611e5c565b80806001019150506114c4565b5080600f8190555050505050565b6001805461150d90612ac2565b80601f016020809104026020016040519081016040528092919081815260200182805461153990612ac2565b80156115845780601f1061155b57610100808354040283529160200191611584565b820191905f5260205f20905b81548152906001019060200180831161156757829003601f168201915b505050505081565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461161b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161290612c74565b60405180910390fd5b600c5f9054906101000a900460ff1615600c5f6101000a81548160ff021916908315150217905550565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cb90612c74565b60405180910390fd5b6115b3811115611719576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611710906134f9565b60405180910390fd5b604051806080016040528085151581526020018481526020018381526020018281525060085f820151815f015f6101000a81548160ff02191690831515021790555060208201518160010155604082015181600201556060820151816003015590505050505050565b8060055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161186e9190612328565b60405180910390a35050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190090612c74565b60405180910390fd5b80600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611957858585610975565b5f8473ffffffffffffffffffffffffffffffffffffffff163b1480611a40575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b81526004016119df959493929190613543565b6020604051808303815f875af11580156119fb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a1f9190612d5f565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b611a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7690612dd4565b60405180910390fd5b5050505050565b6008805f015f9054906101000a900460ff16908060010154908060020154908060030154905084565b60606007611abc83612062565b604051602001611acd929190613649565b6040516020818303038152906040529050919050565b6005602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b600d602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbd90612c74565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6041815114611ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9e906136b6565b60405180910390fd5b5f805f602084015192506040840151915060ff60418501511690507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0825f1c1115611d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1e9061371e565b60405180910390fd5b601b8160ff161480611d3c5750601c8160ff16145b611d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7290613786565b60405180910390fd5b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166001868386866040515f8152602001604052604051611dd594939291906137ce565b6020604051602081039080840390855afa158015611df5573d5f803e3d5ffd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff1614611e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4c9061385b565b60405180910390fd5b5050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec190612c0c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5f906138c3565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548092919060010191905055508160025f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60605f60016120708461212c565b0190505f8167ffffffffffffffff81111561208e5761208d612589565b5b6040519080825280601f01601f1916602001820160405280156120c05781602001600182028036833780820191505090505b5090505f82602001820190505b600115612121578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581612116576121156138e1565b5b0494505f85036120cd575b819350505050919050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612188577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161217e5761217d6138e1565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106121c5576d04ee2d6d415b85acef810000000083816121bb576121ba6138e1565b5b0492506020810190505b662386f26fc1000083106121f457662386f26fc1000083816121ea576121e96138e1565b5b0492506010810190505b6305f5e100831061221d576305f5e1008381612213576122126138e1565b5b0492506008810190505b6127108310612242576127108381612238576122376138e1565b5b0492506004810190505b60648310612265576064838161225b5761225a6138e1565b5b0492506002810190505b600a8310612274576001810190505b80915050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6122c28161228e565b81146122cc575f80fd5b50565b5f813590506122dd816122b9565b92915050565b5f602082840312156122f8576122f7612286565b5b5f612305848285016122cf565b91505092915050565b5f8115159050919050565b6123228161230e565b82525050565b5f60208201905061233b5f830184612319565b92915050565b5f819050919050565b61235381612341565b82525050565b5f60208201905061236c5f83018461234a565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156123a957808201518184015260208101905061238e565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6123ce82612372565b6123d8818561237c565b93506123e881856020860161238c565b6123f1816123b4565b840191505092915050565b5f6020820190508181035f83015261241481846123c4565b905092915050565b61242581612341565b811461242f575f80fd5b50565b5f813590506124408161241c565b92915050565b5f6020828403121561245b5761245a612286565b5b5f61246884828501612432565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61249a82612471565b9050919050565b6124aa81612490565b82525050565b5f6020820190506124c35f8301846124a1565b92915050565b6124d281612490565b81146124dc575f80fd5b50565b5f813590506124ed816124c9565b92915050565b5f806040838503121561250957612508612286565b5b5f612516858286016124df565b925050602061252785828601612432565b9150509250929050565b5f805f6060848603121561254857612547612286565b5b5f612555868287016124df565b9350506020612566868287016124df565b925050604061257786828701612432565b9150509250925092565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6125bf826123b4565b810181811067ffffffffffffffff821117156125de576125dd612589565b5b80604052505050565b5f6125f061227d565b90506125fc82826125b6565b919050565b5f67ffffffffffffffff82111561261b5761261a612589565b5b612624826123b4565b9050602081019050919050565b828183375f83830152505050565b5f61265161264c84612601565b6125e7565b90508281526020810184848401111561266d5761266c612585565b5b612678848285612631565b509392505050565b5f82601f83011261269457612693612581565b5b81356126a484826020860161263f565b91505092915050565b5f602082840312156126c2576126c1612286565b5b5f82013567ffffffffffffffff8111156126df576126de61228a565b5b6126eb84828501612680565b91505092915050565b5f6020828403121561270957612708612286565b5b5f612716848285016124df565b91505092915050565b5f67ffffffffffffffff82111561273957612738612589565b5b612742826123b4565b9050602081019050919050565b5f61276161275c8461271f565b6125e7565b90508281526020810184848401111561277d5761277c612585565b5b612788848285612631565b509392505050565b5f82601f8301126127a4576127a3612581565b5b81356127b484826020860161274f565b91505092915050565b5f805f606084860312156127d4576127d3612286565b5b5f6127e1868287016124df565b93505060206127f286828701612432565b925050604084013567ffffffffffffffff8111156128135761281261228a565b5b61281f86828701612790565b9150509250925092565b6128328161230e565b811461283c575f80fd5b50565b5f8135905061284d81612829565b92915050565b5f805f806080858703121561286b5761286a612286565b5b5f6128788782880161283f565b945050602061288987828801612432565b935050604061289a87828801612432565b92505060606128ab87828801612432565b91505092959194509250565b5f80604083850312156128cd576128cc612286565b5b5f6128da858286016124df565b92505060206128eb8582860161283f565b9150509250929050565b5f80fd5b5f80fd5b5f8083601f84011261291257612911612581565b5b8235905067ffffffffffffffff81111561292f5761292e6128f5565b5b60208301915083600182028301111561294b5761294a6128f9565b5b9250929050565b5f805f805f6080868803121561296b5761296a612286565b5b5f612978888289016124df565b9550506020612989888289016124df565b945050604061299a88828901612432565b935050606086013567ffffffffffffffff8111156129bb576129ba61228a565b5b6129c7888289016128fd565b92509250509295509295909350565b5f6080820190506129e95f830187612319565b6129f6602083018661234a565b612a03604083018561234a565b612a10606083018461234a565b95945050505050565b5f8060408385031215612a2f57612a2e612286565b5b5f612a3c858286016124df565b9250506020612a4d858286016124df565b9150509250929050565b5f8060408385031215612a6d57612a6c612286565b5b5f612a7a85828601612432565b9250506020612a8b858286016124df565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612ad957607f821691505b602082108103612aec57612aeb612a95565b5b50919050565b7f4e4f545f415554484f52495a45440000000000000000000000000000000000005f82015250565b5f612b26600e8361237c565b9150612b3182612af2565b602082019050919050565b5f6020820190508181035f830152612b5381612b1a565b9050919050565b7f57524f4e475f46524f4d000000000000000000000000000000000000000000005f82015250565b5f612b8e600a8361237c565b9150612b9982612b5a565b602082019050919050565b5f6020820190508181035f830152612bbb81612b82565b9050919050565b7f494e56414c49445f524543495049454e540000000000000000000000000000005f82015250565b5f612bf660118361237c565b9150612c0182612bc2565b602082019050919050565b5f6020820190508181035f830152612c2381612bea565b9050919050565b7f554e415554484f52495a454400000000000000000000000000000000000000005f82015250565b5f612c5e600c8361237c565b9150612c6982612c2a565b602082019050919050565b5f6020820190508181035f830152612c8b81612c52565b9050919050565b5f81905092915050565b50565b5f612caa5f83612c92565b9150612cb582612c9c565b5f82019050919050565b5f612cc982612c9f565b9150819050919050565b5f82825260208201905092915050565b5f612cee5f83612cd3565b9150612cf982612c9c565b5f82019050919050565b5f608082019050612d165f8301866124a1565b612d2360208301856124a1565b612d30604083018461234a565b8181036060830152612d4181612ce3565b9050949350505050565b5f81519050612d59816122b9565b92915050565b5f60208284031215612d7457612d73612286565b5b5f612d8184828501612d4b565b91505092915050565b7f554e534146455f524543495049454e54000000000000000000000000000000005f82015250565b5f612dbe60108361237c565b9150612dc982612d8a565b602082019050919050565b5f6020820190508181035f830152612deb81612db2565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302612e4e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612e13565b612e588683612e13565b95508019841693508086168417925050509392505050565b5f819050919050565b5f612e93612e8e612e8984612341565b612e70565b612341565b9050919050565b5f819050919050565b612eac83612e79565b612ec0612eb882612e9a565b848454612e1f565b825550505050565b5f90565b612ed4612ec8565b612edf818484612ea3565b505050565b5b81811015612f0257612ef75f82612ecc565b600181019050612ee5565b5050565b601f821115612f4757612f1881612df2565b612f2184612e04565b81016020851015612f30578190505b612f44612f3c85612e04565b830182612ee4565b50505b505050565b5f82821c905092915050565b5f612f675f1984600802612f4c565b1980831691505092915050565b5f612f7f8383612f58565b9150826002028217905092915050565b612f9882612372565b67ffffffffffffffff811115612fb157612fb0612589565b5b612fbb8254612ac2565b612fc6828285612f06565b5f60209050601f831160018114612ff7575f8415612fe5578287015190505b612fef8582612f74565b865550613056565b601f19841661300586612df2565b5f5b8281101561302c57848901518255600182019150602085019450602081019050613007565b868310156130495784890151613045601f891682612f58565b8355505b6001600288020188555050505b505050505050565b7f4e4f545f4d494e544544000000000000000000000000000000000000000000005f82015250565b5f613092600a8361237c565b915061309d8261305e565b602082019050919050565b5f6020820190508181035f8301526130bf81613086565b9050919050565b7f5a45524f5f4144445245535300000000000000000000000000000000000000005f82015250565b5f6130fa600c8361237c565b9150613105826130c6565b602082019050919050565b5f6020820190508181035f830152613127816130ee565b9050919050565b7f566173746567613a2053616c65207061757365640000000000000000000000005f82015250565b5f61316260148361237c565b915061316d8261312e565b602082019050919050565b5f6020820190508181035f83015261318f81613156565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6131cd82612341565b91506131d883612341565b92508282026131e681612341565b915082820484148315176131fd576131fc613196565b5b5092915050565b7f566173746567613a2057726f6e67206d73672e76616c756500000000000000005f82015250565b5f61323860188361237c565b915061324382613204565b602082019050919050565b5f6020820190508181035f8301526132658161322c565b9050919050565b5f61327682612341565b915061328183612341565b925082820190508082111561329957613298613196565b5b92915050565b7f566173746567613a20537461676520737570706c79206f766572666c6f7700005f82015250565b5f6132d3601e8361237c565b91506132de8261329f565b602082019050919050565b5f6020820190508181035f830152613300816132c7565b9050919050565b7f566173746567613a20574c20616c7265616479207573656400000000000000005f82015250565b5f61333b60188361237c565b915061334682613307565b602082019050919050565b5f6020820190508181035f8301526133688161332f565b9050919050565b5f8160601b9050919050565b5f6133858261336f565b9050919050565b5f6133968261337b565b9050919050565b6133ae6133a982612490565b61338c565b82525050565b5f819050919050565b6133ce6133c982612341565b6133b4565b82525050565b5f6133df828561339d565b6014820191506133ef82846133bd565b6020820191508190509392505050565b5f81519050919050565b5f613413826133ff565b61341d8185612c92565b935061342d81856020860161238c565b80840191505092915050565b5f819050919050565b5f819050919050565b61345c61345782613439565b613442565b82525050565b5f61346d8285613409565b9150613479828461344b565b6020820191508190509392505050565b7f566173746567613a20737461676520737570706c792065786365656473204d415f8201527f585f535550504c59000000000000000000000000000000000000000000000000602082015250565b5f6134e360288361237c565b91506134ee82613489565b604082019050919050565b5f6020820190508181035f830152613510816134d7565b9050919050565b5f6135228385612cd3565b935061352f838584612631565b613538836123b4565b840190509392505050565b5f6080820190506135565f8301886124a1565b61356360208301876124a1565b613570604083018661234a565b8181036060830152613583818486613517565b90509695505050505050565b5f81905092915050565b5f81546135a581612ac2565b6135af818661358f565b9450600182165f81146135c957600181146135de57613610565b60ff1983168652811515820286019350613610565b6135e785612df2565b5f5b83811015613608578154818901526001820191506020810190506135e9565b838801955050505b50505092915050565b5f61362382612372565b61362d818561358f565b935061363d81856020860161238c565b80840191505092915050565b5f6136548285613599565b91506136608284613619565b91508190509392505050565b7f494e56414c49445f5349474e41545552455f4c454e47544800000000000000005f82015250565b5f6136a060188361237c565b91506136ab8261366c565b602082019050919050565b5f6020820190508181035f8301526136cd81613694565b9050919050565b7f494e56414c49445f5349474e41545552455f535f504152414d455445520000005f82015250565b5f613708601d8361237c565b9150613713826136d4565b602082019050919050565b5f6020820190508181035f830152613735816136fc565b9050919050565b7f494e56414c49445f5349474e41545552455f565f504152414d455445520000005f82015250565b5f613770601d8361237c565b915061377b8261373c565b602082019050919050565b5f6020820190508181035f83015261379d81613764565b9050919050565b6137ad81613439565b82525050565b5f60ff82169050919050565b6137c8816137b3565b82525050565b5f6080820190506137e15f8301876137a4565b6137ee60208301866137bf565b6137fb60408301856137a4565b61380860608301846137a4565b95945050505050565b7f494e56414c49445f5349474e45520000000000000000000000000000000000005f82015250565b5f613845600e8361237c565b915061385082613811565b602082019050919050565b5f6020820190508181035f83015261387281613839565b9050919050565b7f414c52454144595f4d494e5445440000000000000000000000000000000000005f82015250565b5f6138ad600e8361237c565b91506138b882613879565b602082019050919050565b5f6020820190508181035f8301526138da816138a1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffdfea2646970667358221220679c4b9a1af34e47e57fa6f5c8fdde26ab223aeef95033a806610901b9f8a49964736f6c63430008160033000000000000000000000000c4215f9292cf36bee6d126e16628620c57141ccf

Deployed Bytecode

0x60806040526004361061019b575f3560e01c806370a08231116100eb578063b3ab15fb11610089578063c87b56dd11610063578063c87b56dd1461056a578063e985e9c5146105a6578063eaf664a3146105e2578063f2fde38b1461061e5761019b565b8063b3ab15fb146104ed578063b88d4fde14610515578063c040e6b81461053d5761019b565b806395d89b41116100c557806395d89b411461045d5780639990710a146104875780639f99277a1461049d578063a22cb465146104c55761019b565b806370a08231146103db5780638da5cb5b1461041757806394d008ef146104415761019b565b806332cb6b0c1161015857806355f804b31161013257806355f804b314610323578063570ca7351461034b5780635d08c1ae146103755780636352211e1461039f5761019b565b806332cb6b0c146102bb5780633ccfd60b146102e557806342842e0e146102fb5761019b565b806301ffc9a71461019f578063047fc9aa146101db57806306fdde0314610205578063081812fc1461022f578063095ea7b31461026b57806323b872dd14610293575b5f80fd5b3480156101aa575f80fd5b506101c560048036038101906101c091906122e3565b610646565b6040516101d29190612328565b60405180910390f35b3480156101e6575f80fd5b506101ef6106d7565b6040516101fc9190612359565b60405180910390f35b348015610210575f80fd5b506102196106dd565b60405161022691906123fc565b60405180910390f35b34801561023a575f80fd5b5061025560048036038101906102509190612446565b610768565b60405161026291906124b0565b60405180910390f35b348015610276575f80fd5b50610291600480360381019061028c91906124f3565b610798565b005b34801561029e575f80fd5b506102b960048036038101906102b49190612531565b610975565b005b3480156102c6575f80fd5b506102cf610d5c565b6040516102dc9190612359565b60405180910390f35b3480156102f0575f80fd5b506102f9610d62565b005b348015610306575f80fd5b50610321600480360381019061031c9190612531565b610e86565b005b34801561032e575f80fd5b50610349600480360381019061034491906126ad565b610fba565b005b348015610356575f80fd5b5061035f61105c565b60405161036c91906124b0565b60405180910390f35b348015610380575f80fd5b50610389611081565b6040516103969190612328565b60405180910390f35b3480156103aa575f80fd5b506103c560048036038101906103c09190612446565b611093565b6040516103d291906124b0565b60405180910390f35b3480156103e6575f80fd5b5061040160048036038101906103fc91906126f4565b61113a565b60405161040e9190612359565b60405180910390f35b348015610422575f80fd5b5061042b6111ee565b60405161043891906124b0565b60405180910390f35b61045b600480360381019061045691906127bd565b611213565b005b348015610468575f80fd5b50610471611500565b60405161047e91906123fc565b60405180910390f35b348015610492575f80fd5b5061049b61158c565b005b3480156104a8575f80fd5b506104c360048036038101906104be9190612853565b611645565b005b3480156104d0575f80fd5b506104eb60048036038101906104e691906128b7565b611782565b005b3480156104f8575f80fd5b50610513600480360381019061050e91906126f4565b61187a565b005b348015610520575f80fd5b5061053b60048036038101906105369190612952565b61194c565b005b348015610548575f80fd5b50610551611a86565b60405161056194939291906129d6565b60405180910390f35b348015610575575f80fd5b50610590600480360381019061058b9190612446565b611aaf565b60405161059d91906123fc565b60405180910390f35b3480156105b1575f80fd5b506105cc60048036038101906105c79190612a19565b611ae3565b6040516105d99190612328565b60405180910390f35b3480156105ed575f80fd5b5061060860048036038101906106039190612a57565b611b0d565b6040516106159190612328565b60405180910390f35b348015610629575f80fd5b50610644600480360381019061063f91906126f4565b611b37565b005b5f6301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106a057506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106d05750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600f5481565b5f80546106e990612ac2565b80601f016020809104026020016040519081016040528092919081815260200182805461071590612ac2565b80156107605780601f1061073757610100808354040283529160200191610760565b820191905f5260205f20905b81548152906001019060200180831161074357829003601f168201915b505050505081565b6004602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610887575060055f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6108c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bd90612b3c565b60405180910390fd5b8260045f8481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60025f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0a90612ba4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7890612c0c565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610b3c575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80610ba2575060045f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd890612b3c565b60405180910390fd5b60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548092919060019003919050555060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548092919060010191905055508160025f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060045f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6115b381565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610df1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de890612c74565b60405180910390fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610e3790612cbf565b5f6040518083038185875af1925050503d805f8114610e71576040519150601f19603f3d011682016040523d82523d5f602084013e610e76565b606091505b5050905080610e83575f80fd5b50565b610e91838383610975565b5f8273ffffffffffffffffffffffffffffffffffffffff163b1480610f76575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b8152600401610f1593929190612d03565b6020604051808303815f875af1158015610f31573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f559190612d5f565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b610fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fac90612dd4565b60405180910390fd5b505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104090612c74565b60405180910390fd5b80600790816110589190612f8f565b5050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5f9054906101000a900460ff1681565b5f8073ffffffffffffffffffffffffffffffffffffffff1660025f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff1603611135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112c906130a8565b60405180910390fd5b919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a090613110565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5f9054906101000a900460ff1615611262576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125990613178565b60405180910390fd5b8160086002015461127391906131c3565b3410156112b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ac9061324e565b60405180910390fd5b60086003015482600f546112c9919061326c565b111561130a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611301906132e9565b60405180910390fd5b60085f015f9054906101000a900460ff16156114bc57600d5f60086001015481526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156113be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b590613351565b60405180910390fd5b6001600d5f60086001015481526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f6040518060400160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a33320000000081525090506114ba8185856040516020016114779291906133d4565b6040516020818303038152906040528051906020012060405160200161149e929190613462565b6040516020818303038152906040528051906020012083611c63565b505b5f600f5490505f5b838110156114f2576001826114d9919061326c565b91506114e58583611e5c565b80806001019150506114c4565b5080600f8190555050505050565b6001805461150d90612ac2565b80601f016020809104026020016040519081016040528092919081815260200182805461153990612ac2565b80156115845780601f1061155b57610100808354040283529160200191611584565b820191905f5260205f20905b81548152906001019060200180831161156757829003601f168201915b505050505081565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461161b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161290612c74565b60405180910390fd5b600c5f9054906101000a900460ff1615600c5f6101000a81548160ff021916908315150217905550565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cb90612c74565b60405180910390fd5b6115b3811115611719576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611710906134f9565b60405180910390fd5b604051806080016040528085151581526020018481526020018381526020018281525060085f820151815f015f6101000a81548160ff02191690831515021790555060208201518160010155604082015181600201556060820151816003015590505050505050565b8060055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161186e9190612328565b60405180910390a35050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190090612c74565b60405180910390fd5b80600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611957858585610975565b5f8473ffffffffffffffffffffffffffffffffffffffff163b1480611a40575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b81526004016119df959493929190613543565b6020604051808303815f875af11580156119fb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a1f9190612d5f565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b611a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7690612dd4565b60405180910390fd5b5050505050565b6008805f015f9054906101000a900460ff16908060010154908060020154908060030154905084565b60606007611abc83612062565b604051602001611acd929190613649565b6040516020818303038152906040529050919050565b6005602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b600d602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbd90612c74565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6041815114611ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9e906136b6565b60405180910390fd5b5f805f602084015192506040840151915060ff60418501511690507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0825f1c1115611d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1e9061371e565b60405180910390fd5b601b8160ff161480611d3c5750601c8160ff16145b611d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7290613786565b60405180910390fd5b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166001868386866040515f8152602001604052604051611dd594939291906137ce565b6020604051602081039080840390855afa158015611df5573d5f803e3d5ffd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff1614611e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4c9061385b565b60405180910390fd5b5050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec190612c0c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5f906138c3565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548092919060010191905055508160025f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60605f60016120708461212c565b0190505f8167ffffffffffffffff81111561208e5761208d612589565b5b6040519080825280601f01601f1916602001820160405280156120c05781602001600182028036833780820191505090505b5090505f82602001820190505b600115612121578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581612116576121156138e1565b5b0494505f85036120cd575b819350505050919050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612188577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161217e5761217d6138e1565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106121c5576d04ee2d6d415b85acef810000000083816121bb576121ba6138e1565b5b0492506020810190505b662386f26fc1000083106121f457662386f26fc1000083816121ea576121e96138e1565b5b0492506010810190505b6305f5e100831061221d576305f5e1008381612213576122126138e1565b5b0492506008810190505b6127108310612242576127108381612238576122376138e1565b5b0492506004810190505b60648310612265576064838161225b5761225a6138e1565b5b0492506002810190505b600a8310612274576001810190505b80915050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6122c28161228e565b81146122cc575f80fd5b50565b5f813590506122dd816122b9565b92915050565b5f602082840312156122f8576122f7612286565b5b5f612305848285016122cf565b91505092915050565b5f8115159050919050565b6123228161230e565b82525050565b5f60208201905061233b5f830184612319565b92915050565b5f819050919050565b61235381612341565b82525050565b5f60208201905061236c5f83018461234a565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156123a957808201518184015260208101905061238e565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6123ce82612372565b6123d8818561237c565b93506123e881856020860161238c565b6123f1816123b4565b840191505092915050565b5f6020820190508181035f83015261241481846123c4565b905092915050565b61242581612341565b811461242f575f80fd5b50565b5f813590506124408161241c565b92915050565b5f6020828403121561245b5761245a612286565b5b5f61246884828501612432565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61249a82612471565b9050919050565b6124aa81612490565b82525050565b5f6020820190506124c35f8301846124a1565b92915050565b6124d281612490565b81146124dc575f80fd5b50565b5f813590506124ed816124c9565b92915050565b5f806040838503121561250957612508612286565b5b5f612516858286016124df565b925050602061252785828601612432565b9150509250929050565b5f805f6060848603121561254857612547612286565b5b5f612555868287016124df565b9350506020612566868287016124df565b925050604061257786828701612432565b9150509250925092565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6125bf826123b4565b810181811067ffffffffffffffff821117156125de576125dd612589565b5b80604052505050565b5f6125f061227d565b90506125fc82826125b6565b919050565b5f67ffffffffffffffff82111561261b5761261a612589565b5b612624826123b4565b9050602081019050919050565b828183375f83830152505050565b5f61265161264c84612601565b6125e7565b90508281526020810184848401111561266d5761266c612585565b5b612678848285612631565b509392505050565b5f82601f83011261269457612693612581565b5b81356126a484826020860161263f565b91505092915050565b5f602082840312156126c2576126c1612286565b5b5f82013567ffffffffffffffff8111156126df576126de61228a565b5b6126eb84828501612680565b91505092915050565b5f6020828403121561270957612708612286565b5b5f612716848285016124df565b91505092915050565b5f67ffffffffffffffff82111561273957612738612589565b5b612742826123b4565b9050602081019050919050565b5f61276161275c8461271f565b6125e7565b90508281526020810184848401111561277d5761277c612585565b5b612788848285612631565b509392505050565b5f82601f8301126127a4576127a3612581565b5b81356127b484826020860161274f565b91505092915050565b5f805f606084860312156127d4576127d3612286565b5b5f6127e1868287016124df565b93505060206127f286828701612432565b925050604084013567ffffffffffffffff8111156128135761281261228a565b5b61281f86828701612790565b9150509250925092565b6128328161230e565b811461283c575f80fd5b50565b5f8135905061284d81612829565b92915050565b5f805f806080858703121561286b5761286a612286565b5b5f6128788782880161283f565b945050602061288987828801612432565b935050604061289a87828801612432565b92505060606128ab87828801612432565b91505092959194509250565b5f80604083850312156128cd576128cc612286565b5b5f6128da858286016124df565b92505060206128eb8582860161283f565b9150509250929050565b5f80fd5b5f80fd5b5f8083601f84011261291257612911612581565b5b8235905067ffffffffffffffff81111561292f5761292e6128f5565b5b60208301915083600182028301111561294b5761294a6128f9565b5b9250929050565b5f805f805f6080868803121561296b5761296a612286565b5b5f612978888289016124df565b9550506020612989888289016124df565b945050604061299a88828901612432565b935050606086013567ffffffffffffffff8111156129bb576129ba61228a565b5b6129c7888289016128fd565b92509250509295509295909350565b5f6080820190506129e95f830187612319565b6129f6602083018661234a565b612a03604083018561234a565b612a10606083018461234a565b95945050505050565b5f8060408385031215612a2f57612a2e612286565b5b5f612a3c858286016124df565b9250506020612a4d858286016124df565b9150509250929050565b5f8060408385031215612a6d57612a6c612286565b5b5f612a7a85828601612432565b9250506020612a8b858286016124df565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612ad957607f821691505b602082108103612aec57612aeb612a95565b5b50919050565b7f4e4f545f415554484f52495a45440000000000000000000000000000000000005f82015250565b5f612b26600e8361237c565b9150612b3182612af2565b602082019050919050565b5f6020820190508181035f830152612b5381612b1a565b9050919050565b7f57524f4e475f46524f4d000000000000000000000000000000000000000000005f82015250565b5f612b8e600a8361237c565b9150612b9982612b5a565b602082019050919050565b5f6020820190508181035f830152612bbb81612b82565b9050919050565b7f494e56414c49445f524543495049454e540000000000000000000000000000005f82015250565b5f612bf660118361237c565b9150612c0182612bc2565b602082019050919050565b5f6020820190508181035f830152612c2381612bea565b9050919050565b7f554e415554484f52495a454400000000000000000000000000000000000000005f82015250565b5f612c5e600c8361237c565b9150612c6982612c2a565b602082019050919050565b5f6020820190508181035f830152612c8b81612c52565b9050919050565b5f81905092915050565b50565b5f612caa5f83612c92565b9150612cb582612c9c565b5f82019050919050565b5f612cc982612c9f565b9150819050919050565b5f82825260208201905092915050565b5f612cee5f83612cd3565b9150612cf982612c9c565b5f82019050919050565b5f608082019050612d165f8301866124a1565b612d2360208301856124a1565b612d30604083018461234a565b8181036060830152612d4181612ce3565b9050949350505050565b5f81519050612d59816122b9565b92915050565b5f60208284031215612d7457612d73612286565b5b5f612d8184828501612d4b565b91505092915050565b7f554e534146455f524543495049454e54000000000000000000000000000000005f82015250565b5f612dbe60108361237c565b9150612dc982612d8a565b602082019050919050565b5f6020820190508181035f830152612deb81612db2565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302612e4e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612e13565b612e588683612e13565b95508019841693508086168417925050509392505050565b5f819050919050565b5f612e93612e8e612e8984612341565b612e70565b612341565b9050919050565b5f819050919050565b612eac83612e79565b612ec0612eb882612e9a565b848454612e1f565b825550505050565b5f90565b612ed4612ec8565b612edf818484612ea3565b505050565b5b81811015612f0257612ef75f82612ecc565b600181019050612ee5565b5050565b601f821115612f4757612f1881612df2565b612f2184612e04565b81016020851015612f30578190505b612f44612f3c85612e04565b830182612ee4565b50505b505050565b5f82821c905092915050565b5f612f675f1984600802612f4c565b1980831691505092915050565b5f612f7f8383612f58565b9150826002028217905092915050565b612f9882612372565b67ffffffffffffffff811115612fb157612fb0612589565b5b612fbb8254612ac2565b612fc6828285612f06565b5f60209050601f831160018114612ff7575f8415612fe5578287015190505b612fef8582612f74565b865550613056565b601f19841661300586612df2565b5f5b8281101561302c57848901518255600182019150602085019450602081019050613007565b868310156130495784890151613045601f891682612f58565b8355505b6001600288020188555050505b505050505050565b7f4e4f545f4d494e544544000000000000000000000000000000000000000000005f82015250565b5f613092600a8361237c565b915061309d8261305e565b602082019050919050565b5f6020820190508181035f8301526130bf81613086565b9050919050565b7f5a45524f5f4144445245535300000000000000000000000000000000000000005f82015250565b5f6130fa600c8361237c565b9150613105826130c6565b602082019050919050565b5f6020820190508181035f830152613127816130ee565b9050919050565b7f566173746567613a2053616c65207061757365640000000000000000000000005f82015250565b5f61316260148361237c565b915061316d8261312e565b602082019050919050565b5f6020820190508181035f83015261318f81613156565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6131cd82612341565b91506131d883612341565b92508282026131e681612341565b915082820484148315176131fd576131fc613196565b5b5092915050565b7f566173746567613a2057726f6e67206d73672e76616c756500000000000000005f82015250565b5f61323860188361237c565b915061324382613204565b602082019050919050565b5f6020820190508181035f8301526132658161322c565b9050919050565b5f61327682612341565b915061328183612341565b925082820190508082111561329957613298613196565b5b92915050565b7f566173746567613a20537461676520737570706c79206f766572666c6f7700005f82015250565b5f6132d3601e8361237c565b91506132de8261329f565b602082019050919050565b5f6020820190508181035f830152613300816132c7565b9050919050565b7f566173746567613a20574c20616c7265616479207573656400000000000000005f82015250565b5f61333b60188361237c565b915061334682613307565b602082019050919050565b5f6020820190508181035f8301526133688161332f565b9050919050565b5f8160601b9050919050565b5f6133858261336f565b9050919050565b5f6133968261337b565b9050919050565b6133ae6133a982612490565b61338c565b82525050565b5f819050919050565b6133ce6133c982612341565b6133b4565b82525050565b5f6133df828561339d565b6014820191506133ef82846133bd565b6020820191508190509392505050565b5f81519050919050565b5f613413826133ff565b61341d8185612c92565b935061342d81856020860161238c565b80840191505092915050565b5f819050919050565b5f819050919050565b61345c61345782613439565b613442565b82525050565b5f61346d8285613409565b9150613479828461344b565b6020820191508190509392505050565b7f566173746567613a20737461676520737570706c792065786365656473204d415f8201527f585f535550504c59000000000000000000000000000000000000000000000000602082015250565b5f6134e360288361237c565b91506134ee82613489565b604082019050919050565b5f6020820190508181035f830152613510816134d7565b9050919050565b5f6135228385612cd3565b935061352f838584612631565b613538836123b4565b840190509392505050565b5f6080820190506135565f8301886124a1565b61356360208301876124a1565b613570604083018661234a565b8181036060830152613583818486613517565b90509695505050505050565b5f81905092915050565b5f81546135a581612ac2565b6135af818661358f565b9450600182165f81146135c957600181146135de57613610565b60ff1983168652811515820286019350613610565b6135e785612df2565b5f5b83811015613608578154818901526001820191506020810190506135e9565b838801955050505b50505092915050565b5f61362382612372565b61362d818561358f565b935061363d81856020860161238c565b80840191505092915050565b5f6136548285613599565b91506136608284613619565b91508190509392505050565b7f494e56414c49445f5349474e41545552455f4c454e47544800000000000000005f82015250565b5f6136a060188361237c565b91506136ab8261366c565b602082019050919050565b5f6020820190508181035f8301526136cd81613694565b9050919050565b7f494e56414c49445f5349474e41545552455f535f504152414d455445520000005f82015250565b5f613708601d8361237c565b9150613713826136d4565b602082019050919050565b5f6020820190508181035f830152613735816136fc565b9050919050565b7f494e56414c49445f5349474e41545552455f565f504152414d455445520000005f82015250565b5f613770601d8361237c565b915061377b8261373c565b602082019050919050565b5f6020820190508181035f83015261379d81613764565b9050919050565b6137ad81613439565b82525050565b5f60ff82169050919050565b6137c8816137b3565b82525050565b5f6080820190506137e15f8301876137a4565b6137ee60208301866137bf565b6137fb60408301856137a4565b61380860608301846137a4565b95945050505050565b7f494e56414c49445f5349474e45520000000000000000000000000000000000005f82015250565b5f613845600e8361237c565b915061385082613811565b602082019050919050565b5f6020820190508181035f83015261387281613839565b9050919050565b7f414c52454144595f4d494e5445440000000000000000000000000000000000005f82015250565b5f6138ad600e8361237c565b91506138b882613879565b602082019050919050565b5f6020820190508181035f8301526138da816138a1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffdfea2646970667358221220679c4b9a1af34e47e57fa6f5c8fdde26ab223aeef95033a806610901b9f8a49964736f6c63430008160033

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

000000000000000000000000c4215f9292cf36bee6d126e16628620c57141ccf

-----Decoded View---------------
Arg [0] : operator_ (address): 0xc4215f9292Cf36BEE6d126E16628620C57141CcF

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000c4215f9292cf36bee6d126e16628620c57141ccf


Loading...
Loading
Loading...
Loading
[ 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.