ETH Price: $3,360.62 (-8.12%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Safe Transfer Fr...188454402023-12-23 2:07:11382 days ago1703297231IN
0x6Aa0AEF6...68D9e2Cb5
0 ETH0.0025234222.78508873
Safe Transfer Fr...184845362023-11-02 12:56:35432 days ago1698929795IN
0x6Aa0AEF6...68D9e2Cb5
0 ETH0.0024562524.81617724
Set Approval For...174465872023-06-10 1:42:47578 days ago1686361367IN
0x6Aa0AEF6...68D9e2Cb5
0 ETH0.0008065817.33594495
Mint174105602023-06-04 23:42:47583 days ago1685922167IN
0x6Aa0AEF6...68D9e2Cb5
0 ETH0.0019681419.30476944
Mint174105552023-06-04 23:41:47583 days ago1685922107IN
0x6Aa0AEF6...68D9e2Cb5
0 ETH0.002012919.74389455
Mint174105502023-06-04 23:40:47583 days ago1685922047IN
0x6Aa0AEF6...68D9e2Cb5
0 ETH0.0020935420.53482403
Mint174105462023-06-04 23:39:59583 days ago1685921999IN
0x6Aa0AEF6...68D9e2Cb5
0 ETH0.0020892920.49317646
Mint174105422023-06-04 23:39:11583 days ago1685921951IN
0x6Aa0AEF6...68D9e2Cb5
0 ETH0.0007781120.57142995
Mint174105322023-06-04 23:37:11583 days ago1685921831IN
0x6Aa0AEF6...68D9e2Cb5
0 ETH0.0020755920.3587317
Mint174105022023-06-04 23:30:59583 days ago1685921459IN
0x6Aa0AEF6...68D9e2Cb5
0 ETH0.0024638323.52082738
Mint174104912023-06-04 23:28:47583 days ago1685921327IN
0x6Aa0AEF6...68D9e2Cb5
0 ETH0.0020117819.73285282
Mint174104712023-06-04 23:24:47583 days ago1685921087IN
0x6Aa0AEF6...68D9e2Cb5
0 ETH0.0020210519.82382294
Mint174104542023-06-04 23:21:11583 days ago1685920871IN
0x6Aa0AEF6...68D9e2Cb5
0 ETH0.0021476921.06597346
Mint174104492023-06-04 23:20:11583 days ago1685920811IN
0x6Aa0AEF6...68D9e2Cb5
0 ETH0.0020046719.66316465
Set Approval For...174052112023-06-04 5:35:47584 days ago1685856947IN
0x6Aa0AEF6...68D9e2Cb5
0 ETH0.0009308919.97153077
Mint173961412023-06-02 22:56:35585 days ago1685746595IN
0x6Aa0AEF6...68D9e2Cb5
0 ETH0.0026978426.46528865
Set Admin173961382023-06-02 22:55:59585 days ago1685746559IN
0x6Aa0AEF6...68D9e2Cb5
0 ETH0.0011653623.21300082
Set Token To URI173961262023-06-02 22:53:35585 days ago1685746415IN
0x6Aa0AEF6...68D9e2Cb5
0 ETH0.0024503626.23877464
Set Token To URI173961222023-06-02 22:52:47585 days ago1685746367IN
0x6Aa0AEF6...68D9e2Cb5
0 ETH0.0026740328.63387906
Set Token To URI173961192023-06-02 22:52:11585 days ago1685746331IN
0x6Aa0AEF6...68D9e2Cb5
0 ETH0.0028622330.64912909
Set Token To URI173961172023-06-02 22:51:47585 days ago1685746307IN
0x6Aa0AEF6...68D9e2Cb5
0 ETH0.0028005329.98848436
Set Token To URI173961152023-06-02 22:51:23585 days ago1685746283IN
0x6Aa0AEF6...68D9e2Cb5
0 ETH0.0028815930.85649599
Set Token To URI173961072023-06-02 22:49:47585 days ago1685746187IN
0x6Aa0AEF6...68D9e2Cb5
0 ETH0.0030329632.47740804
Set Token To URI173961052023-06-02 22:49:23585 days ago1685746163IN
0x6Aa0AEF6...68D9e2Cb5
0 ETH0.0029375331.45554512
Set Token To URI173961022023-06-02 22:48:47585 days ago1685746127IN
0x6Aa0AEF6...68D9e2Cb5
0 ETH0.003144533.67175452
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DEF_DJ

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : Def-DJ.sol
/**
 *Submitted for verification at Etherscan.io on 2023-06-02
*/

// SPDX-License-Identifier: MIT

/**
 * @title ERC1155 Token
 * @author 0xSumo @PBADAO
 */

pragma solidity ^0.8.0;

interface ERC1155TokenReceiver {
    function onERC1155Received(address operator_, address from_, uint256 id_, uint256 amount_, bytes calldata data_) external returns (bytes4);
    function onERC1155BatchReceived(address operator_, address from_, uint256[] calldata ids_, uint256[] calldata amounts_, bytes calldata data_) external returns (bytes4);
}

abstract contract ERC1155Enumerable {
    
    string public name;
    string public symbol;

    constructor(string memory name_, string memory symbol_) {
        name = name_; 
        symbol = symbol_; 
    }

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

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

    mapping(uint256 => address[]) public tokenToOwners;
    mapping(uint256 => mapping(address => uint256)) public tokenToOwnersToIndex;

    struct TokenBalances {
        address owner;
        uint256 balance;
    }

    function _addEnumerableData(address address_, uint256 id_) internal {
        if (balanceOf[address_][id_] == 0) {
            uint256 _nextIndex = tokenToOwners[id_].length;
            tokenToOwners[id_].push(address_);
            tokenToOwnersToIndex[id_][address_] = _nextIndex;
        }
    }

    function _removeEnumerableData(address address_, uint256 id_) internal {
        if (balanceOf[address_][id_] == 0) {
            uint256 _userIndex = tokenToOwnersToIndex[id_][address_];
            uint256 _lastIndex = tokenToOwners[id_].length - 1;
            if (_userIndex != _lastIndex) {
                address _userAtLastIndex = tokenToOwners[id_][_lastIndex];
                tokenToOwners[id_][_userIndex] = _userAtLastIndex;
                tokenToOwnersToIndex[id_][_userAtLastIndex] = _userIndex;
            }

            tokenToOwners[id_].pop();
            delete tokenToOwnersToIndex[id_][address_];
        }
    }

    function getOwnersOfTokenId(uint256 id_) public view returns (address[] memory) {
        return tokenToOwners[id_];
    }

    function getOwnersOfTokenIdAndBalance(uint256 id_) public view returns (TokenBalances[] memory) {
        address[] memory _owners = getOwnersOfTokenId(id_);
        uint256 _ownersLength = _owners.length;
        TokenBalances[] memory _TokenBalancesAll = new TokenBalances[] (_ownersLength);

        for (uint256 i = 0; i < _ownersLength; i++) {
            address _currentOwner = _owners[i];
            _TokenBalancesAll[i] = TokenBalances(
                _currentOwner,
                balanceOf[_currentOwner][id_]
            );
        }
        return _TokenBalancesAll;
    }

    function getTotalSupplyOfIds(uint256[] calldata ids_) public view returns (uint256) {
        uint256 _tokens;
        for (uint256 i = 0; i < ids_.length; i++) {
            _tokens += getOwnersOfTokenId(ids_[i]).length;
        }
        return _tokens;
    }

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

    function _isSameLength(uint256 a, uint256 b) internal pure returns (bool) {
        return a == b;
    }

    function _isApprovedOrOwner(address from_) internal view returns (bool) {
        return msg.sender == from_ || isApprovedForAll[from_][msg.sender];
    }

    function _ERC1155Supported(address from_, address to_, uint256 id_, uint256 amount_, bytes memory data_) internal {
        require(to_.code.length == 0 ? to_ != address(0) :
            ERC1155TokenReceiver(to_).onERC1155Received(
                msg.sender, from_, id_, amount_, data_) ==
            ERC1155TokenReceiver.onERC1155Received.selector,
                "_ERC1155Supported(): Unsupported Recipient!"
        );
    }

    function _ERC1155BatchSupported(address from_, address to_, uint256[] memory ids_, uint256[] memory amounts_, bytes memory data_) internal {
        require(to_.code.length == 0 ? to_ != address(0) :
            ERC1155TokenReceiver(to_).onERC1155BatchReceived(
                msg.sender, from_, ids_, amounts_, data_) ==
            ERC1155TokenReceiver.onERC1155BatchReceived.selector,
                "_ERC1155BatchSupported(): Unsupported Recipient!"
        );
    }

    function setApprovalForAll(address operator_, bool approved_) public virtual {
        isApprovedForAll[msg.sender][operator_] = approved_;
        emit ApprovalForAll(msg.sender, operator_, approved_);
    }

    function _transfer(address from_, address to_, uint256 id_, uint256 amount_) internal {
        _addEnumerableData(to_, id_);
        balanceOf[to_][id_] += amount_;
        balanceOf[from_][id_] -= amount_;
        _removeEnumerableData(from_, id_);
    }

    function safeTransferFrom(address from_, address to_, uint256 id_, uint256 amount_, bytes memory data_) public virtual {
        require(_isApprovedOrOwner(from_));
        _transfer(from_, to_, id_, amount_);
        emit TransferSingle(msg.sender, from_, to_, id_, amount_);
        _ERC1155Supported(from_, to_, id_, amount_, data_);
    }

    function safeBatchTransferFrom(address from_, address to_, uint256[] memory ids_, uint256[] memory amounts_, bytes memory data_) public virtual {
        require(_isSameLength(ids_.length, amounts_.length));
        require(_isApprovedOrOwner(from_));

        for (uint256 i = 0; i < ids_.length; i++) {
            _transfer(from_, to_, ids_[i], amounts_[i]);
        }

        emit TransferBatch(msg.sender, from_, to_, ids_, amounts_);

        _ERC1155BatchSupported(from_, to_, ids_, amounts_, data_);
    }

    function _mintInternal(address to_, uint256 id_, uint256 amount_) internal {
        _addEnumerableData(to_, id_);
        balanceOf[to_][id_] += amount_;
    }

    function _mint(address to_, uint256 id_, uint256 amount_, bytes memory data_) internal {
        _mintInternal(to_, id_, amount_);

        emit TransferSingle(msg.sender, address(0), to_, id_, amount_);

        _ERC1155Supported(address(0), to_, id_, amount_, data_);
    }

    function _batchMint(address to_, uint256[] memory ids_, uint256[] memory amounts_, bytes memory data_) internal {
        require(_isSameLength(ids_.length, amounts_.length));

        for (uint256 i = 0; i < ids_.length; i++) {
            _mintInternal(to_, ids_[i], amounts_[i]);
        }

        emit TransferBatch(msg.sender, address(0), to_, ids_, amounts_);

        _ERC1155BatchSupported(address(0), to_, ids_, amounts_, data_);
    }

    function _burnInternal(address from_, uint256 id_, uint256 amount_) internal {
        balanceOf[from_][id_] -= amount_;
        _removeEnumerableData(from_, id_);
    }

    function _burn(address from_, uint256 id_, uint256 amount_) internal {
        _burnInternal(from_, id_, amount_);
        emit TransferSingle(msg.sender, from_, address(0), id_, amount_);
    }

    function _batchBurn(address from_, uint256[] memory ids_, uint256[] memory amounts_) internal {
        require(_isSameLength(ids_.length, amounts_.length));
        
        for (uint256 i = 0; i < ids_.length; i++) {
            _burnInternal(from_, ids_[i], amounts_[i]);
        }

        emit TransferBatch(msg.sender, from_, address(0), ids_, amounts_);
    }

    function supportsInterface(bytes4 interfaceId_) public pure virtual returns (bool) {
        return interfaceId_ == 0x01ffc9a7 || interfaceId_ == 0xd9b67a26 || interfaceId_ == 0x0e89341c;
    }

    function balanceOfBatch(address[] memory owners_, uint256[] memory ids_) public view virtual returns (uint256[] memory) {
        require(_isSameLength(owners_.length, ids_.length));

        uint256[] memory _balances = new uint256[](owners_.length);

        for (uint256 i = 0; i < owners_.length; i++) {
            _balances[i] = balanceOf[owners_[i]][ids_[i]];
        }
        return _balances;
    }
}

abstract contract OwnControll {
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event AdminSet(bytes32 indexed controllerType, bytes32 indexed controllerSlot, address indexed controller, bool status);
    address public owner;
    mapping(bytes32 => mapping(address => bool)) internal admin;
    constructor() { owner = msg.sender; }
    modifier onlyOwner() { require(owner == msg.sender, "only owner");_; }
    modifier onlyAdmin(string memory type_) { require(isAdmin(type_, msg.sender), "only admin");_; }
    function transferOwnership(address newOwner) external onlyOwner { emit OwnershipTransferred(owner, newOwner); owner = newOwner; }
    function setAdmin(string calldata type_, address controller, bool status) external onlyOwner { bytes32 typeHash = keccak256(abi.encodePacked(type_)); admin[typeHash][controller] = status; emit AdminSet(typeHash, typeHash, controller, status); }
    function isAdmin(string memory type_, address controller) public view returns (bool) { bytes32 typeHash = keccak256(abi.encodePacked(type_)); return admin[typeHash][controller]; }
}

abstract contract ERC721URIPerToken {
    mapping(uint256 => string) public tokenToURI;
    function _setTokenToURI(uint256 tokenId_, string memory uri_) internal virtual {
        tokenToURI[tokenId_] = uri_;
    }
}

interface IOperatorFilterRegistry {
    function isOperatorAllowed(address registrant, address operator) external view returns (bool);
    function register(address registrant) external;
    function registerAndSubscribe(address registrant, address subscription) external;
    function registerAndCopyEntries(address registrant, address registrantToCopy) external;
    function unregister(address addr) external;
    function updateOperator(address registrant, address operator, bool filtered) external;
    function updateOperators(address registrant, address[] calldata operators, bool filtered) external;
    function updateCodeHash(address registrant, bytes32 codehash, bool filtered) external;
    function updateCodeHashes(address registrant, bytes32[] calldata codeHashes, bool filtered) external;
    function subscribe(address registrant, address registrantToSubscribe) external;
    function unsubscribe(address registrant, bool copyExistingEntries) external;
    function subscriptionOf(address addr) external returns (address registrant);
    function subscribers(address registrant) external returns (address[] memory);
    function subscriberAt(address registrant, uint256 index) external returns (address);
    function copyEntriesOf(address registrant, address registrantToCopy) external;
    function isOperatorFiltered(address registrant, address operator) external returns (bool);
    function isCodeHashOfFiltered(address registrant, address operatorWithCode) external returns (bool);
    function isCodeHashFiltered(address registrant, bytes32 codeHash) external returns (bool);
    function filteredOperators(address addr) external returns (address[] memory);
    function filteredCodeHashes(address addr) external returns (bytes32[] memory);
    function filteredOperatorAt(address registrant, uint256 index) external returns (address);
    function filteredCodeHashAt(address registrant, uint256 index) external returns (bytes32);
    function isRegistered(address addr) external returns (bool);
    function codeHashOf(address addr) external returns (bytes32);
}

abstract contract OperatorFilterer {
    error OperatorNotAllowed(address operator);

    IOperatorFilterRegistry constant operatorFilterRegistry =
        IOperatorFilterRegistry(0x000000000000AAeB6D7670E522A718067333cd4E);

    constructor(address subscriptionOrRegistrantToCopy, bool subscribe) {
        // If an inheriting token contract is deployed to a network without the registry deployed, the modifier
        // will not revert, but the contract will need to be registered with the registry once it is deployed in
        // order for the modifier to filter addresses.
        if (address(operatorFilterRegistry).code.length > 0) {
            if (subscribe) {
                operatorFilterRegistry.registerAndSubscribe(address(this), subscriptionOrRegistrantToCopy);
            } else {
                if (subscriptionOrRegistrantToCopy != address(0)) {
                    operatorFilterRegistry.registerAndCopyEntries(address(this), subscriptionOrRegistrantToCopy);
                } else {
                    operatorFilterRegistry.register(address(this));
                }
            }
        }
    }

    modifier onlyAllowedOperator(address from) virtual {
        // Check registry code length to facilitate testing in environments without a deployed registry.
        if (address(operatorFilterRegistry).code.length > 0) {
            // Allow spending tokens from addresses with balance
            // Note that this still allows listings and marketplaces with escrow to transfer tokens if transferred
            // from an EOA.
            if (from == msg.sender) {
                _;
                return;
            }
            if (
                !(
                    operatorFilterRegistry.isOperatorAllowed(address(this), msg.sender)
                        && operatorFilterRegistry.isOperatorAllowed(address(this), from)
                )
            ) {
                revert OperatorNotAllowed(msg.sender);
            }
        }
        _;
    }
}

interface IMetadata {
    function tokenURI(uint256 tokenId_) external view returns (string memory);
}

contract DEF_DJ is ERC1155Enumerable, OwnControll, ERC721URIPerToken, OperatorFilterer {

    address public metadata;
    bool public useMetadata;

    constructor() ERC1155Enumerable("Def DJ", "DDJ") OperatorFilterer(address(0x3cc6CddA760b79bAfa08dF41ECFA224f810dCeB6), true) {}

    function mint(address to_, uint256 id_, uint256 amount_, bytes memory data_) external onlyAdmin("MINTER") {
        _mint(to_, id_, amount_, data_);
    }

    function burn(address from_, uint256 id_, uint256 amount_) external onlyAdmin("BURNER") {
        _burn(from_, id_, amount_);
    }

    function setTokenToURI(uint256 tokenId_, string calldata uri_) external onlyAdmin("ADMIN") {
        _setTokenToURI(tokenId_, uri_);
    }

    function setMetadata(address address_) external onlyAdmin("ADMIN") { 
        metadata = address_; 
    }

    function setUseMetadata(bool bool_) external onlyAdmin("ADMIN") {
        useMetadata = bool_;
    }

    function uri(uint256 id_) public view override returns (string memory) {
        if (!useMetadata) {
            return tokenToURI[id_];
        } else {
            return IMetadata(metadata).tokenURI(id_);
        }
    }

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

    function safeTransferFrom(address from, address to, uint256 tokenId, uint256 amount, bytes memory data)
        public
        override
        onlyAllowedOperator(from)
    {
        super.safeTransferFrom(from, to, tokenId, amount, data);
    }

    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) public virtual override onlyAllowedOperator(from) {
        super.safeBatchTransferFrom(from, to, ids, amounts, data);
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"OperatorNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"controllerType","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"controllerSlot","type":"bytes32"},{"indexed":true,"internalType":"address","name":"controller","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"AdminSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner_","type":"address"},{"indexed":true,"internalType":"address","name":"operator_","type":"address"},{"indexed":false,"internalType":"bool","name":"approved_","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"uint256","name":"id_","type":"uint256"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id_","type":"uint256"}],"name":"getOwnersOfTokenId","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id_","type":"uint256"}],"name":"getOwnersOfTokenIdAndBalance","outputs":[{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"}],"internalType":"struct ERC1155Enumerable.TokenBalances[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ids_","type":"uint256[]"}],"name":"getTotalSupplyOfIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"type_","type":"string"},{"internalType":"address","name":"controller","type":"address"}],"name":"isAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"metadata","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"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":"tokenId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"type_","type":"string"},{"internalType":"address","name":"controller","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setAdmin","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":"address","name":"address_","type":"address"}],"name":"setMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId_","type":"uint256"},{"internalType":"string","name":"uri_","type":"string"}],"name":"setTokenToURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"bool_","type":"bool"}],"name":"setUseMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId_","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenToOwners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"tokenToOwnersToIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenToURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id_","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"useMetadata","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801562000010575f80fd5b50733cc6cdda760b79bafa08df41ecfa224f810dceb660016040518060400160405280600681526020017f44656620444a00000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f44444a0000000000000000000000000000000000000000000000000000000000815250815f9081620000a4919062000549565b508060019081620000b6919062000549565b5050503360065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115620002dd578015620001ae576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16637d3e3dbe30846040518363ffffffff1660e01b81526004016200017992919062000670565b5f604051808303815f87803b15801562000191575f80fd5b505af1158015620001a4573d5f803e3d5ffd5b50505050620002dc565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462000262576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663a0af290330846040518363ffffffff1660e01b81526004016200022d92919062000670565b5f604051808303815f87803b15801562000245575f80fd5b505af115801562000258573d5f803e3d5ffd5b50505050620002db565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16634420e486306040518263ffffffff1660e01b8152600401620002ab91906200069b565b5f604051808303815f87803b158015620002c3575f80fd5b505af1158015620002d6573d5f803e3d5ffd5b505050505b5b5b5050620006b6565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200036157607f821691505b6020821081036200037757620003766200031c565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620003db7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200039e565b620003e786836200039e565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620004316200042b6200042584620003ff565b62000408565b620003ff565b9050919050565b5f819050919050565b6200044c8362000411565b620004646200045b8262000438565b848454620003aa565b825550505050565b5f90565b6200047a6200046c565b6200048781848462000441565b505050565b5b81811015620004ae57620004a25f8262000470565b6001810190506200048d565b5050565b601f821115620004fd57620004c7816200037d565b620004d2846200038f565b81016020851015620004e2578190505b620004fa620004f1856200038f565b8301826200048c565b50505b505050565b5f82821c905092915050565b5f6200051f5f198460080262000502565b1980831691505092915050565b5f6200053983836200050e565b9150826002028217905092915050565b6200055482620002e5565b67ffffffffffffffff81111562000570576200056f620002ef565b5b6200057c825462000349565b62000589828285620004b2565b5f60209050601f831160018114620005bf575f8415620005aa578287015190505b620005b685826200052c565b86555062000625565b601f198416620005cf866200037d565b5f5b82811015620005f857848901518255600182019150602085019450602081019050620005d1565b8683101562000618578489015162000614601f8916826200050e565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000658826200062d565b9050919050565b6200066a816200064c565b82525050565b5f604082019050620006855f8301856200065f565b6200069460208301846200065f565b9392505050565b5f602082019050620006b05f8301846200065f565b92915050565b613ea780620006c45f395ff3fe608060405234801561000f575f80fd5b50600436106101c1575f3560e01c806374805127116100f7578063c1eac03d11610095578063f242432a1161006f578063f242432a1461054d578063f2fde38b14610569578063f3cb838514610585578063f5298aca146105a1576101c1565b8063c1eac03d146104d1578063dd184008146104ed578063e985e9c51461051d576101c1565b806395d89b41116100d157806395d89b411461044b5780639a5bb0ef146104695780639dd745af14610485578063a22cb465146104b5576101c1565b806374805127146103cd5780638cd16a76146103fd5780638da5cb5b1461042d576101c1565b8063392f37e9116101645780633eba595e1161013e5780633eba595e146103355780634e1273f4146103655780636daa1c7614610395578063731133e9146103b1576101c1565b8063392f37e9146102dd5780633b486095146102fb5780633ccfd60b1461032b576101c1565b80630bbcf0ec116101a05780630bbcf0ec146102435780630e89341c146102615780632eb2c2d6146102915780632f6b16d7146102ad576101c1565b8062fdd58e146101c557806301ffc9a7146101f557806306fdde0314610225575b5f80fd5b6101df60048036038101906101da91906126f2565b6105bd565b6040516101ec919061273f565b60405180910390f35b61020f600480360381019061020a91906127ad565b6105dd565b60405161021c91906127f2565b60405180910390f35b61022d61066e565b60405161023a9190612895565b60405180910390f35b61024b6106f9565b60405161025891906127f2565b60405180910390f35b61027b600480360381019061027691906128b5565b61070c565b6040516102889190612895565b60405180910390f35b6102ab60048036038101906102a69190612ad0565b610865565b005b6102c760048036038101906102c291906128b5565b610a48565b6040516102d49190612895565b60405180910390f35b6102e5610ae3565b6040516102f29190612baa565b60405180910390f35b61031560048036038101906103109190612c61565b610b08565b60405161032291906127f2565b60405180910390f35b610333610b95565b005b61034f600480360381019061034a9190612cbb565b610c6f565b60405161035c919061273f565b60405180910390f35b61037f600480360381019061037a9190612db9565b610c8f565b60405161038c9190612ee6565b60405180910390f35b6103af60048036038101906103aa9190612f89565b610dbb565b005b6103cb60048036038101906103c69190612ffa565b610f30565b005b6103e760048036038101906103e291906128b5565b610fc2565b6040516103f49190613131565b60405180910390f35b610417600480360381019061041291906128b5565b61105e565b6040516104249190613226565b60405180910390f35b6104356111a5565b6040516104429190612baa565b60405180910390f35b6104536111ca565b6040516104609190612895565b60405180910390f35b610483600480360381019061047e9190613246565b611256565b005b61049f600480360381019061049a9190613271565b6112f3565b6040516104ac9190612baa565b60405180910390f35b6104cf60048036038101906104ca91906132af565b61133b565b005b6104eb60048036038101906104e691906132ed565b611433565b005b6105076004803603810190610502919061339f565b611505565b604051610514919061273f565b60405180910390f35b610537600480360381019061053291906133ea565b611562565b60405161054491906127f2565b60405180910390f35b61056760048036038101906105629190613428565b61158c565b005b610583600480360381019061057e91906134bb565b61176f565b005b61059f600480360381019061059a91906134bb565b6118bc565b005b6105bb60048036038101906105b691906134e6565b61197f565b005b6002602052815f5260405f20602052805f5260405f205f91509150505481565b5f6301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610637575063d9b67a2660e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106675750630e89341c60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b5f805461067a90613563565b80601f01602080910402602001604051908101604052809291908181526020018280546106a690613563565b80156106f15780601f106106c8576101008083540402835291602001916106f1565b820191905f5260205f20905b8154815290600101906020018083116106d457829003601f168201915b505050505081565b600960149054906101000a900460ff1681565b6060600960149054906101000a900460ff166107c15760085f8381526020019081526020015f20805461073e90613563565b80601f016020809104026020016040519081016040528092919081815260200182805461076a90613563565b80156107b55780601f1061078c576101008083540402835291602001916107b5565b820191905f5260205f20905b81548152906001019060200180831161079857829003601f168201915b50505050509050610860565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c87b56dd836040518263ffffffff1660e01b815260040161081b919061273f565b5f60405180830381865afa158015610835573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061085d9190613601565b90505b919050565b845f6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115610a32573373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036108d8576108d38686868686611a0f565b610a40565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430336040518363ffffffff1660e01b8152600401610921929190613648565b602060405180830381865afa15801561093c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109609190613683565b80156109f057506daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430836040518363ffffffff1660e01b81526004016109b0929190613648565b602060405180830381865afa1580156109cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ef9190613683565b5b610a3157336040517fede71dcc000000000000000000000000000000000000000000000000000000008152600401610a289190612baa565b60405180910390fd5b5b610a3f8686868686611a0f565b5b505050505050565b6008602052805f5260405f205f915090508054610a6490613563565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9090613563565b8015610adb5780601f10610ab257610100808354040283529160200191610adb565b820191905f5260205f20905b815481529060010190602001808311610abe57829003601f168201915b505050505081565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8083604051602001610b1b91906136e8565b60405160208183030381529060405280519060200120905060075f8281526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691505092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1b90613748565b60405180910390fd5b5f4790503373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610c6b573d5f803e3d5ffd5b5050565b6005602052815f5260405f20602052805f5260405f205f91509150505481565b6060610c9d83518351611b25565b610ca5575f80fd5b5f835167ffffffffffffffff811115610cc157610cc06128e4565b5b604051908082528060200260200182016040528015610cef5781602001602082028036833780820191505090505b5090505f5b8451811015610db05760025f868381518110610d1357610d12613766565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f858381518110610d6857610d67613766565b5b602002602001015181526020019081526020015f2054828281518110610d9157610d90613766565b5b6020026020010181815250508080610da8906137c0565b915050610cf4565b508091505092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4190613748565b60405180910390fd5b5f8484604051602001610e5e92919061382b565b6040516020818303038152906040528051906020012090508160075f8381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff1681827fe291659343333aaee31a50d2695b1a6eb5ddbd261e6440e4c3b9516d6715563c85604051610f2191906127f2565b60405180910390a45050505050565b6040518060400160405280600681526020017f4d494e5445520000000000000000000000000000000000000000000000000000815250610f708133610b08565b610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa69061388d565b60405180910390fd5b610fbb85858585611b31565b5050505050565b606060045f8381526020019081526020015f2080548060200260200160405190810160405280929190818152602001828054801561105257602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611009575b50505050509050919050565b60605f61106a83610fc2565b90505f815190505f8167ffffffffffffffff81111561108c5761108b6128e4565b5b6040519080825280602002602001820160405280156110c557816020015b6110b2612626565b8152602001906001900390816110aa5790505b5090505f5b82811015611199575f8482815181106110e6576110e5613766565b5b6020026020010151905060405180604001604052808273ffffffffffffffffffffffffffffffffffffffff16815260200160025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a81526020019081526020015f205481525083838151811061117a57611179613766565b5b6020026020010181905250508080611191906137c0565b9150506110ca565b50809350505050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600180546111d790613563565b80601f016020809104026020016040519081016040528092919081815260200182805461120390613563565b801561124e5780601f106112255761010080835404028352916020019161124e565b820191905f5260205f20905b81548152906001019060200180831161123157829003601f168201915b505050505081565b6040518060400160405280600581526020017f41444d494e0000000000000000000000000000000000000000000000000000008152506112968133610b08565b6112d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cc9061388d565b60405180910390fd5b81600960146101000a81548160ff0219169083151502179055505050565b6004602052815f5260405f20818154811061130c575f80fd5b905f5260205f20015f915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b8060035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161142791906127f2565b60405180910390a35050565b6040518060400160405280600581526020017f41444d494e0000000000000000000000000000000000000000000000000000008152506114738133610b08565b6114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a99061388d565b60405180910390fd5b6114ff8484848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611bcd565b50505050565b5f805f5b848490508110156115575761153685858381811061152a57611529613766565b5b90506020020135610fc2565b518261154291906138ab565b9150808061154f906137c0565b915050611509565b508091505092915050565b6003602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b845f6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115611759573373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115ff576115fa8686868686611bf0565b611767565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430336040518363ffffffff1660e01b8152600401611648929190613648565b602060405180830381865afa158015611663573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116879190613683565b801561171757506daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430836040518363ffffffff1660e01b81526004016116d7929190613648565b602060405180830381865afa1580156116f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117169190613683565b5b61175857336040517fede71dcc00000000000000000000000000000000000000000000000000000000815260040161174f9190612baa565b60405180910390fd5b5b6117668686868686611bf0565b5b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f590613748565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040518060400160405280600581526020017f41444d494e0000000000000000000000000000000000000000000000000000008152506118fc8133610b08565b61193b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119329061388d565b60405180910390fd5b8160095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6040518060400160405280600681526020017f4255524e455200000000000000000000000000000000000000000000000000008152506119bf8133610b08565b6119fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f59061388d565b60405180910390fd5b611a09848484611c9f565b50505050565b611a1b83518351611b25565b611a23575f80fd5b611a2c85611d2d565b611a34575f80fd5b5f5b8351811015611a9257611a7f8686868481518110611a5757611a56613766565b5b6020026020010151868581518110611a7257611a71613766565b5b6020026020010151611df0565b8080611a8a906137c0565b915050611a36565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611b099291906138de565b60405180910390a4611b1e8585858585611ece565b5050505050565b5f818314905092915050565b611b3c848484612030565b8373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051611bb2929190613913565b60405180910390a4611bc75f858585856120a1565b50505050565b8060085f8481526020019081526020015f209081611beb9190613ad7565b505050565b611bf985611d2d565b611c01575f80fd5b611c0d85858585611df0565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051611c83929190613913565b60405180910390a4611c9885858585856120a1565b5050505050565b611caa838383612203565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051611d20929190613913565b60405180910390a4505050565b5f8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611de9575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b9050919050565b611dfa8383612274565b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205f828254611e5591906138ab565b925050819055508060025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205f828254611eb79190613ba6565b92505081905550611ec884836123a5565b50505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b14611fb95763bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663bc197c8133888787876040518663ffffffff1660e01b8152600401611f54959493929190613c2b565b6020604051808303815f875af1158015611f70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f949190613ca5565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611fea565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b612029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202090613d40565b60405180910390fd5b5050505050565b61203a8383612274565b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205f82825461209591906138ab565b92505081905550505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b1461218c5763f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663f23a6e6133888787876040518663ffffffff1660e01b8152600401612127959493929190613d5e565b6020604051808303815f875af1158015612143573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121679190613ca5565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146121bd565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b6121fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f390613e26565b60405180910390fd5b5050505050565b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205f82825461225e9190613ba6565b9250508190555061226f83836123a5565b505050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054036123a1575f60045f8381526020019081526020015f2080549050905060045f8381526020019081526020015f2083908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060055f8481526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205403612622575f60055f8381526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f600160045f8581526020019081526020015f208054905061246a9190613ba6565b905080821461257d575f60045f8581526020019081526020015f20828154811061249757612496613766565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508060045f8681526020019081526020015f2084815481106124e5576124e4613766565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260055f8681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b60045f8481526020019081526020015f2080548061259e5761259d613e44565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905560055f8481526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f905550505b5050565b60405180604001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81525090565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61268e82612665565b9050919050565b61269e81612684565b81146126a8575f80fd5b50565b5f813590506126b981612695565b92915050565b5f819050919050565b6126d1816126bf565b81146126db575f80fd5b50565b5f813590506126ec816126c8565b92915050565b5f80604083850312156127085761270761265d565b5b5f612715858286016126ab565b9250506020612726858286016126de565b9150509250929050565b612739816126bf565b82525050565b5f6020820190506127525f830184612730565b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61278c81612758565b8114612796575f80fd5b50565b5f813590506127a781612783565b92915050565b5f602082840312156127c2576127c161265d565b5b5f6127cf84828501612799565b91505092915050565b5f8115159050919050565b6127ec816127d8565b82525050565b5f6020820190506128055f8301846127e3565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612842578082015181840152602081019050612827565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6128678261280b565b6128718185612815565b9350612881818560208601612825565b61288a8161284d565b840191505092915050565b5f6020820190508181035f8301526128ad818461285d565b905092915050565b5f602082840312156128ca576128c961265d565b5b5f6128d7848285016126de565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61291a8261284d565b810181811067ffffffffffffffff82111715612939576129386128e4565b5b80604052505050565b5f61294b612654565b90506129578282612911565b919050565b5f67ffffffffffffffff821115612976576129756128e4565b5b602082029050602081019050919050565b5f80fd5b5f61299d6129988461295c565b612942565b905080838252602082019050602084028301858111156129c0576129bf612987565b5b835b818110156129e957806129d588826126de565b8452602084019350506020810190506129c2565b5050509392505050565b5f82601f830112612a0757612a066128e0565b5b8135612a1784826020860161298b565b91505092915050565b5f80fd5b5f67ffffffffffffffff821115612a3e57612a3d6128e4565b5b612a478261284d565b9050602081019050919050565b828183375f83830152505050565b5f612a74612a6f84612a24565b612942565b905082815260208101848484011115612a9057612a8f612a20565b5b612a9b848285612a54565b509392505050565b5f82601f830112612ab757612ab66128e0565b5b8135612ac7848260208601612a62565b91505092915050565b5f805f805f60a08688031215612ae957612ae861265d565b5b5f612af6888289016126ab565b9550506020612b07888289016126ab565b945050604086013567ffffffffffffffff811115612b2857612b27612661565b5b612b34888289016129f3565b935050606086013567ffffffffffffffff811115612b5557612b54612661565b5b612b61888289016129f3565b925050608086013567ffffffffffffffff811115612b8257612b81612661565b5b612b8e88828901612aa3565b9150509295509295909350565b612ba481612684565b82525050565b5f602082019050612bbd5f830184612b9b565b92915050565b5f67ffffffffffffffff821115612bdd57612bdc6128e4565b5b612be68261284d565b9050602081019050919050565b5f612c05612c0084612bc3565b612942565b905082815260208101848484011115612c2157612c20612a20565b5b612c2c848285612a54565b509392505050565b5f82601f830112612c4857612c476128e0565b5b8135612c58848260208601612bf3565b91505092915050565b5f8060408385031215612c7757612c7661265d565b5b5f83013567ffffffffffffffff811115612c9457612c93612661565b5b612ca085828601612c34565b9250506020612cb1858286016126ab565b9150509250929050565b5f8060408385031215612cd157612cd061265d565b5b5f612cde858286016126de565b9250506020612cef858286016126ab565b9150509250929050565b5f67ffffffffffffffff821115612d1357612d126128e4565b5b602082029050602081019050919050565b5f612d36612d3184612cf9565b612942565b90508083825260208201905060208402830185811115612d5957612d58612987565b5b835b81811015612d825780612d6e88826126ab565b845260208401935050602081019050612d5b565b5050509392505050565b5f82601f830112612da057612d9f6128e0565b5b8135612db0848260208601612d24565b91505092915050565b5f8060408385031215612dcf57612dce61265d565b5b5f83013567ffffffffffffffff811115612dec57612deb612661565b5b612df885828601612d8c565b925050602083013567ffffffffffffffff811115612e1957612e18612661565b5b612e25858286016129f3565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612e61816126bf565b82525050565b5f612e728383612e58565b60208301905092915050565b5f602082019050919050565b5f612e9482612e2f565b612e9e8185612e39565b9350612ea983612e49565b805f5b83811015612ed9578151612ec08882612e67565b9750612ecb83612e7e565b925050600181019050612eac565b5085935050505092915050565b5f6020820190508181035f830152612efe8184612e8a565b905092915050565b5f80fd5b5f8083601f840112612f1f57612f1e6128e0565b5b8235905067ffffffffffffffff811115612f3c57612f3b612f06565b5b602083019150836001820283011115612f5857612f57612987565b5b9250929050565b612f68816127d8565b8114612f72575f80fd5b50565b5f81359050612f8381612f5f565b92915050565b5f805f8060608587031215612fa157612fa061265d565b5b5f85013567ffffffffffffffff811115612fbe57612fbd612661565b5b612fca87828801612f0a565b94509450506020612fdd878288016126ab565b9250506040612fee87828801612f75565b91505092959194509250565b5f805f80608085870312156130125761301161265d565b5b5f61301f878288016126ab565b9450506020613030878288016126de565b9350506040613041878288016126de565b925050606085013567ffffffffffffffff81111561306257613061612661565b5b61306e87828801612aa3565b91505092959194509250565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6130ac81612684565b82525050565b5f6130bd83836130a3565b60208301905092915050565b5f602082019050919050565b5f6130df8261307a565b6130e98185613084565b93506130f483613094565b805f5b8381101561312457815161310b88826130b2565b9750613116836130c9565b9250506001810190506130f7565b5085935050505092915050565b5f6020820190508181035f83015261314981846130d5565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b604082015f82015161318e5f8501826130a3565b5060208201516131a16020850182612e58565b50505050565b5f6131b2838361317a565b60408301905092915050565b5f602082019050919050565b5f6131d482613151565b6131de818561315b565b93506131e98361316b565b805f5b8381101561321957815161320088826131a7565b975061320b836131be565b9250506001810190506131ec565b5085935050505092915050565b5f6020820190508181035f83015261323e81846131ca565b905092915050565b5f6020828403121561325b5761325a61265d565b5b5f61326884828501612f75565b91505092915050565b5f80604083850312156132875761328661265d565b5b5f613294858286016126de565b92505060206132a5858286016126de565b9150509250929050565b5f80604083850312156132c5576132c461265d565b5b5f6132d2858286016126ab565b92505060206132e385828601612f75565b9150509250929050565b5f805f604084860312156133045761330361265d565b5b5f613311868287016126de565b935050602084013567ffffffffffffffff81111561333257613331612661565b5b61333e86828701612f0a565b92509250509250925092565b5f8083601f84011261335f5761335e6128e0565b5b8235905067ffffffffffffffff81111561337c5761337b612f06565b5b60208301915083602082028301111561339857613397612987565b5b9250929050565b5f80602083850312156133b5576133b461265d565b5b5f83013567ffffffffffffffff8111156133d2576133d1612661565b5b6133de8582860161334a565b92509250509250929050565b5f8060408385031215613400576133ff61265d565b5b5f61340d858286016126ab565b925050602061341e858286016126ab565b9150509250929050565b5f805f805f60a086880312156134415761344061265d565b5b5f61344e888289016126ab565b955050602061345f888289016126ab565b9450506040613470888289016126de565b9350506060613481888289016126de565b925050608086013567ffffffffffffffff8111156134a2576134a1612661565b5b6134ae88828901612aa3565b9150509295509295909350565b5f602082840312156134d0576134cf61265d565b5b5f6134dd848285016126ab565b91505092915050565b5f805f606084860312156134fd576134fc61265d565b5b5f61350a868287016126ab565b935050602061351b868287016126de565b925050604061352c868287016126de565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061357a57607f821691505b60208210810361358d5761358c613536565b5b50919050565b5f6135a56135a084612bc3565b612942565b9050828152602081018484840111156135c1576135c0612a20565b5b6135cc848285612825565b509392505050565b5f82601f8301126135e8576135e76128e0565b5b81516135f8848260208601613593565b91505092915050565b5f602082840312156136165761361561265d565b5b5f82015167ffffffffffffffff81111561363357613632612661565b5b61363f848285016135d4565b91505092915050565b5f60408201905061365b5f830185612b9b565b6136686020830184612b9b565b9392505050565b5f8151905061367d81612f5f565b92915050565b5f602082840312156136985761369761265d565b5b5f6136a58482850161366f565b91505092915050565b5f81905092915050565b5f6136c28261280b565b6136cc81856136ae565b93506136dc818560208601612825565b80840191505092915050565b5f6136f382846136b8565b915081905092915050565b7f6f6e6c79206f776e6572000000000000000000000000000000000000000000005f82015250565b5f613732600a83612815565b915061373d826136fe565b602082019050919050565b5f6020820190508181035f83015261375f81613726565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6137ca826126bf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036137fc576137fb613793565b5b600182019050919050565b5f61381283856136ae565b935061381f838584612a54565b82840190509392505050565b5f613837828486613807565b91508190509392505050565b7f6f6e6c792061646d696e000000000000000000000000000000000000000000005f82015250565b5f613877600a83612815565b915061388282613843565b602082019050919050565b5f6020820190508181035f8301526138a48161386b565b9050919050565b5f6138b5826126bf565b91506138c0836126bf565b92508282019050808211156138d8576138d7613793565b5b92915050565b5f6040820190508181035f8301526138f68185612e8a565b9050818103602083015261390a8184612e8a565b90509392505050565b5f6040820190506139265f830185612730565b6139336020830184612730565b9392505050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026139967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261395b565b6139a0868361395b565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6139db6139d66139d1846126bf565b6139b8565b6126bf565b9050919050565b5f819050919050565b6139f4836139c1565b613a08613a00826139e2565b848454613967565b825550505050565b5f90565b613a1c613a10565b613a278184846139eb565b505050565b5b81811015613a4a57613a3f5f82613a14565b600181019050613a2d565b5050565b601f821115613a8f57613a608161393a565b613a698461394c565b81016020851015613a78578190505b613a8c613a848561394c565b830182613a2c565b50505b505050565b5f82821c905092915050565b5f613aaf5f1984600802613a94565b1980831691505092915050565b5f613ac78383613aa0565b9150826002028217905092915050565b613ae08261280b565b67ffffffffffffffff811115613af957613af86128e4565b5b613b038254613563565b613b0e828285613a4e565b5f60209050601f831160018114613b3f575f8415613b2d578287015190505b613b378582613abc565b865550613b9e565b601f198416613b4d8661393a565b5f5b82811015613b7457848901518255600182019150602085019450602081019050613b4f565b86831015613b915784890151613b8d601f891682613aa0565b8355505b6001600288020188555050505b505050505050565b5f613bb0826126bf565b9150613bbb836126bf565b9250828203905081811115613bd357613bd2613793565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f613bfd82613bd9565b613c078185613be3565b9350613c17818560208601612825565b613c208161284d565b840191505092915050565b5f60a082019050613c3e5f830188612b9b565b613c4b6020830187612b9b565b8181036040830152613c5d8186612e8a565b90508181036060830152613c718185612e8a565b90508181036080830152613c858184613bf3565b90509695505050505050565b5f81519050613c9f81612783565b92915050565b5f60208284031215613cba57613cb961265d565b5b5f613cc784828501613c91565b91505092915050565b7f5f455243313135354261746368537570706f7274656428293a20556e737570705f8201527f6f7274656420526563697069656e742100000000000000000000000000000000602082015250565b5f613d2a603083612815565b9150613d3582613cd0565b604082019050919050565b5f6020820190508181035f830152613d5781613d1e565b9050919050565b5f60a082019050613d715f830188612b9b565b613d7e6020830187612b9b565b613d8b6040830186612730565b613d986060830185612730565b8181036080830152613daa8184613bf3565b90509695505050505050565b7f5f45524331313535537570706f7274656428293a20556e737570706f727465645f8201527f20526563697069656e7421000000000000000000000000000000000000000000602082015250565b5f613e10602b83612815565b9150613e1b82613db6565b604082019050919050565b5f6020820190508181035f830152613e3d81613e04565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea26469706673582212204c3b4e3b8c26305a311e5e2bf0a545e9d669c2b7535be7c0b32383dabea27f9264736f6c63430008140033

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106101c1575f3560e01c806374805127116100f7578063c1eac03d11610095578063f242432a1161006f578063f242432a1461054d578063f2fde38b14610569578063f3cb838514610585578063f5298aca146105a1576101c1565b8063c1eac03d146104d1578063dd184008146104ed578063e985e9c51461051d576101c1565b806395d89b41116100d157806395d89b411461044b5780639a5bb0ef146104695780639dd745af14610485578063a22cb465146104b5576101c1565b806374805127146103cd5780638cd16a76146103fd5780638da5cb5b1461042d576101c1565b8063392f37e9116101645780633eba595e1161013e5780633eba595e146103355780634e1273f4146103655780636daa1c7614610395578063731133e9146103b1576101c1565b8063392f37e9146102dd5780633b486095146102fb5780633ccfd60b1461032b576101c1565b80630bbcf0ec116101a05780630bbcf0ec146102435780630e89341c146102615780632eb2c2d6146102915780632f6b16d7146102ad576101c1565b8062fdd58e146101c557806301ffc9a7146101f557806306fdde0314610225575b5f80fd5b6101df60048036038101906101da91906126f2565b6105bd565b6040516101ec919061273f565b60405180910390f35b61020f600480360381019061020a91906127ad565b6105dd565b60405161021c91906127f2565b60405180910390f35b61022d61066e565b60405161023a9190612895565b60405180910390f35b61024b6106f9565b60405161025891906127f2565b60405180910390f35b61027b600480360381019061027691906128b5565b61070c565b6040516102889190612895565b60405180910390f35b6102ab60048036038101906102a69190612ad0565b610865565b005b6102c760048036038101906102c291906128b5565b610a48565b6040516102d49190612895565b60405180910390f35b6102e5610ae3565b6040516102f29190612baa565b60405180910390f35b61031560048036038101906103109190612c61565b610b08565b60405161032291906127f2565b60405180910390f35b610333610b95565b005b61034f600480360381019061034a9190612cbb565b610c6f565b60405161035c919061273f565b60405180910390f35b61037f600480360381019061037a9190612db9565b610c8f565b60405161038c9190612ee6565b60405180910390f35b6103af60048036038101906103aa9190612f89565b610dbb565b005b6103cb60048036038101906103c69190612ffa565b610f30565b005b6103e760048036038101906103e291906128b5565b610fc2565b6040516103f49190613131565b60405180910390f35b610417600480360381019061041291906128b5565b61105e565b6040516104249190613226565b60405180910390f35b6104356111a5565b6040516104429190612baa565b60405180910390f35b6104536111ca565b6040516104609190612895565b60405180910390f35b610483600480360381019061047e9190613246565b611256565b005b61049f600480360381019061049a9190613271565b6112f3565b6040516104ac9190612baa565b60405180910390f35b6104cf60048036038101906104ca91906132af565b61133b565b005b6104eb60048036038101906104e691906132ed565b611433565b005b6105076004803603810190610502919061339f565b611505565b604051610514919061273f565b60405180910390f35b610537600480360381019061053291906133ea565b611562565b60405161054491906127f2565b60405180910390f35b61056760048036038101906105629190613428565b61158c565b005b610583600480360381019061057e91906134bb565b61176f565b005b61059f600480360381019061059a91906134bb565b6118bc565b005b6105bb60048036038101906105b691906134e6565b61197f565b005b6002602052815f5260405f20602052805f5260405f205f91509150505481565b5f6301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610637575063d9b67a2660e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106675750630e89341c60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b5f805461067a90613563565b80601f01602080910402602001604051908101604052809291908181526020018280546106a690613563565b80156106f15780601f106106c8576101008083540402835291602001916106f1565b820191905f5260205f20905b8154815290600101906020018083116106d457829003601f168201915b505050505081565b600960149054906101000a900460ff1681565b6060600960149054906101000a900460ff166107c15760085f8381526020019081526020015f20805461073e90613563565b80601f016020809104026020016040519081016040528092919081815260200182805461076a90613563565b80156107b55780601f1061078c576101008083540402835291602001916107b5565b820191905f5260205f20905b81548152906001019060200180831161079857829003601f168201915b50505050509050610860565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c87b56dd836040518263ffffffff1660e01b815260040161081b919061273f565b5f60405180830381865afa158015610835573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061085d9190613601565b90505b919050565b845f6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115610a32573373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036108d8576108d38686868686611a0f565b610a40565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430336040518363ffffffff1660e01b8152600401610921929190613648565b602060405180830381865afa15801561093c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109609190613683565b80156109f057506daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430836040518363ffffffff1660e01b81526004016109b0929190613648565b602060405180830381865afa1580156109cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ef9190613683565b5b610a3157336040517fede71dcc000000000000000000000000000000000000000000000000000000008152600401610a289190612baa565b60405180910390fd5b5b610a3f8686868686611a0f565b5b505050505050565b6008602052805f5260405f205f915090508054610a6490613563565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9090613563565b8015610adb5780601f10610ab257610100808354040283529160200191610adb565b820191905f5260205f20905b815481529060010190602001808311610abe57829003601f168201915b505050505081565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8083604051602001610b1b91906136e8565b60405160208183030381529060405280519060200120905060075f8281526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691505092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1b90613748565b60405180910390fd5b5f4790503373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610c6b573d5f803e3d5ffd5b5050565b6005602052815f5260405f20602052805f5260405f205f91509150505481565b6060610c9d83518351611b25565b610ca5575f80fd5b5f835167ffffffffffffffff811115610cc157610cc06128e4565b5b604051908082528060200260200182016040528015610cef5781602001602082028036833780820191505090505b5090505f5b8451811015610db05760025f868381518110610d1357610d12613766565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f858381518110610d6857610d67613766565b5b602002602001015181526020019081526020015f2054828281518110610d9157610d90613766565b5b6020026020010181815250508080610da8906137c0565b915050610cf4565b508091505092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4190613748565b60405180910390fd5b5f8484604051602001610e5e92919061382b565b6040516020818303038152906040528051906020012090508160075f8381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff1681827fe291659343333aaee31a50d2695b1a6eb5ddbd261e6440e4c3b9516d6715563c85604051610f2191906127f2565b60405180910390a45050505050565b6040518060400160405280600681526020017f4d494e5445520000000000000000000000000000000000000000000000000000815250610f708133610b08565b610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa69061388d565b60405180910390fd5b610fbb85858585611b31565b5050505050565b606060045f8381526020019081526020015f2080548060200260200160405190810160405280929190818152602001828054801561105257602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611009575b50505050509050919050565b60605f61106a83610fc2565b90505f815190505f8167ffffffffffffffff81111561108c5761108b6128e4565b5b6040519080825280602002602001820160405280156110c557816020015b6110b2612626565b8152602001906001900390816110aa5790505b5090505f5b82811015611199575f8482815181106110e6576110e5613766565b5b6020026020010151905060405180604001604052808273ffffffffffffffffffffffffffffffffffffffff16815260200160025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a81526020019081526020015f205481525083838151811061117a57611179613766565b5b6020026020010181905250508080611191906137c0565b9150506110ca565b50809350505050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600180546111d790613563565b80601f016020809104026020016040519081016040528092919081815260200182805461120390613563565b801561124e5780601f106112255761010080835404028352916020019161124e565b820191905f5260205f20905b81548152906001019060200180831161123157829003601f168201915b505050505081565b6040518060400160405280600581526020017f41444d494e0000000000000000000000000000000000000000000000000000008152506112968133610b08565b6112d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cc9061388d565b60405180910390fd5b81600960146101000a81548160ff0219169083151502179055505050565b6004602052815f5260405f20818154811061130c575f80fd5b905f5260205f20015f915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b8060035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161142791906127f2565b60405180910390a35050565b6040518060400160405280600581526020017f41444d494e0000000000000000000000000000000000000000000000000000008152506114738133610b08565b6114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a99061388d565b60405180910390fd5b6114ff8484848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611bcd565b50505050565b5f805f5b848490508110156115575761153685858381811061152a57611529613766565b5b90506020020135610fc2565b518261154291906138ab565b9150808061154f906137c0565b915050611509565b508091505092915050565b6003602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b845f6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115611759573373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115ff576115fa8686868686611bf0565b611767565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430336040518363ffffffff1660e01b8152600401611648929190613648565b602060405180830381865afa158015611663573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116879190613683565b801561171757506daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430836040518363ffffffff1660e01b81526004016116d7929190613648565b602060405180830381865afa1580156116f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117169190613683565b5b61175857336040517fede71dcc00000000000000000000000000000000000000000000000000000000815260040161174f9190612baa565b60405180910390fd5b5b6117668686868686611bf0565b5b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f590613748565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040518060400160405280600581526020017f41444d494e0000000000000000000000000000000000000000000000000000008152506118fc8133610b08565b61193b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119329061388d565b60405180910390fd5b8160095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6040518060400160405280600681526020017f4255524e455200000000000000000000000000000000000000000000000000008152506119bf8133610b08565b6119fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f59061388d565b60405180910390fd5b611a09848484611c9f565b50505050565b611a1b83518351611b25565b611a23575f80fd5b611a2c85611d2d565b611a34575f80fd5b5f5b8351811015611a9257611a7f8686868481518110611a5757611a56613766565b5b6020026020010151868581518110611a7257611a71613766565b5b6020026020010151611df0565b8080611a8a906137c0565b915050611a36565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611b099291906138de565b60405180910390a4611b1e8585858585611ece565b5050505050565b5f818314905092915050565b611b3c848484612030565b8373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051611bb2929190613913565b60405180910390a4611bc75f858585856120a1565b50505050565b8060085f8481526020019081526020015f209081611beb9190613ad7565b505050565b611bf985611d2d565b611c01575f80fd5b611c0d85858585611df0565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051611c83929190613913565b60405180910390a4611c9885858585856120a1565b5050505050565b611caa838383612203565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051611d20929190613913565b60405180910390a4505050565b5f8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611de9575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b9050919050565b611dfa8383612274565b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205f828254611e5591906138ab565b925050819055508060025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205f828254611eb79190613ba6565b92505081905550611ec884836123a5565b50505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b14611fb95763bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663bc197c8133888787876040518663ffffffff1660e01b8152600401611f54959493929190613c2b565b6020604051808303815f875af1158015611f70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f949190613ca5565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611fea565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b612029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202090613d40565b60405180910390fd5b5050505050565b61203a8383612274565b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205f82825461209591906138ab565b92505081905550505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b1461218c5763f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663f23a6e6133888787876040518663ffffffff1660e01b8152600401612127959493929190613d5e565b6020604051808303815f875af1158015612143573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121679190613ca5565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146121bd565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b6121fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f390613e26565b60405180910390fd5b5050505050565b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205f82825461225e9190613ba6565b9250508190555061226f83836123a5565b505050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054036123a1575f60045f8381526020019081526020015f2080549050905060045f8381526020019081526020015f2083908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060055f8481526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205403612622575f60055f8381526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f600160045f8581526020019081526020015f208054905061246a9190613ba6565b905080821461257d575f60045f8581526020019081526020015f20828154811061249757612496613766565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508060045f8681526020019081526020015f2084815481106124e5576124e4613766565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260055f8681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b60045f8481526020019081526020015f2080548061259e5761259d613e44565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905560055f8481526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f905550505b5050565b60405180604001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81525090565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61268e82612665565b9050919050565b61269e81612684565b81146126a8575f80fd5b50565b5f813590506126b981612695565b92915050565b5f819050919050565b6126d1816126bf565b81146126db575f80fd5b50565b5f813590506126ec816126c8565b92915050565b5f80604083850312156127085761270761265d565b5b5f612715858286016126ab565b9250506020612726858286016126de565b9150509250929050565b612739816126bf565b82525050565b5f6020820190506127525f830184612730565b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61278c81612758565b8114612796575f80fd5b50565b5f813590506127a781612783565b92915050565b5f602082840312156127c2576127c161265d565b5b5f6127cf84828501612799565b91505092915050565b5f8115159050919050565b6127ec816127d8565b82525050565b5f6020820190506128055f8301846127e3565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612842578082015181840152602081019050612827565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6128678261280b565b6128718185612815565b9350612881818560208601612825565b61288a8161284d565b840191505092915050565b5f6020820190508181035f8301526128ad818461285d565b905092915050565b5f602082840312156128ca576128c961265d565b5b5f6128d7848285016126de565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61291a8261284d565b810181811067ffffffffffffffff82111715612939576129386128e4565b5b80604052505050565b5f61294b612654565b90506129578282612911565b919050565b5f67ffffffffffffffff821115612976576129756128e4565b5b602082029050602081019050919050565b5f80fd5b5f61299d6129988461295c565b612942565b905080838252602082019050602084028301858111156129c0576129bf612987565b5b835b818110156129e957806129d588826126de565b8452602084019350506020810190506129c2565b5050509392505050565b5f82601f830112612a0757612a066128e0565b5b8135612a1784826020860161298b565b91505092915050565b5f80fd5b5f67ffffffffffffffff821115612a3e57612a3d6128e4565b5b612a478261284d565b9050602081019050919050565b828183375f83830152505050565b5f612a74612a6f84612a24565b612942565b905082815260208101848484011115612a9057612a8f612a20565b5b612a9b848285612a54565b509392505050565b5f82601f830112612ab757612ab66128e0565b5b8135612ac7848260208601612a62565b91505092915050565b5f805f805f60a08688031215612ae957612ae861265d565b5b5f612af6888289016126ab565b9550506020612b07888289016126ab565b945050604086013567ffffffffffffffff811115612b2857612b27612661565b5b612b34888289016129f3565b935050606086013567ffffffffffffffff811115612b5557612b54612661565b5b612b61888289016129f3565b925050608086013567ffffffffffffffff811115612b8257612b81612661565b5b612b8e88828901612aa3565b9150509295509295909350565b612ba481612684565b82525050565b5f602082019050612bbd5f830184612b9b565b92915050565b5f67ffffffffffffffff821115612bdd57612bdc6128e4565b5b612be68261284d565b9050602081019050919050565b5f612c05612c0084612bc3565b612942565b905082815260208101848484011115612c2157612c20612a20565b5b612c2c848285612a54565b509392505050565b5f82601f830112612c4857612c476128e0565b5b8135612c58848260208601612bf3565b91505092915050565b5f8060408385031215612c7757612c7661265d565b5b5f83013567ffffffffffffffff811115612c9457612c93612661565b5b612ca085828601612c34565b9250506020612cb1858286016126ab565b9150509250929050565b5f8060408385031215612cd157612cd061265d565b5b5f612cde858286016126de565b9250506020612cef858286016126ab565b9150509250929050565b5f67ffffffffffffffff821115612d1357612d126128e4565b5b602082029050602081019050919050565b5f612d36612d3184612cf9565b612942565b90508083825260208201905060208402830185811115612d5957612d58612987565b5b835b81811015612d825780612d6e88826126ab565b845260208401935050602081019050612d5b565b5050509392505050565b5f82601f830112612da057612d9f6128e0565b5b8135612db0848260208601612d24565b91505092915050565b5f8060408385031215612dcf57612dce61265d565b5b5f83013567ffffffffffffffff811115612dec57612deb612661565b5b612df885828601612d8c565b925050602083013567ffffffffffffffff811115612e1957612e18612661565b5b612e25858286016129f3565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612e61816126bf565b82525050565b5f612e728383612e58565b60208301905092915050565b5f602082019050919050565b5f612e9482612e2f565b612e9e8185612e39565b9350612ea983612e49565b805f5b83811015612ed9578151612ec08882612e67565b9750612ecb83612e7e565b925050600181019050612eac565b5085935050505092915050565b5f6020820190508181035f830152612efe8184612e8a565b905092915050565b5f80fd5b5f8083601f840112612f1f57612f1e6128e0565b5b8235905067ffffffffffffffff811115612f3c57612f3b612f06565b5b602083019150836001820283011115612f5857612f57612987565b5b9250929050565b612f68816127d8565b8114612f72575f80fd5b50565b5f81359050612f8381612f5f565b92915050565b5f805f8060608587031215612fa157612fa061265d565b5b5f85013567ffffffffffffffff811115612fbe57612fbd612661565b5b612fca87828801612f0a565b94509450506020612fdd878288016126ab565b9250506040612fee87828801612f75565b91505092959194509250565b5f805f80608085870312156130125761301161265d565b5b5f61301f878288016126ab565b9450506020613030878288016126de565b9350506040613041878288016126de565b925050606085013567ffffffffffffffff81111561306257613061612661565b5b61306e87828801612aa3565b91505092959194509250565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6130ac81612684565b82525050565b5f6130bd83836130a3565b60208301905092915050565b5f602082019050919050565b5f6130df8261307a565b6130e98185613084565b93506130f483613094565b805f5b8381101561312457815161310b88826130b2565b9750613116836130c9565b9250506001810190506130f7565b5085935050505092915050565b5f6020820190508181035f83015261314981846130d5565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b604082015f82015161318e5f8501826130a3565b5060208201516131a16020850182612e58565b50505050565b5f6131b2838361317a565b60408301905092915050565b5f602082019050919050565b5f6131d482613151565b6131de818561315b565b93506131e98361316b565b805f5b8381101561321957815161320088826131a7565b975061320b836131be565b9250506001810190506131ec565b5085935050505092915050565b5f6020820190508181035f83015261323e81846131ca565b905092915050565b5f6020828403121561325b5761325a61265d565b5b5f61326884828501612f75565b91505092915050565b5f80604083850312156132875761328661265d565b5b5f613294858286016126de565b92505060206132a5858286016126de565b9150509250929050565b5f80604083850312156132c5576132c461265d565b5b5f6132d2858286016126ab565b92505060206132e385828601612f75565b9150509250929050565b5f805f604084860312156133045761330361265d565b5b5f613311868287016126de565b935050602084013567ffffffffffffffff81111561333257613331612661565b5b61333e86828701612f0a565b92509250509250925092565b5f8083601f84011261335f5761335e6128e0565b5b8235905067ffffffffffffffff81111561337c5761337b612f06565b5b60208301915083602082028301111561339857613397612987565b5b9250929050565b5f80602083850312156133b5576133b461265d565b5b5f83013567ffffffffffffffff8111156133d2576133d1612661565b5b6133de8582860161334a565b92509250509250929050565b5f8060408385031215613400576133ff61265d565b5b5f61340d858286016126ab565b925050602061341e858286016126ab565b9150509250929050565b5f805f805f60a086880312156134415761344061265d565b5b5f61344e888289016126ab565b955050602061345f888289016126ab565b9450506040613470888289016126de565b9350506060613481888289016126de565b925050608086013567ffffffffffffffff8111156134a2576134a1612661565b5b6134ae88828901612aa3565b9150509295509295909350565b5f602082840312156134d0576134cf61265d565b5b5f6134dd848285016126ab565b91505092915050565b5f805f606084860312156134fd576134fc61265d565b5b5f61350a868287016126ab565b935050602061351b868287016126de565b925050604061352c868287016126de565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061357a57607f821691505b60208210810361358d5761358c613536565b5b50919050565b5f6135a56135a084612bc3565b612942565b9050828152602081018484840111156135c1576135c0612a20565b5b6135cc848285612825565b509392505050565b5f82601f8301126135e8576135e76128e0565b5b81516135f8848260208601613593565b91505092915050565b5f602082840312156136165761361561265d565b5b5f82015167ffffffffffffffff81111561363357613632612661565b5b61363f848285016135d4565b91505092915050565b5f60408201905061365b5f830185612b9b565b6136686020830184612b9b565b9392505050565b5f8151905061367d81612f5f565b92915050565b5f602082840312156136985761369761265d565b5b5f6136a58482850161366f565b91505092915050565b5f81905092915050565b5f6136c28261280b565b6136cc81856136ae565b93506136dc818560208601612825565b80840191505092915050565b5f6136f382846136b8565b915081905092915050565b7f6f6e6c79206f776e6572000000000000000000000000000000000000000000005f82015250565b5f613732600a83612815565b915061373d826136fe565b602082019050919050565b5f6020820190508181035f83015261375f81613726565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6137ca826126bf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036137fc576137fb613793565b5b600182019050919050565b5f61381283856136ae565b935061381f838584612a54565b82840190509392505050565b5f613837828486613807565b91508190509392505050565b7f6f6e6c792061646d696e000000000000000000000000000000000000000000005f82015250565b5f613877600a83612815565b915061388282613843565b602082019050919050565b5f6020820190508181035f8301526138a48161386b565b9050919050565b5f6138b5826126bf565b91506138c0836126bf565b92508282019050808211156138d8576138d7613793565b5b92915050565b5f6040820190508181035f8301526138f68185612e8a565b9050818103602083015261390a8184612e8a565b90509392505050565b5f6040820190506139265f830185612730565b6139336020830184612730565b9392505050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026139967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261395b565b6139a0868361395b565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6139db6139d66139d1846126bf565b6139b8565b6126bf565b9050919050565b5f819050919050565b6139f4836139c1565b613a08613a00826139e2565b848454613967565b825550505050565b5f90565b613a1c613a10565b613a278184846139eb565b505050565b5b81811015613a4a57613a3f5f82613a14565b600181019050613a2d565b5050565b601f821115613a8f57613a608161393a565b613a698461394c565b81016020851015613a78578190505b613a8c613a848561394c565b830182613a2c565b50505b505050565b5f82821c905092915050565b5f613aaf5f1984600802613a94565b1980831691505092915050565b5f613ac78383613aa0565b9150826002028217905092915050565b613ae08261280b565b67ffffffffffffffff811115613af957613af86128e4565b5b613b038254613563565b613b0e828285613a4e565b5f60209050601f831160018114613b3f575f8415613b2d578287015190505b613b378582613abc565b865550613b9e565b601f198416613b4d8661393a565b5f5b82811015613b7457848901518255600182019150602085019450602081019050613b4f565b86831015613b915784890151613b8d601f891682613aa0565b8355505b6001600288020188555050505b505050505050565b5f613bb0826126bf565b9150613bbb836126bf565b9250828203905081811115613bd357613bd2613793565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f613bfd82613bd9565b613c078185613be3565b9350613c17818560208601612825565b613c208161284d565b840191505092915050565b5f60a082019050613c3e5f830188612b9b565b613c4b6020830187612b9b565b8181036040830152613c5d8186612e8a565b90508181036060830152613c718185612e8a565b90508181036080830152613c858184613bf3565b90509695505050505050565b5f81519050613c9f81612783565b92915050565b5f60208284031215613cba57613cb961265d565b5b5f613cc784828501613c91565b91505092915050565b7f5f455243313135354261746368537570706f7274656428293a20556e737570705f8201527f6f7274656420526563697069656e742100000000000000000000000000000000602082015250565b5f613d2a603083612815565b9150613d3582613cd0565b604082019050919050565b5f6020820190508181035f830152613d5781613d1e565b9050919050565b5f60a082019050613d715f830188612b9b565b613d7e6020830187612b9b565b613d8b6040830186612730565b613d986060830185612730565b8181036080830152613daa8184613bf3565b90509695505050505050565b7f5f45524331313535537570706f7274656428293a20556e737570706f727465645f8201527f20526563697069656e7421000000000000000000000000000000000000000000602082015250565b5f613e10602b83612815565b9150613e1b82613db6565b604082019050919050565b5f6020820190508181035f830152613e3d81613e04565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea26469706673582212204c3b4e3b8c26305a311e5e2bf0a545e9d669c2b7535be7c0b32383dabea27f9264736f6c63430008140033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.