ETH Price: $3,399.96 (+2.97%)

Token

 

Overview

Max Total Supply

20,000

Holders

511

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

0xFF86870a3C7E39d0E9f3710Cef08862DC9928878
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:
PurpleLambo1155

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 10000 runs

Other Settings:
paris EvmVersion
File 1 of 5 : PurpleLambo1155.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;

import {ERC1155} from "solmate/tokens/ERC1155.sol";
import {Ownable} from "openzeppelin/access/Ownable.sol";
import {Base64} from "openzeppelin/utils/Base64.sol";

/*
    ____                   __        __                    __        
   / __ \__  ___________  / /__     / /   ____ _____ ___  / /_  ____ 
  / /_/ / / / / ___/ __ \/ / _ \   / /   / __ `/ __ `__ \/ __ \/ __ \
 / ____/ /_/ / /  / /_/ / /  __/  / /___/ /_/ / / / / / / /_/ / /_/ /
/_/    \__,_/_/  / .___/_/\___/  /_____/\__,_/_/ /_/ /_/_.___/\____/ 
                /_/                                                  
*/

contract PurpleLambo1155 is ERC1155, Ownable {
    uint256 max = 20_000;
    uint256 public totalSupply;

    error AmountExceedsLimit();
    error AmountExceedsMaxSupply();

    function uri(uint256 tokenId) public view override returns (string memory) {
        if (tokenId == 1) {
            bytes memory dataURI = abi.encodePacked(
                '{"name":"Purple Lambo","image":"https://arweave.net/tovQ6c5iuKah_wfPwGQT8W1m272C0O10uiuB0KFKEJo","description":"no dev just lambo. https://t.me/purplelamboerc20 https://etherscan.io/token/0xDF90124B8a10d52a5Df27d3f61f94F44ADe09f12"}'
            );

            return string(abi.encodePacked("data:application/json;base64,", Base64.encode(dataURI)));
        }
        return "";
    }

    function contractURI() public view returns (string memory) {
        bytes memory dataURI = abi.encodePacked(
            '{"name":"Purple Lambo","image":"https://arweave.net/tovQ6c5iuKah_wfPwGQT8W1m272C0O10uiuB0KFKEJo","description":"no dev just lambo. https://t.me/purplelamboerc20 https://etherscan.io/token/0xDF90124B8a10d52a5Df27d3f61f94F44ADe09f12"}'
        );

        return string(abi.encodePacked("data:application/json;base64,", Base64.encode(dataURI)));
    }

    function mint(uint256 amount) public {
        if (amount > 10) {
            revert AmountExceedsLimit();
        }
        if (totalSupply + amount > max) {
            revert AmountExceedsMaxSupply();
        }
        totalSupply += amount;
        _mint(msg.sender, 1, amount, "");
    }
}

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

