Overview
Max Total Supply
512 ☵
Holders
163
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 ☵Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Autoglyphs
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-04-05 */ pragma solidity ^0.4.24; /** * * *** ** ** ******** ******* ****** ** ** ** ******** ** ** ****** * ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** * ** ** ** ** ** ** ** ** ** **** ** ** ** ** ** * ** ** ** ** ** ** ** ** **** ** ** ******** ********* ****** * ********* ** ** ** ** ** ** ** ** ** ** ** ** ** * ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** * ** ** ******* ** ******* ****** ******** ** ** ** ** ****** * * * by Matt Hall and John Watkinson * * * The output of the 'tokenURI' function is a set of instructions to make a drawing. * Each symbol in the output corresponds to a cell, and there are 64x64 cells arranged in a square grid. * The drawing can be any size, and the pen's stroke width should be between 1/5th to 1/10th the size of a cell. * The drawing instructions for the nine different symbols are as follows: * * . Draw nothing in the cell. * O Draw a circle bounded by the cell. * + Draw centered lines vertically and horizontally the length of the cell. * X Draw diagonal lines connecting opposite corners of the cell. * | Draw a centered vertical line the length of the cell. * - Draw a centered horizontal line the length of the cell. * \ Draw a line connecting the top left corner of the cell to the bottom right corner. * / Draw a line connecting the bottom left corner of teh cell to the top right corner. * # Fill in the cell completely. * */ interface ERC721TokenReceiver { function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes _data) external returns(bytes4); } contract Autoglyphs { event Generated(uint indexed index, address indexed a, string value); /// @dev This emits when ownership of any NFT changes by any mechanism. /// This event emits when NFTs are created (`from` == 0) and destroyed /// (`to` == 0). Exception: during contract creation, any number of NFTs /// may be created and assigned without emitting Transfer. At the time of /// any transfer, the approved address for that NFT (if any) is reset to none. event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); /// @dev This emits when the approved address for an NFT is changed or /// reaffirmed. The zero address indicates there is no approved address. /// When a Transfer event emits, this also indicates that the approved /// address for that NFT (if any) is reset to none. event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); /// @dev This emits when an operator is enabled or disabled for an owner. /// The operator can manage all NFTs of the owner. event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); bytes4 internal constant MAGIC_ON_ERC721_RECEIVED = 0x150b7a02; uint public constant TOKEN_LIMIT = 512; // 8 for testing, 256 or 512 for prod; uint public constant ARTIST_PRINTS = 128; // 2 for testing, 64 for prod; uint public constant PRICE = 200 finney; // The beneficiary is 350.org address public constant BENEFICIARY = 0x50990F09d4f0cb864b8e046e7edC749dE410916b; mapping (uint => address) private idToCreator; mapping (uint => uint8) private idToSymbolScheme; // ERC 165 mapping(bytes4 => bool) internal supportedInterfaces; /** * @dev A mapping from NFT ID to the address that owns it. */ mapping (uint256 => address) internal idToOwner; /** * @dev A mapping from NFT ID to the seed used to make it. */ mapping (uint256 => uint256) internal idToSeed; mapping (uint256 => uint256) internal seedToId; /** * @dev Mapping from NFT ID to approved address. */ mapping (uint256 => address) internal idToApproval; /** * @dev Mapping from owner address to mapping of operator addresses. */ mapping (address => mapping (address => bool)) internal ownerToOperators; /** * @dev Mapping from owner to list of owned NFT IDs. */ mapping(address => uint256[]) internal ownerToIds; /** * @dev Mapping from NFT ID to its index in the owner tokens list. */ mapping(uint256 => uint256) internal idToOwnerIndex; /** * @dev Total number of tokens. */ uint internal numTokens = 0; /** * @dev Guarantees that the msg.sender is an owner or operator of the given NFT. * @param _tokenId ID of the NFT to validate. */ modifier canOperate(uint256 _tokenId) { address tokenOwner = idToOwner[_tokenId]; require(tokenOwner == msg.sender || ownerToOperators[tokenOwner][msg.sender]); _; } /** * @dev Guarantees that the msg.sender is allowed to transfer NFT. * @param _tokenId ID of the NFT to transfer. */ modifier canTransfer(uint256 _tokenId) { address tokenOwner = idToOwner[_tokenId]; require( tokenOwner == msg.sender || idToApproval[_tokenId] == msg.sender || ownerToOperators[tokenOwner][msg.sender] ); _; } /** * @dev Guarantees that _tokenId is a valid Token. * @param _tokenId ID of the NFT to validate. */ modifier validNFToken(uint256 _tokenId) { require(idToOwner[_tokenId] != address(0)); _; } /** * @dev Contract constructor. */ constructor() public { supportedInterfaces[0x01ffc9a7] = true; // ERC165 supportedInterfaces[0x80ac58cd] = true; // ERC721 supportedInterfaces[0x780e9d63] = true; // ERC721 Enumerable supportedInterfaces[0x5b5e139f] = true; // ERC721 Metadata } /////////////////// //// GENERATOR //// /////////////////// int constant ONE = int(0x100000000); uint constant USIZE = 64; int constant SIZE = int(USIZE); int constant HALF_SIZE = SIZE / int(2); int constant SCALE = int(0x1b81a81ab1a81a823); int constant HALF_SCALE = SCALE / int(2); bytes prefix = "data:text/plain;charset=utf-8,"; string internal nftName = "Autoglyphs"; string internal nftSymbol = "☵"; // 0x2E = . // 0x4F = O // 0x2B = + // 0x58 = X // 0x7C = | // 0x2D = - // 0x5C = \ // 0x2F = / // 0x23 = # function abs(int n) internal pure returns (int) { if (n >= 0) return n; return -n; } function getScheme(uint a) internal pure returns (uint8) { uint index = a % 83; uint8 scheme; if (index < 20) { scheme = 1; } else if (index < 35) { scheme = 2; } else if (index < 48) { scheme = 3; } else if (index < 59) { scheme = 4; } else if (index < 68) { scheme = 5; } else if (index < 73) { scheme = 6; } else if (index < 77) { scheme = 7; } else if (index < 80) { scheme = 8; } else if (index < 82) { scheme = 9; } else { scheme = 10; } return scheme; } /* * ** *** ***** ******** ************* ******** ***** *** ** * */ // The following code generates art. function draw(uint id) public view returns (string) { uint a = uint(uint160(keccak256(abi.encodePacked(idToSeed[id])))); bytes memory output = new bytes(USIZE * (USIZE + 3) + 30); uint c; for (c = 0; c < 30; c++) { output[c] = prefix[c]; } int x = 0; int y = 0; uint v = 0; uint value = 0; uint mod = (a % 11) + 5; bytes5 symbols; if (idToSymbolScheme[id] == 0) { revert(); } else if (idToSymbolScheme[id] == 1) { symbols = 0x2E582F5C2E; // X/\ } else if (idToSymbolScheme[id] == 2) { symbols = 0x2E2B2D7C2E; // +-| } else if (idToSymbolScheme[id] == 3) { symbols = 0x2E2F5C2E2E; // /\ } else if (idToSymbolScheme[id] == 4) { symbols = 0x2E5C7C2D2F; // \|-/ } else if (idToSymbolScheme[id] == 5) { symbols = 0x2E4F7C2D2E; // O|- } else if (idToSymbolScheme[id] == 6) { symbols = 0x2E5C5C2E2E; // \ } else if (idToSymbolScheme[id] == 7) { symbols = 0x2E237C2D2B; // #|-+ } else if (idToSymbolScheme[id] == 8) { symbols = 0x2E4F4F2E2E; // OO } else if (idToSymbolScheme[id] == 9) { symbols = 0x2E232E2E2E; // # } else { symbols = 0x2E234F2E2E; // #O } for (int i = int(0); i < SIZE; i++) { y = (2 * (i - HALF_SIZE) + 1); if (a % 3 == 1) { y = -y; } else if (a % 3 == 2) { y = abs(y); } y = y * int(a); for (int j = int(0); j < SIZE; j++) { x = (2 * (j - HALF_SIZE) + 1); if (a % 2 == 1) { x = abs(x); } x = x * int(a); v = uint(x * y / ONE) % mod; if (v < 5) { value = uint(symbols[v]); } else { value = 0x2E; } output[c] = byte(bytes32(value << 248)); c++; } output[c] = byte(0x25); c++; output[c] = byte(0x30); c++; output[c] = byte(0x41); c++; } string memory result = string(output); return result; } /* * ** *** ***** ******** ************* ******** ***** *** ** * */ function creator(uint _id) external view returns (address) { return idToCreator[_id]; } function symbolScheme(uint _id) external view returns (uint8) { return idToSymbolScheme[_id]; } function createGlyph(uint seed) external payable returns (string) { return _mint(msg.sender, seed); } ////////////////////////// //// ERC 721 and 165 //// ////////////////////////// /** * @dev Returns whether the target address is a contract. * @param _addr Address to check. * @return True if _addr is a contract, false if not. */ function isContract(address _addr) internal view returns (bool addressCheck) { uint256 size; assembly { size := extcodesize(_addr) } // solhint-disable-line addressCheck = size > 0; } /** * @dev Function to check which interfaces are suported by this contract. * @param _interfaceID Id of the interface. * @return True if _interfaceID is supported, false otherwise. */ function supportsInterface(bytes4 _interfaceID) external view returns (bool) { return supportedInterfaces[_interfaceID]; } /** * @dev Transfers the ownership of an NFT from one address to another address. This function can * be changed to payable. * @notice Throws unless `msg.sender` is the current owner, an authorized operator, or the * approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is * the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this * function checks if `_to` is a smart contract (code size > 0). If so, it calls * `onERC721Received` on `_to` and throws if the return value is not * `bytes4(keccak256("onERC721Received(address,uint256,bytes)"))`. * @param _from The current owner of the NFT. * @param _to The new owner. * @param _tokenId The NFT to transfer. * @param _data Additional data with no specified format, sent in call to `_to`. */ function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes _data) external { _safeTransferFrom(_from, _to, _tokenId, _data); } /** * @dev Transfers the ownership of an NFT from one address to another address. This function can * be changed to payable. * @notice This works identically to the other function with an extra data parameter, except this * function just sets data to "" * @param _from The current owner of the NFT. * @param _to The new owner. * @param _tokenId The NFT to transfer. */ function safeTransferFrom(address _from, address _to, uint256 _tokenId) external { _safeTransferFrom(_from, _to, _tokenId, ""); } /** * @dev Throws unless `msg.sender` is the current owner, an authorized operator, or the approved * address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero * address. Throws if `_tokenId` is not a valid NFT. This function can be changed to payable. * @notice The caller is responsible to confirm that `_to` is capable of receiving NFTs or else * they maybe be permanently lost. * @param _from The current owner of the NFT. * @param _to The new owner. * @param _tokenId The NFT to transfer. */ function transferFrom(address _from, address _to, uint256 _tokenId) external canTransfer(_tokenId) validNFToken(_tokenId) { address tokenOwner = idToOwner[_tokenId]; require(tokenOwner == _from); require(_to != address(0)); _transfer(_to, _tokenId); } /** * @dev Set or reaffirm the approved address for an NFT. This function can be changed to payable. * @notice The zero address indicates there is no approved address. Throws unless `msg.sender` is * the current NFT owner, or an authorized operator of the current owner. * @param _approved Address to be approved for the given NFT ID. * @param _tokenId ID of the token to be approved. */ function approve(address _approved, uint256 _tokenId) external canOperate(_tokenId) validNFToken(_tokenId) { address tokenOwner = idToOwner[_tokenId]; require(_approved != tokenOwner); idToApproval[_tokenId] = _approved; emit Approval(tokenOwner, _approved, _tokenId); } /** * @dev Enables or disables approval for a third party ("operator") to manage all of * `msg.sender`'s assets. It also emits the ApprovalForAll event. * @notice This works even if sender doesn't own any tokens at the time. * @param _operator Address to add to the set of authorized operators. * @param _approved True if the operators is approved, false to revoke approval. */ function setApprovalForAll(address _operator, bool _approved) external { ownerToOperators[msg.sender][_operator] = _approved; emit ApprovalForAll(msg.sender, _operator, _approved); } /** * @dev Returns the number of NFTs owned by `_owner`. NFTs assigned to the zero address are * considered invalid, and this function throws for queries about the zero address. * @param _owner Address for whom to query the balance. * @return Balance of _owner. */ function balanceOf(address _owner) external view returns (uint256) { require(_owner != address(0)); return _getOwnerNFTCount(_owner); } /** * @dev Returns the address of the owner of the NFT. NFTs assigned to zero address are considered * invalid, and queries about them do throw. * @param _tokenId The identifier for an NFT. * @return Address of _tokenId owner. */ function ownerOf(uint256 _tokenId) external view returns (address _owner) { _owner = idToOwner[_tokenId]; require(_owner != address(0)); } /** * @dev Get the approved address for a single NFT. * @notice Throws if `_tokenId` is not a valid NFT. * @param _tokenId ID of the NFT to query the approval of. * @return Address that _tokenId is approved for. */ function getApproved(uint256 _tokenId) external view validNFToken(_tokenId) returns (address) { return idToApproval[_tokenId]; } /** * @dev Checks if `_operator` is an approved operator for `_owner`. * @param _owner The address that owns the NFTs. * @param _operator The address that acts on behalf of the owner. * @return True if approved for all, false otherwise. */ function isApprovedForAll(address _owner, address _operator) external view returns (bool) { return ownerToOperators[_owner][_operator]; } /** * @dev Actually preforms the transfer. * @notice Does NO checks. * @param _to Address of a new owner. * @param _tokenId The NFT that is being transferred. */ function _transfer(address _to, uint256 _tokenId) internal { address from = idToOwner[_tokenId]; _clearApproval(_tokenId); _removeNFToken(from, _tokenId); _addNFToken(_to, _tokenId); emit Transfer(from, _to, _tokenId); } /** * @dev Mints a new NFT. * @notice This is an internal function which should be called from user-implemented external * mint function. Its purpose is to show and properly initialize data structures when using this * implementation. * @param _to The address that will own the minted NFT. */ function _mint(address _to, uint seed) internal returns (string) { require(_to != address(0)); require(numTokens < TOKEN_LIMIT); uint amount = 0; if (numTokens >= ARTIST_PRINTS) { amount = PRICE; require(msg.value >= amount); } require(seedToId[seed] == 0); uint id = numTokens + 1; idToCreator[id] = _to; idToSeed[id] = seed; seedToId[seed] = id; uint a = uint(uint160(keccak256(abi.encodePacked(seed)))); idToSymbolScheme[id] = getScheme(a); string memory uri = draw(id); emit Generated(id, _to, uri); numTokens = numTokens + 1; _addNFToken(_to, id); if (msg.value > amount) { msg.sender.transfer(msg.value - amount); } if (amount > 0) { BENEFICIARY.transfer(amount); } emit Transfer(address(0), _to, id); return uri; } /** * @dev Assigns a new NFT to an address. * @notice Use and override this function with caution. Wrong usage can have serious consequences. * @param _to Address to which we want to add the NFT. * @param _tokenId Which NFT we want to add. */ function _addNFToken(address _to, uint256 _tokenId) internal { require(idToOwner[_tokenId] == address(0)); idToOwner[_tokenId] = _to; uint256 length = ownerToIds[_to].push(_tokenId); idToOwnerIndex[_tokenId] = length - 1; } /** * @dev Removes a NFT from an address. * @notice Use and override this function with caution. Wrong usage can have serious consequences. * @param _from Address from wich we want to remove the NFT. * @param _tokenId Which NFT we want to remove. */ function _removeNFToken(address _from, uint256 _tokenId) internal { require(idToOwner[_tokenId] == _from); delete idToOwner[_tokenId]; uint256 tokenToRemoveIndex = idToOwnerIndex[_tokenId]; uint256 lastTokenIndex = ownerToIds[_from].length - 1; if (lastTokenIndex != tokenToRemoveIndex) { uint256 lastToken = ownerToIds[_from][lastTokenIndex]; ownerToIds[_from][tokenToRemoveIndex] = lastToken; idToOwnerIndex[lastToken] = tokenToRemoveIndex; } ownerToIds[_from].length--; } /** * @dev Helper function that gets NFT count of owner. This is needed for overriding in enumerable * extension to remove double storage (gas optimization) of owner nft count. * @param _owner Address for whom to query the count. * @return Number of _owner NFTs. */ function _getOwnerNFTCount(address _owner) internal view returns (uint256) { return ownerToIds[_owner].length; } /** * @dev Actually perform the safeTransferFrom. * @param _from The current owner of the NFT. * @param _to The new owner. * @param _tokenId The NFT to transfer. * @param _data Additional data with no specified format, sent in call to `_to`. */ function _safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory _data) private canTransfer(_tokenId) validNFToken(_tokenId) { address tokenOwner = idToOwner[_tokenId]; require(tokenOwner == _from); require(_to != address(0)); _transfer(_to, _tokenId); if (isContract(_to)) { bytes4 retval = ERC721TokenReceiver(_to).onERC721Received(msg.sender, _from, _tokenId, _data); require(retval == MAGIC_ON_ERC721_RECEIVED); } } /** * @dev Clears the current approval of a given NFT ID. * @param _tokenId ID of the NFT to be transferred. */ function _clearApproval(uint256 _tokenId) private { if (idToApproval[_tokenId] != address(0)) { delete idToApproval[_tokenId]; } } //// Enumerable function totalSupply() public view returns (uint256) { return numTokens; } function tokenByIndex(uint256 index) public view returns (uint256) { require(index < numTokens); return index; } /** * @dev returns the n-th NFT ID from a list of owner's tokens. * @param _owner Token owner's address. * @param _index Index number representing n-th token in owner's list of tokens. * @return Token id. */ function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256) { require(_index < ownerToIds[_owner].length); return ownerToIds[_owner][_index]; } //// Metadata /** * @dev Returns a descriptive name for a collection of NFTokens. * @return Representing name. */ function name() external view returns (string memory _name) { _name = nftName; } /** * @dev Returns an abbreviated name for NFTokens. * @return Representing symbol. */ function symbol() external view returns (string memory _symbol) { _symbol = nftSymbol; } /** * @dev A distinct URI (RFC 3986) for a given NFT. * @param _tokenId Id for which we want uri. * @return URI of _tokenId. */ function tokenURI(uint256 _tokenId) external view validNFToken(_tokenId) returns (string memory) { return draw(_tokenId); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[{"name":"_interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_LIMIT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"_name","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_approved","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ARTIST_PRINTS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BENEFICIARY","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"symbolScheme","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"id","type":"uint256"}],"name":"draw","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"creator","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"_owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PRICE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"_symbol","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_operator","type":"address"},{"name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"seed","type":"uint256"}],"name":"createGlyph","outputs":[{"name":"","type":"string"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"index","type":"uint256"},{"indexed":true,"name":"a","type":"address"},{"indexed":false,"name":"value","type":"string"}],"name":"Generated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":true,"name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_approved","type":"address"},{"indexed":true,"name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_operator","type":"address"},{"indexed":false,"name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"}]
Contract Creation Code
6000600a5560c0604052601e60808190527f646174613a746578742f706c61696e3b636861727365743d7574662d382c000060a09081526200004591600b9190620001be565b5060408051808201909152600a8082527f4175746f676c797068730000000000000000000000000000000000000000000060209092019182526200008c91600c91620001be565b506040805180820190915260038082527fe298b500000000000000000000000000000000000000000000000000000000006020909201918252620000d391600d91620001be565b50348015620000e157600080fd5b5060026020527f71203db6a8b906f8e7c7701ea536708e3d7c6018d3ad50e5680c3241edacce178054600160ff1991821681179092557fe93570590271d95518ca425fa83dfa75d04081fc79a4d9a58f39c8df65a8e7a180548216831790557fdea2b207876963907afe1816d4888d650521cd53e74f3055eeb250c96c41fdc880548216831790557f5b5e139f000000000000000000000000000000000000000000000000000000006000527fe7f4f15f8a9f2f6fc23737b039e4cbf51e96102d2c02d512a4356c0910a430f58054909116909117905562000263565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200020157805160ff191683800117855562000231565b8280016001018555821562000231579182015b828111156200023157825182559160200191906001019062000214565b506200023f92915062000243565b5090565b6200026091905b808211156200023f57600081556001016200024a565b90565b6119ee80620002736000396000f30060806040526004361061013d5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301ffc9a78114610142578063031bd4c41461018d57806306fdde03146101b4578063081812fc1461023e578063095ea7b314610272578063180f0afd1461029857806318160ddd146102ad57806323b872dd146102c25780632f745c59146102ec5780632f99c6cc1461031057806339749064146103255780633b3041471461035357806342842e0e1461036b5780634f6ccce714610395578063510b5158146103ad5780636352211e146103c557806370a08231146103dd5780638d859f3e146103fe57806395d89b4114610413578063a22cb46514610428578063b88d4fde1461044e578063c87b56dd14610487578063dba5a7f51461049f578063e985e9c5146104aa575b600080fd5b34801561014e57600080fd5b506101797bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19600435166104d1565b604080519115158252519081900360200190f35b34801561019957600080fd5b506101a2610509565b60408051918252519081900360200190f35b3480156101c057600080fd5b506101c961050f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102035781810151838201526020016101eb565b50505050905090810190601f1680156102305780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561024a57600080fd5b506102566004356105a5565b60408051600160a060020a039092168252519081900360200190f35b34801561027e57600080fd5b50610296600160a060020a03600435166024356105e7565b005b3480156102a457600080fd5b506101a26106f8565b3480156102b957600080fd5b506101a26106fd565b3480156102ce57600080fd5b50610296600160a060020a0360043581169060243516604435610704565b3480156102f857600080fd5b506101a2600160a060020a03600435166024356107f1565b34801561031c57600080fd5b5061025661084c565b34801561033157600080fd5b5061033d600435610864565b6040805160ff9092168252519081900360200190f35b34801561035f57600080fd5b506101c9600435610879565b34801561037757600080fd5b50610296600160a060020a0360043581169060243516604435610ea7565b3480156103a157600080fd5b506101a2600435610ec8565b3480156103b957600080fd5b50610256600435610edd565b3480156103d157600080fd5b50610256600435610ef8565b3480156103e957600080fd5b506101a2600160a060020a0360043516610f1c565b34801561040a57600080fd5b506101a2610f42565b34801561041f57600080fd5b506101c9610f4e565b34801561043457600080fd5b50610296600160a060020a03600435166024351515610faf565b34801561045a57600080fd5b50610296600160a060020a036004803582169160248035909116916044359160643590810191013561101d565b34801561049357600080fd5b506101c9600435611060565b6101c9600435611098565b3480156104b657600080fd5b50610179600160a060020a03600435811690602435166110a4565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19811660009081526002602052604090205460ff165b919050565b61020081565b600c8054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561059b5780601f106105705761010080835404028352916020019161059b565b820191906000526020600020905b81548152906001019060200180831161057e57829003601f168201915b5050505050905090565b6000818152600360205260408120548290600160a060020a031615156105ca57600080fd5b5050600090815260066020526040902054600160a060020a031690565b6000818152600360205260408120548290600160a060020a0316338114806106325750600160a060020a038116600090815260076020908152604080832033845290915290205460ff165b151561063d57600080fd5b6000848152600360205260409020548490600160a060020a0316151561066257600080fd5b600085815260036020526040902054600160a060020a039081169450861684141561068c57600080fd5b600085815260066020526040808220805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038a811691821790925591518893918816917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050505050565b608081565b600a545b90565b6000818152600360205260408120548290600160a060020a0316338114806107425750600082815260066020526040902054600160a060020a031633145b806107705750600160a060020a038116600090815260076020908152604080832033845290915290205460ff165b151561077b57600080fd5b6000848152600360205260409020548490600160a060020a031615156107a057600080fd5b600085815260036020526040902054600160a060020a039081169450871684146107c957600080fd5b600160a060020a03861615156107de57600080fd5b6107e886866110d2565b50505050505050565b600160a060020a038216600090815260086020526040812054821061081557600080fd5b600160a060020a038316600090815260086020526040902080548390811061083957fe5b9060005260206000200154905092915050565b7350990f09d4f0cb864b8e046e7edc749de410916b81565b60009081526001602052604090205460ff1690565b60606000606060008060008060008060008060006060600460008f815260200190815260200160002054604051602001808281526020019150506040516020818303038152906040526040518082805190602001908083835b602083106108f15780518252601f1990920191602091820191016108d2565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060019004600160a060020a03169b506040600301604002601e016040519080825280601f01601f191660200182016040528015610965578160200160208202803883390190505b509a50600099505b601e8a10156109f057600b8a815460018160011615610100020316600290048110151561099657fe5b8154600116156109b55790600052602060002090602091828204019190065b9054901a60f860020a028b8b8151811015156109cd57fe5b906020010190600160f860020a031916908160001a90535060019099019861096d565b60008e8152600160205260408120549099508998508897508796506005600b8e0601955060ff161515610a2257600080fd5b60008e81526001602081905260409091205460ff161415610a65577f2e582f5c2e0000000000000000000000000000000000000000000000000000009350610c99565b60008e81526001602052604090205460ff1660021415610aa7577f2e2b2d7c2e0000000000000000000000000000000000000000000000000000009350610c99565b60008e81526001602052604090205460ff1660031415610ae9577f2e2f5c2e2e0000000000000000000000000000000000000000000000000000009350610c99565b60008e81526001602052604090205460ff1660041415610b2b577f2e5c7c2d2f0000000000000000000000000000000000000000000000000000009350610c99565b60008e81526001602052604090205460ff1660051415610b6d577f2e4f7c2d2e0000000000000000000000000000000000000000000000000000009350610c99565b60008e81526001602052604090205460ff1660061415610baf577f2e5c5c2e2e0000000000000000000000000000000000000000000000000000009350610c99565b60008e81526001602052604090205460ff1660071415610bf1577f2e237c2d2b0000000000000000000000000000000000000000000000000000009350610c99565b60008e81526001602052604090205460ff1660081415610c33577f2e4f4f2e2e0000000000000000000000000000000000000000000000000000009350610c99565b60008e81526001602052604090205460ff1660091415610c75577f2e232e2e2e0000000000000000000000000000000000000000000000000000009350610c99565b7f2e234f2e2e00000000000000000000000000000000000000000000000000000093505b600092505b6040831215610e95576001601f19840160020201975060038c0660011415610ccb57876000039750610ce3565b60038c0660021415610ce357610ce08861114d565b97505b968b0296600091505b6040821215610da1576002601f198301810260010199508c0660011415610d1957610d168961114d565b98505b978b029784640100000000898b0205811515610d3157fe5b0696506005871015610d5e57838760058110610d4957fe5b1a60f860020a0260f860020a90049550610d63565b602e95505b8a5160f860020a8702908c908c908110610d7957fe5b906020010190600160f860020a031916908160001a9053506001998a01999190910190610cec565b8a517f2500000000000000000000000000000000000000000000000000000000000000908c908c908110610dd157fe5b906020010190600160f860020a031916908160001a9053508a516001909a01997f3000000000000000000000000000000000000000000000000000000000000000908c908c908110610e1f57fe5b906020010190600160f860020a031916908160001a9053508a516001909a01997f4100000000000000000000000000000000000000000000000000000000000000908c908c908110610e6d57fe5b906020010190600160f860020a031916908160001a9053506001998a01999290920191610c9e565b50989c9b505050505050505050505050565b610ec38383836020604051908101604052806000815250611164565b505050565b600a546000908210610ed957600080fd5b5090565b600090815260208190526040902054600160a060020a031690565b600081815260036020526040902054600160a060020a031680151561050457600080fd5b6000600160a060020a0382161515610f3357600080fd5b610f3c826113be565b92915050565b6702c68af0bb14000081565b600d8054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561059b5780601f106105705761010080835404028352916020019161059b565b336000818152600760209081526040808320600160a060020a03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b61105985858585858080601f01602080910402602001604051908101604052809392919081815260200183838082843750611164945050505050565b5050505050565b6000818152600360205260409020546060908290600160a060020a0316151561108857600080fd5b61109183610879565b9392505050565b6060610f3c33836113d9565b600160a060020a03918216600090815260076020908152604080832093909416825291909152205460ff1690565b600081815260036020526040902054600160a060020a03166110f3826116cb565b6110fd8183611715565b611107838361184e565b8183600160a060020a031682600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600080821261115d575080610504565b5060000390565b60008281526003602052604081205481908490600160a060020a0316338114806111a45750600082815260066020526040902054600160a060020a031633145b806111d25750600160a060020a038116600090815260076020908152604080832033845290915290205460ff165b15156111dd57600080fd5b6000868152600360205260409020548690600160a060020a0316151561120257600080fd5b600087815260036020526040902054600160a060020a0390811695508916851461122b57600080fd5b600160a060020a038816151561124057600080fd5b61124a88886110d2565b611253886118d7565b156113b3576040517f150b7a020000000000000000000000000000000000000000000000000000000081523360048201818152600160a060020a038c81166024850152604484018b90526080606485019081528a5160848601528a51918d169463150b7a0294938f938e938e93909160a490910190602085019080838360005b838110156112eb5781810151838201526020016112d3565b50505050905090810190601f1680156113185780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561133a57600080fd5b505af115801561134e573d6000803e3d6000fd5b505050506040513d602081101561136457600080fd5b505193507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1984167f150b7a0200000000000000000000000000000000000000000000000000000000146113b357600080fd5b505050505050505050565b600160a060020a031660009081526008602052604090205490565b60606000808083600160a060020a03871615156113f557600080fd5b600a546102001161140557600080fd5b600a546000945060801161142b576702c68af0bb14000093503484111561142b57600080fd5b6000868152600560205260409020541561144457600080fd5b600a54600101600081815260208181526040808320805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038d16179055600482528083208a9055898352600582529182902083905581518082018a90528251808203830181529083019283905280519396509282918401908083835b602083106114dd5780518252601f1990920191602091820191016114be565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060019004600160a060020a03169150611522826118df565b6000848152600160205260409020805460ff191660ff9290921691909117905561154b83610879565b905086600160a060020a0316837fa197d2acc8f19f456842a59ba3699aa028ad72b616fd9c26679a516e7443683e836040518080602001828103825283818151815260200191508051906020019080838360005b838110156115b757818101518382015260200161159f565b50505050905090810190601f1680156115e45780820380516001836020036101000a031916815260200191505b509250505060405180910390a3600a80546001019055611604878461184e565b8334111561163d5760405133903486900380156108fc02916000818181858888f1935050505015801561163b573d6000803e3d6000fd5b505b6000841115611689576040517350990f09d4f0cb864b8e046e7edc749de410916b9085156108fc029086906000818181858888f19350505050158015611687573d6000803e3d6000fd5b505b6040518390600160a060020a038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a49695505050505050565b600081815260066020526040902054600160a060020a031615611712576000818152600660205260409020805473ffffffffffffffffffffffffffffffffffffffff191690555b50565b60008181526003602052604081205481908190600160a060020a0386811691161461173f57600080fd5b6000848152600360209081526040808320805473ffffffffffffffffffffffffffffffffffffffff191690556009825280832054600160a060020a038916845260089092529091205490935060001901915081831461181d57600160a060020a03851660009081526008602052604090208054839081106117bc57fe5b90600052602060002001549050806008600087600160a060020a0316600160a060020a03168152602001908152602001600020848154811015156117fc57fe5b60009182526020808320909101929092558281526009909152604090208390555b600160a060020a0385166000908152600860205260409020805490611846906000198301611989565b505050505050565b600081815260036020526040812054600160a060020a03161561187057600080fd5b5060008181526003602090815260408083208054600160a060020a0390961673ffffffffffffffffffffffffffffffffffffffff19909616861790559382526008815283822080546001810182559083528183208101849055928252600990529190912055565b6000903b1190565b6000605382068160148210156118f757506001611091565b602382101561190857506002611091565b603082101561191957506003611091565b603b82101561192a57506004611091565b604482101561193b57506005611091565b604982101561194c57506006611091565b604d82101561195d57506007611091565b605082101561196e57506008611091565b605282101561197f57506009611091565b50600a9392505050565b815481835581811115610ec357600083815260209020610ec391810190830161070191905b80821115610ed957600081556001016119ae5600a165627a7a7230582069662652e9ee7a2a892beb921ad5db634b246c877785a36b59009934b8c2c8d20029
Deployed Bytecode
0x60806040526004361061013d5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301ffc9a78114610142578063031bd4c41461018d57806306fdde03146101b4578063081812fc1461023e578063095ea7b314610272578063180f0afd1461029857806318160ddd146102ad57806323b872dd146102c25780632f745c59146102ec5780632f99c6cc1461031057806339749064146103255780633b3041471461035357806342842e0e1461036b5780634f6ccce714610395578063510b5158146103ad5780636352211e146103c557806370a08231146103dd5780638d859f3e146103fe57806395d89b4114610413578063a22cb46514610428578063b88d4fde1461044e578063c87b56dd14610487578063dba5a7f51461049f578063e985e9c5146104aa575b600080fd5b34801561014e57600080fd5b506101797bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19600435166104d1565b604080519115158252519081900360200190f35b34801561019957600080fd5b506101a2610509565b60408051918252519081900360200190f35b3480156101c057600080fd5b506101c961050f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102035781810151838201526020016101eb565b50505050905090810190601f1680156102305780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561024a57600080fd5b506102566004356105a5565b60408051600160a060020a039092168252519081900360200190f35b34801561027e57600080fd5b50610296600160a060020a03600435166024356105e7565b005b3480156102a457600080fd5b506101a26106f8565b3480156102b957600080fd5b506101a26106fd565b3480156102ce57600080fd5b50610296600160a060020a0360043581169060243516604435610704565b3480156102f857600080fd5b506101a2600160a060020a03600435166024356107f1565b34801561031c57600080fd5b5061025661084c565b34801561033157600080fd5b5061033d600435610864565b6040805160ff9092168252519081900360200190f35b34801561035f57600080fd5b506101c9600435610879565b34801561037757600080fd5b50610296600160a060020a0360043581169060243516604435610ea7565b3480156103a157600080fd5b506101a2600435610ec8565b3480156103b957600080fd5b50610256600435610edd565b3480156103d157600080fd5b50610256600435610ef8565b3480156103e957600080fd5b506101a2600160a060020a0360043516610f1c565b34801561040a57600080fd5b506101a2610f42565b34801561041f57600080fd5b506101c9610f4e565b34801561043457600080fd5b50610296600160a060020a03600435166024351515610faf565b34801561045a57600080fd5b50610296600160a060020a036004803582169160248035909116916044359160643590810191013561101d565b34801561049357600080fd5b506101c9600435611060565b6101c9600435611098565b3480156104b657600080fd5b50610179600160a060020a03600435811690602435166110a4565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19811660009081526002602052604090205460ff165b919050565b61020081565b600c8054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561059b5780601f106105705761010080835404028352916020019161059b565b820191906000526020600020905b81548152906001019060200180831161057e57829003601f168201915b5050505050905090565b6000818152600360205260408120548290600160a060020a031615156105ca57600080fd5b5050600090815260066020526040902054600160a060020a031690565b6000818152600360205260408120548290600160a060020a0316338114806106325750600160a060020a038116600090815260076020908152604080832033845290915290205460ff165b151561063d57600080fd5b6000848152600360205260409020548490600160a060020a0316151561066257600080fd5b600085815260036020526040902054600160a060020a039081169450861684141561068c57600080fd5b600085815260066020526040808220805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038a811691821790925591518893918816917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050505050565b608081565b600a545b90565b6000818152600360205260408120548290600160a060020a0316338114806107425750600082815260066020526040902054600160a060020a031633145b806107705750600160a060020a038116600090815260076020908152604080832033845290915290205460ff165b151561077b57600080fd5b6000848152600360205260409020548490600160a060020a031615156107a057600080fd5b600085815260036020526040902054600160a060020a039081169450871684146107c957600080fd5b600160a060020a03861615156107de57600080fd5b6107e886866110d2565b50505050505050565b600160a060020a038216600090815260086020526040812054821061081557600080fd5b600160a060020a038316600090815260086020526040902080548390811061083957fe5b9060005260206000200154905092915050565b7350990f09d4f0cb864b8e046e7edc749de410916b81565b60009081526001602052604090205460ff1690565b60606000606060008060008060008060008060006060600460008f815260200190815260200160002054604051602001808281526020019150506040516020818303038152906040526040518082805190602001908083835b602083106108f15780518252601f1990920191602091820191016108d2565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060019004600160a060020a03169b506040600301604002601e016040519080825280601f01601f191660200182016040528015610965578160200160208202803883390190505b509a50600099505b601e8a10156109f057600b8a815460018160011615610100020316600290048110151561099657fe5b8154600116156109b55790600052602060002090602091828204019190065b9054901a60f860020a028b8b8151811015156109cd57fe5b906020010190600160f860020a031916908160001a90535060019099019861096d565b60008e8152600160205260408120549099508998508897508796506005600b8e0601955060ff161515610a2257600080fd5b60008e81526001602081905260409091205460ff161415610a65577f2e582f5c2e0000000000000000000000000000000000000000000000000000009350610c99565b60008e81526001602052604090205460ff1660021415610aa7577f2e2b2d7c2e0000000000000000000000000000000000000000000000000000009350610c99565b60008e81526001602052604090205460ff1660031415610ae9577f2e2f5c2e2e0000000000000000000000000000000000000000000000000000009350610c99565b60008e81526001602052604090205460ff1660041415610b2b577f2e5c7c2d2f0000000000000000000000000000000000000000000000000000009350610c99565b60008e81526001602052604090205460ff1660051415610b6d577f2e4f7c2d2e0000000000000000000000000000000000000000000000000000009350610c99565b60008e81526001602052604090205460ff1660061415610baf577f2e5c5c2e2e0000000000000000000000000000000000000000000000000000009350610c99565b60008e81526001602052604090205460ff1660071415610bf1577f2e237c2d2b0000000000000000000000000000000000000000000000000000009350610c99565b60008e81526001602052604090205460ff1660081415610c33577f2e4f4f2e2e0000000000000000000000000000000000000000000000000000009350610c99565b60008e81526001602052604090205460ff1660091415610c75577f2e232e2e2e0000000000000000000000000000000000000000000000000000009350610c99565b7f2e234f2e2e00000000000000000000000000000000000000000000000000000093505b600092505b6040831215610e95576001601f19840160020201975060038c0660011415610ccb57876000039750610ce3565b60038c0660021415610ce357610ce08861114d565b97505b968b0296600091505b6040821215610da1576002601f198301810260010199508c0660011415610d1957610d168961114d565b98505b978b029784640100000000898b0205811515610d3157fe5b0696506005871015610d5e57838760058110610d4957fe5b1a60f860020a0260f860020a90049550610d63565b602e95505b8a5160f860020a8702908c908c908110610d7957fe5b906020010190600160f860020a031916908160001a9053506001998a01999190910190610cec565b8a517f2500000000000000000000000000000000000000000000000000000000000000908c908c908110610dd157fe5b906020010190600160f860020a031916908160001a9053508a516001909a01997f3000000000000000000000000000000000000000000000000000000000000000908c908c908110610e1f57fe5b906020010190600160f860020a031916908160001a9053508a516001909a01997f4100000000000000000000000000000000000000000000000000000000000000908c908c908110610e6d57fe5b906020010190600160f860020a031916908160001a9053506001998a01999290920191610c9e565b50989c9b505050505050505050505050565b610ec38383836020604051908101604052806000815250611164565b505050565b600a546000908210610ed957600080fd5b5090565b600090815260208190526040902054600160a060020a031690565b600081815260036020526040902054600160a060020a031680151561050457600080fd5b6000600160a060020a0382161515610f3357600080fd5b610f3c826113be565b92915050565b6702c68af0bb14000081565b600d8054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561059b5780601f106105705761010080835404028352916020019161059b565b336000818152600760209081526040808320600160a060020a03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b61105985858585858080601f01602080910402602001604051908101604052809392919081815260200183838082843750611164945050505050565b5050505050565b6000818152600360205260409020546060908290600160a060020a0316151561108857600080fd5b61109183610879565b9392505050565b6060610f3c33836113d9565b600160a060020a03918216600090815260076020908152604080832093909416825291909152205460ff1690565b600081815260036020526040902054600160a060020a03166110f3826116cb565b6110fd8183611715565b611107838361184e565b8183600160a060020a031682600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600080821261115d575080610504565b5060000390565b60008281526003602052604081205481908490600160a060020a0316338114806111a45750600082815260066020526040902054600160a060020a031633145b806111d25750600160a060020a038116600090815260076020908152604080832033845290915290205460ff165b15156111dd57600080fd5b6000868152600360205260409020548690600160a060020a0316151561120257600080fd5b600087815260036020526040902054600160a060020a0390811695508916851461122b57600080fd5b600160a060020a038816151561124057600080fd5b61124a88886110d2565b611253886118d7565b156113b3576040517f150b7a020000000000000000000000000000000000000000000000000000000081523360048201818152600160a060020a038c81166024850152604484018b90526080606485019081528a5160848601528a51918d169463150b7a0294938f938e938e93909160a490910190602085019080838360005b838110156112eb5781810151838201526020016112d3565b50505050905090810190601f1680156113185780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561133a57600080fd5b505af115801561134e573d6000803e3d6000fd5b505050506040513d602081101561136457600080fd5b505193507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1984167f150b7a0200000000000000000000000000000000000000000000000000000000146113b357600080fd5b505050505050505050565b600160a060020a031660009081526008602052604090205490565b60606000808083600160a060020a03871615156113f557600080fd5b600a546102001161140557600080fd5b600a546000945060801161142b576702c68af0bb14000093503484111561142b57600080fd5b6000868152600560205260409020541561144457600080fd5b600a54600101600081815260208181526040808320805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038d16179055600482528083208a9055898352600582529182902083905581518082018a90528251808203830181529083019283905280519396509282918401908083835b602083106114dd5780518252601f1990920191602091820191016114be565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060019004600160a060020a03169150611522826118df565b6000848152600160205260409020805460ff191660ff9290921691909117905561154b83610879565b905086600160a060020a0316837fa197d2acc8f19f456842a59ba3699aa028ad72b616fd9c26679a516e7443683e836040518080602001828103825283818151815260200191508051906020019080838360005b838110156115b757818101518382015260200161159f565b50505050905090810190601f1680156115e45780820380516001836020036101000a031916815260200191505b509250505060405180910390a3600a80546001019055611604878461184e565b8334111561163d5760405133903486900380156108fc02916000818181858888f1935050505015801561163b573d6000803e3d6000fd5b505b6000841115611689576040517350990f09d4f0cb864b8e046e7edc749de410916b9085156108fc029086906000818181858888f19350505050158015611687573d6000803e3d6000fd5b505b6040518390600160a060020a038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a49695505050505050565b600081815260066020526040902054600160a060020a031615611712576000818152600660205260409020805473ffffffffffffffffffffffffffffffffffffffff191690555b50565b60008181526003602052604081205481908190600160a060020a0386811691161461173f57600080fd5b6000848152600360209081526040808320805473ffffffffffffffffffffffffffffffffffffffff191690556009825280832054600160a060020a038916845260089092529091205490935060001901915081831461181d57600160a060020a03851660009081526008602052604090208054839081106117bc57fe5b90600052602060002001549050806008600087600160a060020a0316600160a060020a03168152602001908152602001600020848154811015156117fc57fe5b60009182526020808320909101929092558281526009909152604090208390555b600160a060020a0385166000908152600860205260409020805490611846906000198301611989565b505050505050565b600081815260036020526040812054600160a060020a03161561187057600080fd5b5060008181526003602090815260408083208054600160a060020a0390961673ffffffffffffffffffffffffffffffffffffffff19909616861790559382526008815283822080546001810182559083528183208101849055928252600990529190912055565b6000903b1190565b6000605382068160148210156118f757506001611091565b602382101561190857506002611091565b603082101561191957506003611091565b603b82101561192a57506004611091565b604482101561193b57506005611091565b604982101561194c57506006611091565b604d82101561195d57506007611091565b605082101561196e57506008611091565b605282101561197f57506009611091565b50600a9392505050565b815481835581811115610ec357600083815260209020610ec391810190830161070191905b80821115610ed957600081556001016119ae5600a165627a7a7230582069662652e9ee7a2a892beb921ad5db634b246c877785a36b59009934b8c2c8d20029
Swarm Source
bzzr://69662652e9ee7a2a892beb921ad5db634b246c877785a36b59009934b8c2c8d2
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.