/// @notice Minimalist and gas efficient standard ERC1155 implementation.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC1155.sol)
abstract contract ERC1155 {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event TransferSingle(
        address indexed operator, address indexed from, address indexed to, uint256 id, uint256 amount
    );

    event TransferBatch(
        address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] amounts
    );

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

    event URI(string value, uint256 indexed id);

    /*//////////////////////////////////////////////////////////////
                             ERC1155 STORAGE
    //////////////////////////////////////////////////////////////*/

    mapping(address => mapping(uint256 => uint256)) public balanceOf;

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

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

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

    /*//////////////////////////////////////////////////////////////
                              ERC1155 LOGIC
    //////////////////////////////////////////////////////////////*/

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

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

    function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data)
        public
        virtual
    {
        require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED");

        balanceOf[from][id] -= amount;
        balanceOf[to][id] += amount;

        emit TransferSingle(msg.sender, from, to, id, amount);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, from, id, amount, data)
                    == ERC1155TokenReceiver.onERC1155Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) public virtual {
        require(ids.length == amounts.length, "LENGTH_MISMATCH");

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

        // Storing these outside the loop saves ~15 gas per iteration.
        uint256 id;
        uint256 amount;

        for (uint256 i = 0; i < ids.length;) {
            id = ids[i];
            amount = amounts[i];

            balanceOf[from][id] -= amount;
            balanceOf[to][id] += amount;

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, from, to, ids, amounts);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, from, ids, amounts, data)
                    == ERC1155TokenReceiver.onERC1155BatchReceived.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function balanceOfBatch(address[] calldata owners, uint256[] calldata ids)
        public
        view
        virtual
        returns (uint256[] memory balances)
    {
        require(owners.length == ids.length, "LENGTH_MISMATCH");

        balances = new uint256[](owners.length);

        // Unchecked because the only math done is incrementing
        // the array index counter which cannot possibly overflow.
        unchecked {
            for (uint256 i = 0; i < owners.length; ++i) {
                balances[i] = balanceOf[owners[i]][ids[i]];
            }
        }
    }

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

    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
        return interfaceId == 0x01ffc9a7 // ERC165 Interface ID for ERC165
            || interfaceId == 0xd9b67a26 // ERC165 Interface ID for ERC1155
            || interfaceId == 0x0e89341c; // ERC165 Interface ID for ERC1155MetadataURI
    }

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

    function _mint(address to, uint256 id, uint256 amount, bytes memory data) internal virtual {
        balanceOf[to][id] += amount;

        emit TransferSingle(msg.sender, address(0), to, id, amount);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, address(0), id, amount, data)
                    == ERC1155TokenReceiver.onERC1155Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _batchMint(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data)
        internal
        virtual
    {
        uint256 idsLength = ids.length; // Saves MLOADs.

        require(idsLength == amounts.length, "LENGTH_MISMATCH");

        for (uint256 i = 0; i < idsLength;) {
            balanceOf[to][ids[i]] += amounts[i];

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, address(0), to, ids, amounts);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, address(0), ids, amounts, data)
                    == ERC1155TokenReceiver.onERC1155BatchReceived.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _batchBurn(address from, uint256[] memory ids, uint256[] memory amounts) internal virtual {
        uint256 idsLength = ids.length; // Saves MLOADs.

        require(idsLength == amounts.length, "LENGTH_MISMATCH");

        for (uint256 i = 0; i < idsLength;) {
            balanceOf[from][ids[i]] -= amounts[i];

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, from, address(0), ids, amounts);
    }

    function _burn(address from, uint256 id, uint256 amount) internal virtual {
        balanceOf[from][id] -= amount;

        emit TransferSingle(msg.sender, from, address(0), id, amount);
    }
}

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

    function onERC1155BatchReceived(address, address, uint256[] calldata, uint256[] calldata, bytes calldata)
        external
        virtual
        returns (bytes4)
    {
        return ERC1155TokenReceiver.onERC1155BatchReceived.selector;
    }
}

File 3 of 5 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

pragma solidity ^0.8.0;

/**
 * @dev Provides a set of functions to operate with Base64 strings.
 *
 * _Available since v4.5._
 */
library Base64 {
    /**
     * @dev Base64 Encoding/Decoding Table
     */
    string internal constant _TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

    /**
     * @dev Converts a `bytes` to its Bytes64 `string` representation.
     */
    function encode(bytes memory data) internal pure returns (string memory) {
        /**
         * Inspired by Brecht Devos (Brechtpd) implementation - MIT licence
         * https://github.com/Brechtpd/base64/blob/e78d9fd951e7b0977ddca77d92dc85183770daf4/base64.sol
         */
        if (data.length == 0) return "";

        // Loads the table into memory
        string memory table = _TABLE;

        // Encoding takes 3 bytes chunks of binary data from `bytes` data parameter
        // and split into 4 numbers of 6 bits.
        // The final Base64 length should be `bytes` data length multiplied by 4/3 rounded up
        // - `data.length + 2`  -> Round up
        // - `/ 3`              -> Number of 3-bytes chunks
        // - `4 *`              -> 4 characters for each chunk
        string memory result = new string(4 * ((data.length + 2) / 3));

        /// @solidity memory-safe-assembly
        assembly {
            // Prepare the lookup table (skip the first "length" byte)
            let tablePtr := add(table, 1)

            // Prepare result pointer, jump over length
            let resultPtr := add(result, 32)

            // Run over the input, 3 bytes at a time
            for {
                let dataPtr := data
                let endPtr := add(data, mload(data))
            } lt(dataPtr, endPtr) {

            } {
                // Advance 3 bytes
                dataPtr := add(dataPtr, 3)
                let input := mload(dataPtr)

                // To write each character, shift the 3 bytes (18 bits) chunk
                // 4 times in blocks of 6 bits for each character (18, 12, 6, 0)
                // and apply logical AND with 0x3F which is the number of
                // the previous character in the ASCII table prior to the Base64 Table
                // The result is then added to the table to get the character to write,
                // and finally write it in the result pointer but with a left shift
                // of 256 (1 byte) - 8 (1 ASCII char) = 248 bits

                mstore8(resultPtr, mload(add(tablePtr, and(shr(18, input), 0x3F))))
                resultPtr := add(resultPtr, 1) // Advance

                mstore8(resultPtr, mload(add(tablePtr, and(shr(12, input), 0x3F))))
                resultPtr := add(resultPtr, 1) // Advance

                mstore8(resultPtr, mload(add(tablePtr, and(shr(6, input), 0x3F))))
                resultPtr := add(resultPtr, 1) // Advance

                mstore8(resultPtr, mload(add(tablePtr, and(input, 0x3F))))
                resultPtr := add(resultPtr, 1) // Advance
            }

            // When data `bytes` is not exactly 3 bytes long
            // it is padded with `=` characters at the end
            switch mod(mload(data), 3)
            case 1 {
                mstore8(sub(resultPtr, 1), 0x3d)
                mstore8(sub(resultPtr, 2), 0x3d)
            }
            case 2 {
                mstore8(sub(resultPtr, 1), 0x3d)
            }
        }

        return result;
    }
}

File 5 of 5 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

Settings
{
  "remappings": [
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
    "forge-std/=lib/forge-std/src/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "openzeppelin/=lib/openzeppelin-contracts/contracts/",
    "solmate/=lib/solmate/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 10000
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "paris",
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"name":"AmountExceedsLimit","type":"error"},{"inputs":[],"name":"AmountExceedsMaxSupply","type":"error"},{"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":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","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":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

6080604052614e2060035534801561001657600080fd5b5061002033610025565b610077565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611d21806100866000396000f3fe608060405234801561001057600080fd5b50600436106100e95760003560e01c80638da5cb5b1161008c578063e8a3d48511610066578063e8a3d48514610200578063e985e9c514610208578063f242432a14610236578063f2fde38b1461024957600080fd5b80638da5cb5b146101b2578063a0712d68146101da578063a22cb465146101ed57600080fd5b806318160ddd116100c857806318160ddd1461016c5780632eb2c2d6146101755780634e1273f41461018a578063715018a6146101aa57600080fd5b8062fdd58e146100ee57806301ffc9a7146101295780630e89341c1461014c575b600080fd5b6101166100fc366004611565565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b61013c6101373660046115bd565b61025c565b6040519015158152602001610120565b61015f61015a3660046115e1565b610341565b6040516101209190611668565b61011660045481565b610188610183366004611709565b6104df565b005b61019d6101983660046117c4565b6108d5565b6040516101209190611830565b610188610a4c565b60025460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610120565b6101886101e83660046115e1565b610a60565b6101886101fb366004611874565b610b1c565b61015f610bb3565b61013c6102163660046118b0565b600160209081526000928352604080842090915290825290205460ff1681565b6101886102443660046118e3565b610d33565b61018861025736600461195b565b611039565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614806102ef57507fd9b67a26000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061033b57507f0e89341c000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060816001036104cb57600060405160200161048a907f7b226e616d65223a22507572706c65204c616d626f222c22696d616765223a2281527f68747470733a2f2f617277656176652e6e65742f746f765136633569754b616860208201527f5f776650774751543857316d32373243304f313075697542304b464b454a6f2260408201527f2c226465736372697074696f6e223a226e6f20646576206a757374206c616d6260608201527f6f2e2068747470733a2f2f742e6d652f707572706c656c616d626f657263323060808201527f2068747470733a2f2f65746865727363616e2e696f2f746f6b656e2f3078444660a08201527f393031323442386131306435326135446632376433663631663934463434414460c08201527f653039663132227d00000000000000000000000000000000000000000000000060e082015260e80190565b60405160208183030381529060405290506104a4816110ed565b6040516020016104b49190611976565b604051602081830303815290604052915050919050565b505060408051602081019091526000815290565b84831461054d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d41544348000000000000000000000000000000000060448201526064015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff891614806105a1575073ffffffffffffffffffffffffffffffffffffffff8816600090815260016020908152604080832033845290915290205460ff165b610607576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610544565b60008060005b878110156106dc57888882818110610627576106276119bb565b905060200201359250868682818110610642576106426119bb565b73ffffffffffffffffffffffffffffffffffffffff8e166000908152602081815260408083208984528252822080549390910294909401359550859392509061068c908490611a19565b909155505073ffffffffffffffffffffffffffffffffffffffff8a16600090815260208181526040808320868452909152812080548492906106cf908490611a2c565b909155505060010161060d565b508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b6040516107579493929190611a8a565b60405180910390a473ffffffffffffffffffffffffffffffffffffffff89163b15610849576040517fbc197c81000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff8b169063bc197c81906107de9033908f908e908e908e908e908e908e90600401611b05565b6020604051808303816000875af11580156107fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108219190611b76565b7fffffffff000000000000000000000000000000000000000000000000000000001614610863565b73ffffffffffffffffffffffffffffffffffffffff891615155b6108c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610544565b50505050505050505050565b6060838214610940576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d4154434800000000000000000000000000000000006044820152606401610544565b8367ffffffffffffffff81111561095957610959611b93565b604051908082528060200260200182016040528015610982578160200160208202803683370190505b50905060005b84811015610a43576000808787848181106109a5576109a56119bb565b90506020020160208101906109ba919061195b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858584818110610a0857610a086119bb565b90506020020135815260200190815260200160002054828281518110610a3057610a306119bb565b6020908102919091010152600101610988565b50949350505050565b610a54611240565b610a5e60006112c1565b565b600a811115610a9b576040517fb95eb50800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035481600454610aac9190611a2c565b1115610ae4576040517facbb966d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060046000828254610af69190611a2c565b92505081905550610b193360018360405180602001604052806000815250611338565b50565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60606000604051602001610cf4907f7b226e616d65223a22507572706c65204c616d626f222c22696d616765223a2281527f68747470733a2f2f617277656176652e6e65742f746f765136633569754b616860208201527f5f776650774751543857316d32373243304f313075697542304b464b454a6f2260408201527f2c226465736372697074696f6e223a226e6f20646576206a757374206c616d6260608201527f6f2e2068747470733a2f2f742e6d652f707572706c656c616d626f657263323060808201527f2068747470733a2f2f65746865727363616e2e696f2f746f6b656e2f3078444660a08201527f393031323442386131306435326135446632376433663631663934463434414460c08201527f653039663132227d00000000000000000000000000000000000000000000000060e082015260e80190565b6040516020818303038152906040529050610d0e816110ed565b604051602001610d1e9190611976565b60405160208183030381529060405291505090565b3373ffffffffffffffffffffffffffffffffffffffff87161480610d87575073ffffffffffffffffffffffffffffffffffffffff8616600090815260016020908152604080832033845290915290205460ff165b610ded576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610544565b73ffffffffffffffffffffffffffffffffffffffff861660009081526020818152604080832087845290915281208054859290610e2b908490611a19565b909155505073ffffffffffffffffffffffffffffffffffffffff851660009081526020818152604080832087845290915281208054859290610e6e908490611a2c565b9091555050604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff808816929089169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff85163b15610fb1576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e6190610f469033908b908a908a908a908a90600401611bc2565b6020604051808303816000875af1158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b76565b7fffffffff000000000000000000000000000000000000000000000000000000001614610fcb565b73ffffffffffffffffffffffffffffffffffffffff851615155b611031576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610544565b505050505050565b611041611240565b73ffffffffffffffffffffffffffffffffffffffff81166110e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610544565b610b19816112c1565b6060815160000361110c57505060408051602081019091526000815290565b6000604051806060016040528060408152602001611cac604091399050600060038451600261113b9190611a2c565b6111459190611c14565b611150906004611c4f565b67ffffffffffffffff81111561116857611168611b93565b6040519080825280601f01601f191660200182016040528015611192576020820181803683370190505b509050600182016020820185865187015b808210156111fe576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f81168501518453506001830192506111a3565b505060038651066001811461121a576002811461122d57611235565b603d6001830353603d6002830353611235565b603d60018303535b509195945050505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314610a5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610544565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020818152604080832086845290915281208054849290611376908490611a2c565b9091555050604080518481526020810184905273ffffffffffffffffffffffffffffffffffffffff86169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff84163b156114b6576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063f23a6e619061144b903390600090899089908990600401611c66565b6020604051808303816000875af115801561146a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148e9190611b76565b7fffffffff0000000000000000000000000000000000000000000000000000000016146114d0565b73ffffffffffffffffffffffffffffffffffffffff841615155b611536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610544565b50505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461156057600080fd5b919050565b6000806040838503121561157857600080fd5b6115818361153c565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610b1957600080fd5b6000602082840312156115cf57600080fd5b81356115da8161158f565b9392505050565b6000602082840312156115f357600080fd5b5035919050565b60005b838110156116155781810151838201526020016115fd565b50506000910152565b600081518084526116368160208601602086016115fa565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006115da602083018461161e565b60008083601f84011261168d57600080fd5b50813567ffffffffffffffff8111156116a557600080fd5b6020830191508360208260051b85010111156116c057600080fd5b9250929050565b60008083601f8401126116d957600080fd5b50813567ffffffffffffffff8111156116f157600080fd5b6020830191508360208285010111156116c057600080fd5b60008060008060008060008060a0898b03121561172557600080fd5b61172e8961153c565b975061173c60208a0161153c565b9650604089013567ffffffffffffffff8082111561175957600080fd5b6117658c838d0161167b565b909850965060608b013591508082111561177e57600080fd5b61178a8c838d0161167b565b909650945060808b01359150808211156117a357600080fd5b506117b08b828c016116c7565b999c989b5096995094979396929594505050565b600080600080604085870312156117da57600080fd5b843567ffffffffffffffff808211156117f257600080fd5b6117fe8883890161167b565b9096509450602087013591508082111561181757600080fd5b506118248782880161167b565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b818110156118685783518352928401929184019160010161184c565b50909695505050505050565b6000806040838503121561188757600080fd5b6118908361153c565b9150602083013580151581146118a557600080fd5b809150509250929050565b600080604083850312156118c357600080fd5b6118cc8361153c565b91506118da6020840161153c565b90509250929050565b60008060008060008060a087890312156118fc57600080fd5b6119058761153c565b95506119136020880161153c565b94506040870135935060608701359250608087013567ffffffffffffffff81111561193d57600080fd5b61194989828a016116c7565b979a9699509497509295939492505050565b60006020828403121561196d57600080fd5b6115da8261153c565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000008152600082516119ae81601d8501602087016115fa565b91909101601d0192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561033b5761033b6119ea565b8082018082111561033b5761033b6119ea565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611a7157600080fd5b8260051b80836020870137939093016020019392505050565b604081526000611a9e604083018688611a3f565b8281036020840152611ab1818587611a3f565b979650505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a06040830152611b3f60a08301888a611a3f565b8281036060840152611b52818789611a3f565b90508281036080840152611b67818587611abc565b9b9a5050505050505050505050565b600060208284031215611b8857600080fd5b81516115da8161158f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a06080830152611c0860a083018486611abc565b98975050505050505050565b600082611c4a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808202811582820484141761033b5761033b6119ea565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a06080830152611ab160a083018461161e56fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220761f60f1cfc97336965d8b123d9725be223811471ff19045f296a7e84dc678a964736f6c63430008150033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100e95760003560e01c80638da5cb5b1161008c578063e8a3d48511610066578063e8a3d48514610200578063e985e9c514610208578063f242432a14610236578063f2fde38b1461024957600080fd5b80638da5cb5b146101b2578063a0712d68146101da578063a22cb465146101ed57600080fd5b806318160ddd116100c857806318160ddd1461016c5780632eb2c2d6146101755780634e1273f41461018a578063715018a6146101aa57600080fd5b8062fdd58e146100ee57806301ffc9a7146101295780630e89341c1461014c575b600080fd5b6101166100fc366004611565565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b61013c6101373660046115bd565b61025c565b6040519015158152602001610120565b61015f61015a3660046115e1565b610341565b6040516101209190611668565b61011660045481565b610188610183366004611709565b6104df565b005b61019d6101983660046117c4565b6108d5565b6040516101209190611830565b610188610a4c565b60025460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610120565b6101886101e83660046115e1565b610a60565b6101886101fb366004611874565b610b1c565b61015f610bb3565b61013c6102163660046118b0565b600160209081526000928352604080842090915290825290205460ff1681565b6101886102443660046118e3565b610d33565b61018861025736600461195b565b611039565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614806102ef57507fd9b67a26000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061033b57507f0e89341c000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060816001036104cb57600060405160200161048a907f7b226e616d65223a22507572706c65204c616d626f222c22696d616765223a2281527f68747470733a2f2f617277656176652e6e65742f746f765136633569754b616860208201527f5f776650774751543857316d32373243304f313075697542304b464b454a6f2260408201527f2c226465736372697074696f6e223a226e6f20646576206a757374206c616d6260608201527f6f2e2068747470733a2f2f742e6d652f707572706c656c616d626f657263323060808201527f2068747470733a2f2f65746865727363616e2e696f2f746f6b656e2f3078444660a08201527f393031323442386131306435326135446632376433663631663934463434414460c08201527f653039663132227d00000000000000000000000000000000000000000000000060e082015260e80190565b60405160208183030381529060405290506104a4816110ed565b6040516020016104b49190611976565b604051602081830303815290604052915050919050565b505060408051602081019091526000815290565b84831461054d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d41544348000000000000000000000000000000000060448201526064015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff891614806105a1575073ffffffffffffffffffffffffffffffffffffffff8816600090815260016020908152604080832033845290915290205460ff165b610607576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610544565b60008060005b878110156106dc57888882818110610627576106276119bb565b905060200201359250868682818110610642576106426119bb565b73ffffffffffffffffffffffffffffffffffffffff8e166000908152602081815260408083208984528252822080549390910294909401359550859392509061068c908490611a19565b909155505073ffffffffffffffffffffffffffffffffffffffff8a16600090815260208181526040808320868452909152812080548492906106cf908490611a2c565b909155505060010161060d565b508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b6040516107579493929190611a8a565b60405180910390a473ffffffffffffffffffffffffffffffffffffffff89163b15610849576040517fbc197c81000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff8b169063bc197c81906107de9033908f908e908e908e908e908e908e90600401611b05565b6020604051808303816000875af11580156107fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108219190611b76565b7fffffffff000000000000000000000000000000000000000000000000000000001614610863565b73ffffffffffffffffffffffffffffffffffffffff891615155b6108c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610544565b50505050505050505050565b6060838214610940576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d4154434800000000000000000000000000000000006044820152606401610544565b8367ffffffffffffffff81111561095957610959611b93565b604051908082528060200260200182016040528015610982578160200160208202803683370190505b50905060005b84811015610a43576000808787848181106109a5576109a56119bb565b90506020020160208101906109ba919061195b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858584818110610a0857610a086119bb565b90506020020135815260200190815260200160002054828281518110610a3057610a306119bb565b6020908102919091010152600101610988565b50949350505050565b610a54611240565b610a5e60006112c1565b565b600a811115610a9b576040517fb95eb50800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035481600454610aac9190611a2c565b1115610ae4576040517facbb966d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060046000828254610af69190611a2c565b92505081905550610b193360018360405180602001604052806000815250611338565b50565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60606000604051602001610cf4907f7b226e616d65223a22507572706c65204c616d626f222c22696d616765223a2281527f68747470733a2f2f617277656176652e6e65742f746f765136633569754b616860208201527f5f776650774751543857316d32373243304f313075697542304b464b454a6f2260408201527f2c226465736372697074696f6e223a226e6f20646576206a757374206c616d6260608201527f6f2e2068747470733a2f2f742e6d652f707572706c656c616d626f657263323060808201527f2068747470733a2f2f65746865727363616e2e696f2f746f6b656e2f3078444660a08201527f393031323442386131306435326135446632376433663631663934463434414460c08201527f653039663132227d00000000000000000000000000000000000000000000000060e082015260e80190565b6040516020818303038152906040529050610d0e816110ed565b604051602001610d1e9190611976565b60405160208183030381529060405291505090565b3373ffffffffffffffffffffffffffffffffffffffff87161480610d87575073ffffffffffffffffffffffffffffffffffffffff8616600090815260016020908152604080832033845290915290205460ff165b610ded576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610544565b73ffffffffffffffffffffffffffffffffffffffff861660009081526020818152604080832087845290915281208054859290610e2b908490611a19565b909155505073ffffffffffffffffffffffffffffffffffffffff851660009081526020818152604080832087845290915281208054859290610e6e908490611a2c565b9091555050604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff808816929089169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff85163b15610fb1576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e6190610f469033908b908a908a908a908a90600401611bc2565b6020604051808303816000875af1158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b76565b7fffffffff000000000000000000000000000000000000000000000000000000001614610fcb565b73ffffffffffffffffffffffffffffffffffffffff851615155b611031576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610544565b505050505050565b611041611240565b73ffffffffffffffffffffffffffffffffffffffff81166110e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610544565b610b19816112c1565b6060815160000361110c57505060408051602081019091526000815290565b6000604051806060016040528060408152602001611cac604091399050600060038451600261113b9190611a2c565b6111459190611c14565b611150906004611c4f565b67ffffffffffffffff81111561116857611168611b93565b6040519080825280601f01601f191660200182016040528015611192576020820181803683370190505b509050600182016020820185865187015b808210156111fe576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f81168501518453506001830192506111a3565b505060038651066001811461121a576002811461122d57611235565b603d6001830353603d6002830353611235565b603d60018303535b509195945050505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314610a5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610544565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020818152604080832086845290915281208054849290611376908490611a2c565b9091555050604080518481526020810184905273ffffffffffffffffffffffffffffffffffffffff86169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff84163b156114b6576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063f23a6e619061144b903390600090899089908990600401611c66565b6020604051808303816000875af115801561146a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148e9190611b76565b7fffffffff0000000000000000000000000000000000000000000000000000000016146114d0565b73ffffffffffffffffffffffffffffffffffffffff841615155b611536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610544565b50505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461156057600080fd5b919050565b6000806040838503121561157857600080fd5b6115818361153c565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610b1957600080fd5b6000602082840312156115cf57600080fd5b81356115da8161158f565b9392505050565b6000602082840312156115f357600080fd5b5035919050565b60005b838110156116155781810151838201526020016115fd565b50506000910152565b600081518084526116368160208601602086016115fa565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006115da602083018461161e565b60008083601f84011261168d57600080fd5b50813567ffffffffffffffff8111156116a557600080fd5b6020830191508360208260051b85010111156116c057600080fd5b9250929050565b60008083601f8401126116d957600080fd5b50813567ffffffffffffffff8111156116f157600080fd5b6020830191508360208285010111156116c057600080fd5b60008060008060008060008060a0898b03121561172557600080fd5b61172e8961153c565b975061173c60208a0161153c565b9650604089013567ffffffffffffffff8082111561175957600080fd5b6117658c838d0161167b565b909850965060608b013591508082111561177e57600080fd5b61178a8c838d0161167b565b909650945060808b01359150808211156117a357600080fd5b506117b08b828c016116c7565b999c989b5096995094979396929594505050565b600080600080604085870312156117da57600080fd5b843567ffffffffffffffff808211156117f257600080fd5b6117fe8883890161167b565b9096509450602087013591508082111561181757600080fd5b506118248782880161167b565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b818110156118685783518352928401929184019160010161184c565b50909695505050505050565b6000806040838503121561188757600080fd5b6118908361153c565b9150602083013580151581146118a557600080fd5b809150509250929050565b600080604083850312156118c357600080fd5b6118cc8361153c565b91506118da6020840161153c565b90509250929050565b60008060008060008060a087890312156118fc57600080fd5b6119058761153c565b95506119136020880161153c565b94506040870135935060608701359250608087013567ffffffffffffffff81111561193d57600080fd5b61194989828a016116c7565b979a9699509497509295939492505050565b60006020828403121561196d57600080fd5b6115da8261153c565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000008152600082516119ae81601d8501602087016115fa565b91909101601d0192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561033b5761033b6119ea565b8082018082111561033b5761033b6119ea565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611a7157600080fd5b8260051b80836020870137939093016020019392505050565b604081526000611a9e604083018688611a3f565b8281036020840152611ab1818587611a3f565b979650505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a06040830152611b3f60a08301888a611a3f565b8281036060840152611b52818789611a3f565b90508281036080840152611b67818587611abc565b9b9a5050505050505050505050565b600060208284031215611b8857600080fd5b81516115da8161158f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a06080830152611c0860a083018486611abc565b98975050505050505050565b600082611c4a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808202811582820484141761033b5761033b6119ea565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a06080830152611ab160a083018461161e56fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220761f60f1cfc97336965d8b123d9725be223811471ff19045f296a7e84dc678a964736f6c63430008150033

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.