ERC-20
Overview
Max Total Supply
11 CARD
Holders
8
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 0 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
CryptoThingWithDescendants
Compiler Version
v0.4.19+commit.c4cbbb05
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-03-11 */ pragma solidity ^0.4.19; /** * @title Ownable */ contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ function Ownable() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0)); OwnershipTransferred(owner, newOwner); owner = newOwner; } } /** * @title SafeMath Library */ library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } /** * @title ERC721 interface * @dev see https://github.com/ethereum/eips/issues/721 */ contract ERC721 { event Transfer(address indexed _from, address indexed _to, uint256 _tokenId); event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId); function balanceOf(address _owner) public view returns (uint256 _balance); function ownerOf(uint256 _tokenId) public view returns (address _owner); function transfer(address _to, uint256 _tokenId) public; function approve(address _to, uint256 _tokenId) public; function takeOwnership(uint256 _tokenId) public; } /** * @title ERC721Token * Generic implementation for the required functionality of the ERC721 standard */ contract ERC721Token is ERC721 { using SafeMath for uint256; // Total amount of tokens uint256 private totalTokens; // Mapping from token ID to owner mapping (uint256 => address) private tokenOwner; // Mapping from token ID to approved address mapping (uint256 => address) private tokenApprovals; // Mapping from owner to list of owned token IDs mapping (address => uint256[]) private ownedTokens; // Mapping from token ID to index of the owner tokens list mapping(uint256 => uint256) private ownedTokensIndex; /** * @dev Guarantees msg.sender is owner of the given token * @param _tokenId uint256 ID of the token to validate its ownership belongs to msg.sender */ modifier onlyOwnerOf(uint256 _tokenId) { require(ownerOf(_tokenId) == msg.sender); _; } /** * @dev Gets the total amount of tokens stored by the contract * @return uint256 representing the total amount of tokens */ function totalSupply() public view returns (uint256) { return totalTokens; } /** * @dev Gets the balance of the specified address * @param _owner address to query the balance of * @return uint256 representing the amount owned by the passed address */ function balanceOf(address _owner) public view returns (uint256) { return ownedTokens[_owner].length; } /** * @dev Gets the list of tokens owned by a given address * @param _owner address to query the tokens of * @return uint256[] representing the list of tokens owned by the passed address */ function tokensOf(address _owner) public view returns (uint256[]) { return ownedTokens[_owner]; } /** * @dev Gets the owner of the specified token ID * @param _tokenId uint256 ID of the token to query the owner of * @return owner address currently marked as the owner of the given token ID */ function ownerOf(uint256 _tokenId) public view returns (address) { address owner = tokenOwner[_tokenId]; require(owner != address(0)); return owner; } /** * @dev Gets the approved address to take ownership of a given token ID * @param _tokenId uint256 ID of the token to query the approval of * @return address currently approved to take ownership of the given token ID */ function approvedFor(uint256 _tokenId) public view returns (address) { return tokenApprovals[_tokenId]; } /** * @dev Transfers the ownership of a given token ID to another address * @param _to address to receive the ownership of the given token ID * @param _tokenId uint256 ID of the token to be transferred */ function transfer(address _to, uint256 _tokenId) public onlyOwnerOf(_tokenId) { clearApprovalAndTransfer(msg.sender, _to, _tokenId); } /** * @dev Approves another address to claim for the ownership of the given token ID * @param _to address to be approved for the given token ID * @param _tokenId uint256 ID of the token to be approved */ function approve(address _to, uint256 _tokenId) public onlyOwnerOf(_tokenId) { address owner = ownerOf(_tokenId); require(_to != owner); if (approvedFor(_tokenId) != 0 || _to != 0) { tokenApprovals[_tokenId] = _to; Approval(owner, _to, _tokenId); } } /** * @dev Claims the ownership of a given token ID * @param _tokenId uint256 ID of the token being claimed by the msg.sender */ function takeOwnership(uint256 _tokenId) public { require(isApprovedFor(msg.sender, _tokenId)); clearApprovalAndTransfer(ownerOf(_tokenId), msg.sender, _tokenId); } /** * @dev Mint token function * @param _to The address that will own the minted token * @param _tokenId uint256 ID of the token to be minted by the msg.sender */ function _mint(address _to, uint256 _tokenId) internal { require(_to != address(0)); addToken(_to, _tokenId); Transfer(0x0, _to, _tokenId); } /** * @dev Burns a specific token * @param _tokenId uint256 ID of the token being burned by the msg.sender */ function _burn(uint256 _tokenId) onlyOwnerOf(_tokenId) internal { if (approvedFor(_tokenId) != 0) { clearApproval(msg.sender, _tokenId); } removeToken(msg.sender, _tokenId); Transfer(msg.sender, 0x0, _tokenId); } /** * @dev Tells whether the msg.sender is approved for the given token ID or not * This function is not private so it can be extended in further implementations like the operatable ERC721 * @param _owner address of the owner to query the approval of * @param _tokenId uint256 ID of the token to query the approval of * @return bool whether the msg.sender is approved for the given token ID or not */ function isApprovedFor(address _owner, uint256 _tokenId) internal view returns (bool) { return approvedFor(_tokenId) == _owner; } /** * @dev Internal function to clear current approval and transfer the ownership of a given token ID * @param _from address which you want to send tokens from * @param _to address which you want to transfer the token to * @param _tokenId uint256 ID of the token to be transferred */ function clearApprovalAndTransfer(address _from, address _to, uint256 _tokenId) internal { require(_to != address(0)); require(_to != ownerOf(_tokenId)); require(ownerOf(_tokenId) == _from); clearApproval(_from, _tokenId); removeToken(_from, _tokenId); addToken(_to, _tokenId); Transfer(_from, _to, _tokenId); } /** * @dev Internal function to clear current approval of a given token ID * @param _tokenId uint256 ID of the token to be transferred */ function clearApproval(address _owner, uint256 _tokenId) private { require(ownerOf(_tokenId) == _owner); tokenApprovals[_tokenId] = 0; Approval(_owner, 0, _tokenId); } /** * @dev Internal function to add a token ID to the list of a given address * @param _to address representing the new owner of the given token ID * @param _tokenId uint256 ID of the token to be added to the tokens list of the given address */ function addToken(address _to, uint256 _tokenId) private { require(tokenOwner[_tokenId] == address(0)); tokenOwner[_tokenId] = _to; uint256 length = balanceOf(_to); ownedTokens[_to].push(_tokenId); ownedTokensIndex[_tokenId] = length; totalTokens = totalTokens.add(1); } /** * @dev Internal function to remove a token ID from the list of a given address * @param _from address representing the previous owner of the given token ID * @param _tokenId uint256 ID of the token to be removed from the tokens list of the given address */ function removeToken(address _from, uint256 _tokenId) private { require(ownerOf(_tokenId) == _from); uint256 tokenIndex = ownedTokensIndex[_tokenId]; uint256 lastTokenIndex = balanceOf(_from).sub(1); uint256 lastToken = ownedTokens[_from][lastTokenIndex]; tokenOwner[_tokenId] = 0; ownedTokens[_from][tokenIndex] = lastToken; ownedTokens[_from][lastTokenIndex] = 0; // Note that this will handle single-element arrays. In that case, both tokenIndex and lastTokenIndex are going to // be zero. Then we can make sure that we will remove _tokenId from the ownedTokens list since we are first swapping // the lastToken to the first position, and then dropping the element placed in the last position of the list ownedTokens[_from].length--; ownedTokensIndex[_tokenId] = 0; ownedTokensIndex[lastToken] = tokenIndex; totalTokens = totalTokens.sub(1); } } /** * @title CryptoThingWithDescendants */ contract CryptoThingWithDescendants is Ownable, ERC721Token { using SafeMath for uint256; struct Thing { uint256 id; uint256 parentId; uint256 purchasePrice; uint256 growthRate; uint256 dividendRate; uint256 dividendsPaid; uint256 lastAction; bytes32 displayName; } uint256 public gameCost = 10 ether; uint256 public floorPrice = 10 finney; uint256 public standardGrowthRate = 150; uint256 public numThings; mapping (uint256 => Thing) public things; mapping (uint256 => uint256[]) public descendantsOfThing; string constant public NAME = 'Star Card'; string constant public SYMBOL = 'CARD'; event DividendPaid(address indexed recipient, uint256 amount); event OverpaymentRefunded(uint256 amountExpected, uint256 excessFunds); event ThingBorn(uint256 indexed thingId, uint256 initialPrice); event ThingDestroyed(uint256 indexed thingId); event ThingSold( uint256 indexed thingId, uint256 oldPrice, uint256 newPrice, address oldOwner, address newOwner ); function () payable public { // someone sent a gift! yay! owner.transfer(msg.value); } function name() constant public returns (string) { return NAME; } function symbol() constant public returns (string) { return SYMBOL; } function addThing( uint256 _parentId, uint256 _purchasePrice, uint256 _growthRate, uint256 _dividendRate, bytes32 _displayName ) public onlyOwner returns (uint256 thingId) { thingId = ++numThings; things[thingId] = Thing({ id: thingId, parentId: _parentId, purchasePrice: _purchasePrice == 0 ? floorPrice : _purchasePrice, growthRate: _growthRate == 0 ? standardGrowthRate : _growthRate, dividendRate: _dividendRate, dividendsPaid: 0, lastAction: block.timestamp, displayName: _displayName }); if (_parentId != 0) descendantsOfThing[_parentId].push(thingId); _mint(msg.sender, thingId); ThingBorn(thingId, things[thingId].purchasePrice); } function purchase(uint256 _thingId) public payable { require(_thingId != 0 && _thingId <= numThings); address previousOwner = ownerOf(_thingId); require(previousOwner != msg.sender); Thing storage thing = things[_thingId]; uint256[] storage descendants = descendantsOfThing[_thingId]; uint256 currentPrice = getCurrentPrice(_thingId); require(msg.value >= currentPrice); if (msg.value > currentPrice) { OverpaymentRefunded(currentPrice, msg.value.sub(currentPrice)); msg.sender.transfer(msg.value.sub(currentPrice)); } if (thing.dividendRate != 0 && (thing.parentId != 0 || descendants.length > 0)) { uint256 numDividends = thing.parentId == 0 ? descendants.length : descendants.length.add(1); uint256 dividendPerRecipient = getDividendPayout( currentPrice, thing.dividendRate, numDividends ); address dividendRecipient = address(this); for (uint256 i = 0; i < numDividends; i++) { dividendRecipient = ownerOf( i == descendants.length ? thing.parentId : descendants[i] ); dividendRecipient.transfer(dividendPerRecipient); DividendPaid(dividendRecipient, dividendPerRecipient); } thing.dividendsPaid = thing.dividendsPaid.add(dividendPerRecipient.mul(numDividends)); } uint256 previousHolderShare = currentPrice.sub( dividendPerRecipient.mul(numDividends) ); uint256 fee = previousHolderShare.div(20); owner.transfer(fee); previousOwner.transfer(previousHolderShare.sub(fee)); thing.purchasePrice = thing.purchasePrice.mul(thing.growthRate).div(100); thing.lastAction = block.timestamp; clearApprovalAndTransfer(previousOwner, msg.sender, _thingId); ThingSold(_thingId, currentPrice, thing.purchasePrice, previousOwner, msg.sender); } function purchaseGame() public payable { require(msg.sender != owner); require(msg.value >= gameCost); owner.transfer(msg.value); owner = msg.sender; OwnershipTransferred(owner, msg.sender); } function setGameCost(uint256 newCost) public onlyOwner { gameCost = newCost; } function getDescendantsOfThing(uint256 _thingId) public view returns (uint256[]) { return descendantsOfThing[_thingId]; } function getCurrentPrice( uint256 _thingId ) public view returns (uint256 currentPrice) { require(_thingId != 0 && _thingId <= numThings); Thing storage thing = things[_thingId]; currentPrice = getPurchasePrice(thing.purchasePrice, thing.growthRate); } function getPurchasePrice( uint256 _currentPrice, uint256 _priceIncrease ) internal pure returns (uint256 currentPrice) { currentPrice = _currentPrice.mul(_priceIncrease).div(100); } function getDividendPayout( uint256 _purchasePrice, uint256 _dividendRate, uint256 _numDividends ) public pure returns (uint256 dividend) { dividend = _purchasePrice.mul( _dividendRate ).div( 100 ).sub( _purchasePrice ).div( _numDividends ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_thingId","type":"uint256"}],"name":"getDescendantsOfThing","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"standardGrowthRate","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":true,"inputs":[{"name":"_purchasePrice","type":"uint256"},{"name":"_dividendRate","type":"uint256"},{"name":"_numDividends","type":"uint256"}],"name":"getDividendPayout","outputs":[{"name":"dividend","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"approvedFor","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"tokensOf","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"","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":false,"inputs":[{"name":"newCost","type":"uint256"}],"name":"setGameCost","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"floorPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numThings","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"descendantsOfThing","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"NAME","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"takeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_thingId","type":"uint256"}],"name":"getCurrentPrice","outputs":[{"name":"currentPrice","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gameCost","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"purchaseGame","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_parentId","type":"uint256"},{"name":"_purchasePrice","type":"uint256"},{"name":"_growthRate","type":"uint256"},{"name":"_dividendRate","type":"uint256"},{"name":"_displayName","type":"bytes32"}],"name":"addThing","outputs":[{"name":"thingId","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_thingId","type":"uint256"}],"name":"purchase","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"things","outputs":[{"name":"id","type":"uint256"},{"name":"parentId","type":"uint256"},{"name":"purchasePrice","type":"uint256"},{"name":"growthRate","type":"uint256"},{"name":"dividendRate","type":"uint256"},{"name":"dividendsPaid","type":"uint256"},{"name":"lastAction","type":"uint256"},{"name":"displayName","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"SYMBOL","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"recipient","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"DividendPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amountExpected","type":"uint256"},{"indexed":false,"name":"excessFunds","type":"uint256"}],"name":"OverpaymentRefunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"thingId","type":"uint256"},{"indexed":false,"name":"initialPrice","type":"uint256"}],"name":"ThingBorn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"thingId","type":"uint256"}],"name":"ThingDestroyed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"thingId","type":"uint256"},{"indexed":false,"name":"oldPrice","type":"uint256"},{"indexed":false,"name":"newPrice","type":"uint256"},{"indexed":false,"name":"oldOwner","type":"address"},{"indexed":false,"name":"newOwner","type":"address"}],"name":"ThingSold","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_approved","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
6060604052678ac7230489e80000600655662386f26fc100006007556096600855336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506122fc8061006f6000396000f30060606040526004361061015f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101c257806307a7465f14610250578063095ea7b3146102c8578063169853491461030a57806318160ddd14610333578063269aacc81461035c5780632a6dd48f146103a55780635a3f2672146104085780636352211e1461049657806370a08231146104f95780637f17b79d146105465780638da5cb5b146105695780639363c812146105be57806395d89b41146105e757806398123528146106755780639e1d52011461069e578063a3f4df7e146106de578063a9059cbb1461076c578063b2e6ceeb146107ae578063c55d0f56146107d1578063cab896dc14610808578063de65da2014610831578063e534a34b1461083b578063efef39a11461089a578063f2e23168146108b2578063f2fde38b14610922578063f76f8d781461095b575b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015156101c057600080fd5b005b34156101cd57600080fd5b6101d56109e9565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102155780820151818401526020810190506101fa565b50505050905090810190601f1680156102425780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561025b57600080fd5b6102716004808035906020019091905050610a2c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102b4578082015181840152602081019050610299565b505050509050019250505060405180910390f35b34156102d357600080fd5b610308600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610a9d565b005b341561031557600080fd5b61031d610c30565b6040518082815260200191505060405180910390f35b341561033e57600080fd5b610346610c36565b6040518082815260200191505060405180910390f35b341561036757600080fd5b61038f6004808035906020019091908035906020019091908035906020019091905050610c40565b6040518082815260200191505060405180910390f35b34156103b057600080fd5b6103c66004808035906020019091905050610c95565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cd2565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610482578082015181840152602081019050610467565b505050509050019250505060405180910390f35b34156104a157600080fd5b6104b76004808035906020019091905050610d6f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050457600080fd5b610530600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ded565b6040518082815260200191505060405180910390f35b341561055157600080fd5b6105676004808035906020019091905050610e39565b005b341561057457600080fd5b61057c610e9e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105c957600080fd5b6105d1610ec3565b6040518082815260200191505060405180910390f35b34156105f257600080fd5b6105fa610ec9565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561063a57808201518184015260208101905061061f565b50505050905090810190601f1680156106675780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561068057600080fd5b610688610f0c565b6040518082815260200191505060405180910390f35b34156106a957600080fd5b6106c86004808035906020019091908035906020019091905050610f12565b6040518082815260200191505060405180910390f35b34156106e957600080fd5b6106f1610f43565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610731578082015181840152602081019050610716565b50505050905090810190601f16801561075e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561077757600080fd5b6107ac600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610f7c565b005b34156107b957600080fd5b6107cf6004808035906020019091905050610fcf565b005b34156107dc57600080fd5b6107f26004808035906020019091905050610ffa565b6040518082815260200191505060405180910390f35b341561081357600080fd5b61081b61104a565b6040518082815260200191505060405180910390f35b610839611050565b005b341561084657600080fd5b6108846004808035906020019091908035906020019091908035906020019091908035906020019091908035600019169060200190919050506111db565b6040518082815260200191505060405180910390f35b6108b060048080359060200190919050506113bd565b005b34156108bd57600080fd5b6108d3600480803590602001909190505061189a565b6040518089815260200188815260200187815260200186815260200185815260200184815260200183815260200182600019166000191681526020019850505050505050505060405180910390f35b341561092d57600080fd5b610959600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118e2565b005b341561096657600080fd5b61096e611a37565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109ae578082015181840152602081019050610993565b50505050905090810190601f1680156109db5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6109f161222b565b6040805190810160405280600981526020017f5374617220436172640000000000000000000000000000000000000000000000815250905090565b610a3461223f565b600b6000838152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015610a9157602002820191906000526020600020905b815481526020019060010190808311610a7d575b50505050509050919050565b6000813373ffffffffffffffffffffffffffffffffffffffff16610ac082610d6f565b73ffffffffffffffffffffffffffffffffffffffff16141515610ae257600080fd5b610aeb83610d6f565b91508173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515610b2857600080fd5b6000610b3384610c95565b73ffffffffffffffffffffffffffffffffffffffff16141580610b6d575060008473ffffffffffffffffffffffffffffffffffffffff1614155b15610c2a57836003600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a35b50505050565b60085481565b6000600154905090565b6000610c8c82610c7e86610c706064610c62898b611a7090919063ffffffff16565b611aab90919063ffffffff16565b611ac690919063ffffffff16565b611aab90919063ffffffff16565b90509392505050565b60006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b610cda61223f565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015610d6357602002820191906000526020600020905b815481526020019060010190808311610d4f575b50505050509050919050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610de457600080fd5b80915050919050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e9457600080fd5b8060068190555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b610ed161222b565b6040805190810160405280600481526020017f4341524400000000000000000000000000000000000000000000000000000000815250905090565b60095481565b600b60205281600052604060002081815481101515610f2d57fe5b9060005260206000209001600091509150505481565b6040805190810160405280600981526020017f537461722043617264000000000000000000000000000000000000000000000081525081565b803373ffffffffffffffffffffffffffffffffffffffff16610f9d82610d6f565b73ffffffffffffffffffffffffffffffffffffffff16141515610fbf57600080fd5b610fca338484611adf565b505050565b610fd93382611c28565b1515610fe457600080fd5b610ff7610ff082610d6f565b3383611adf565b50565b6000806000831415801561101057506009548311155b151561101b57600080fd5b600a6000848152602001908152602001600020905061104281600201548260030154611c69565b915050919050565b60065481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515156110ac57600080fd5b60065434101515156110bd57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050151561111e57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561123857600080fd5b600960008154600101919050819055905061010060405190810160405280828152602001878152602001600087146112705786611274565b6007545b815260200160008614611287578561128b565b6008545b8152602001848152602001600081526020014281526020018360001916815250600a6000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e0820151816007019060001916905590505060008614151561135c57600b600087815260200190815260200160002080548060010182816113469190612253565b9160005260206000209001600083909190915055505b6113663382611c99565b807faa0cf86995e6b19e7fbbb6ac5cffc44c081faf206059e153ac441ea7f7e82148600a6000848152602001908152602001600020600201546040518082815260200191505060405180910390a295945050505050565b60008060008060008060008060008060008b141580156113df57506009548b11155b15156113ea57600080fd5b6113f38b610d6f565b99503373ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415151561143057600080fd5b600a60008c81526020019081526020016000209850600b60008c815260200190815260200160002097506114638b610ffa565b965086341015151561147457600080fd5b86341115611520577ff3c131ad7e14b0819d605186af670423716e4ddeb85d45547c9cb910c57af708876114b18934611ac690919063ffffffff16565b604051808381526020018281526020019250505060405180910390a13373ffffffffffffffffffffffffffffffffffffffff166108fc6114fa8934611ac690919063ffffffff16565b9081150290604051600060405180830381858888f19350505050151561151f57600080fd5b5b6000896004015414158015611549575060008960010154141580611548575060008880549050115b5b156116a75760008960010154146115775761157260018980549050611d3390919063ffffffff16565b61157d565b87805490505b955061158e878a6004015488610c40565b9450309350600092505b85831015611675576115d8888054905084146115cd5788848154811015156115bc57fe5b9060005260206000209001546115d3565b89600101545b610d6f565b93508373ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f19350505050151561161a57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff167fb70dbf0e62ac2891fc0dccea9117219168105932d8f1537152476ad5e9f7a19d866040518082815260200191505060405180910390a28280600101935050611598565b61169e61168b8787611a7090919063ffffffff16565b8a60050154611d3390919063ffffffff16565b89600501819055505b6116cc6116bd8787611a7090919063ffffffff16565b88611ac690919063ffffffff16565b91506116e2601483611aab90919063ffffffff16565b90506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561174557600080fd5b8973ffffffffffffffffffffffffffffffffffffffff166108fc6117728385611ac690919063ffffffff16565b9081150290604051600060405180830381858888f19350505050151561179757600080fd5b6117c560646117b78b600301548c60020154611a7090919063ffffffff16565b611aab90919063ffffffff16565b89600201819055504289600601819055506117e18a338d611adf565b8a7f0282563bd47b4d3d190c4e341daf0441684e1d78088c1ab272bf4d9699b82f70888b600201548d33604051808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390a25050505050505050505050565b600a6020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070154905088565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561193d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561197957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040805190810160405280600481526020017f434152440000000000000000000000000000000000000000000000000000000081525081565b6000806000841415611a855760009150611aa4565b8284029050828482811515611a9657fe5b04141515611aa057fe5b8091505b5092915050565b6000808284811515611ab957fe5b0490508091505092915050565b6000828211151515611ad457fe5b818303905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611b1b57600080fd5b611b2481610d6f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611b5e57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff16611b7e82610d6f565b73ffffffffffffffffffffffffffffffffffffffff16141515611ba057600080fd5b611baa8382611d51565b611bb48382611e3a565b611bbe82826120c1565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008273ffffffffffffffffffffffffffffffffffffffff16611c4a83610c95565b73ffffffffffffffffffffffffffffffffffffffff1614905092915050565b6000611c916064611c838486611a7090919063ffffffff16565b611aab90919063ffffffff16565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611cd557600080fd5b611cdf82826120c1565b8173ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000808284019050838110151515611d4757fe5b8091505092915050565b8173ffffffffffffffffffffffffffffffffffffffff16611d7182610d6f565b73ffffffffffffffffffffffffffffffffffffffff16141515611d9357600080fd5b60006003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b60008060008473ffffffffffffffffffffffffffffffffffffffff16611e5f85610d6f565b73ffffffffffffffffffffffffffffffffffffffff16141515611e8157600080fd5b60056000858152602001908152602001600020549250611eb36001611ea587610ded565b611ac690919063ffffffff16565b9150600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481101515611f0157fe5b906000526020600020900154905060006002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084815481101515611faf57fe5b9060005260206000209001819055506000600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110151561200c57fe5b906000526020600020900181905550600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548091906001900361206d919061227f565b50600060056000868152602001908152602001600020819055508260056000838152602001908152602001600020819055506120b460018054611ac690919063ffffffff16565b6001819055505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561213057600080fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061218b83610ded565b9050600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060010182816121de9190612253565b91600052602060002090016000849091909150555080600560008481526020019081526020016000208190555061222060018054611d3390919063ffffffff16565b600181905550505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b81548183558181151161227a5781836000526020600020918201910161227991906122ab565b5b505050565b8154818355818115116122a6578183600052602060002091820191016122a591906122ab565b5b505050565b6122cd91905b808211156122c95760008160009055506001016122b1565b5090565b905600a165627a7a7230582079153c95be2a735f5463d3c01cc00f21070fee797235e10c16e2d0340deabb910029
Deployed Bytecode
0x60606040526004361061015f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101c257806307a7465f14610250578063095ea7b3146102c8578063169853491461030a57806318160ddd14610333578063269aacc81461035c5780632a6dd48f146103a55780635a3f2672146104085780636352211e1461049657806370a08231146104f95780637f17b79d146105465780638da5cb5b146105695780639363c812146105be57806395d89b41146105e757806398123528146106755780639e1d52011461069e578063a3f4df7e146106de578063a9059cbb1461076c578063b2e6ceeb146107ae578063c55d0f56146107d1578063cab896dc14610808578063de65da2014610831578063e534a34b1461083b578063efef39a11461089a578063f2e23168146108b2578063f2fde38b14610922578063f76f8d781461095b575b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015156101c057600080fd5b005b34156101cd57600080fd5b6101d56109e9565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102155780820151818401526020810190506101fa565b50505050905090810190601f1680156102425780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561025b57600080fd5b6102716004808035906020019091905050610a2c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102b4578082015181840152602081019050610299565b505050509050019250505060405180910390f35b34156102d357600080fd5b610308600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610a9d565b005b341561031557600080fd5b61031d610c30565b6040518082815260200191505060405180910390f35b341561033e57600080fd5b610346610c36565b6040518082815260200191505060405180910390f35b341561036757600080fd5b61038f6004808035906020019091908035906020019091908035906020019091905050610c40565b6040518082815260200191505060405180910390f35b34156103b057600080fd5b6103c66004808035906020019091905050610c95565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cd2565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610482578082015181840152602081019050610467565b505050509050019250505060405180910390f35b34156104a157600080fd5b6104b76004808035906020019091905050610d6f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050457600080fd5b610530600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ded565b6040518082815260200191505060405180910390f35b341561055157600080fd5b6105676004808035906020019091905050610e39565b005b341561057457600080fd5b61057c610e9e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105c957600080fd5b6105d1610ec3565b6040518082815260200191505060405180910390f35b34156105f257600080fd5b6105fa610ec9565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561063a57808201518184015260208101905061061f565b50505050905090810190601f1680156106675780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561068057600080fd5b610688610f0c565b6040518082815260200191505060405180910390f35b34156106a957600080fd5b6106c86004808035906020019091908035906020019091905050610f12565b6040518082815260200191505060405180910390f35b34156106e957600080fd5b6106f1610f43565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610731578082015181840152602081019050610716565b50505050905090810190601f16801561075e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561077757600080fd5b6107ac600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610f7c565b005b34156107b957600080fd5b6107cf6004808035906020019091905050610fcf565b005b34156107dc57600080fd5b6107f26004808035906020019091905050610ffa565b6040518082815260200191505060405180910390f35b341561081357600080fd5b61081b61104a565b6040518082815260200191505060405180910390f35b610839611050565b005b341561084657600080fd5b6108846004808035906020019091908035906020019091908035906020019091908035906020019091908035600019169060200190919050506111db565b6040518082815260200191505060405180910390f35b6108b060048080359060200190919050506113bd565b005b34156108bd57600080fd5b6108d3600480803590602001909190505061189a565b6040518089815260200188815260200187815260200186815260200185815260200184815260200183815260200182600019166000191681526020019850505050505050505060405180910390f35b341561092d57600080fd5b610959600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118e2565b005b341561096657600080fd5b61096e611a37565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109ae578082015181840152602081019050610993565b50505050905090810190601f1680156109db5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6109f161222b565b6040805190810160405280600981526020017f5374617220436172640000000000000000000000000000000000000000000000815250905090565b610a3461223f565b600b6000838152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015610a9157602002820191906000526020600020905b815481526020019060010190808311610a7d575b50505050509050919050565b6000813373ffffffffffffffffffffffffffffffffffffffff16610ac082610d6f565b73ffffffffffffffffffffffffffffffffffffffff16141515610ae257600080fd5b610aeb83610d6f565b91508173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515610b2857600080fd5b6000610b3384610c95565b73ffffffffffffffffffffffffffffffffffffffff16141580610b6d575060008473ffffffffffffffffffffffffffffffffffffffff1614155b15610c2a57836003600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a35b50505050565b60085481565b6000600154905090565b6000610c8c82610c7e86610c706064610c62898b611a7090919063ffffffff16565b611aab90919063ffffffff16565b611ac690919063ffffffff16565b611aab90919063ffffffff16565b90509392505050565b60006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b610cda61223f565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015610d6357602002820191906000526020600020905b815481526020019060010190808311610d4f575b50505050509050919050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610de457600080fd5b80915050919050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e9457600080fd5b8060068190555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b610ed161222b565b6040805190810160405280600481526020017f4341524400000000000000000000000000000000000000000000000000000000815250905090565b60095481565b600b60205281600052604060002081815481101515610f2d57fe5b9060005260206000209001600091509150505481565b6040805190810160405280600981526020017f537461722043617264000000000000000000000000000000000000000000000081525081565b803373ffffffffffffffffffffffffffffffffffffffff16610f9d82610d6f565b73ffffffffffffffffffffffffffffffffffffffff16141515610fbf57600080fd5b610fca338484611adf565b505050565b610fd93382611c28565b1515610fe457600080fd5b610ff7610ff082610d6f565b3383611adf565b50565b6000806000831415801561101057506009548311155b151561101b57600080fd5b600a6000848152602001908152602001600020905061104281600201548260030154611c69565b915050919050565b60065481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515156110ac57600080fd5b60065434101515156110bd57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050151561111e57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561123857600080fd5b600960008154600101919050819055905061010060405190810160405280828152602001878152602001600087146112705786611274565b6007545b815260200160008614611287578561128b565b6008545b8152602001848152602001600081526020014281526020018360001916815250600a6000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e0820151816007019060001916905590505060008614151561135c57600b600087815260200190815260200160002080548060010182816113469190612253565b9160005260206000209001600083909190915055505b6113663382611c99565b807faa0cf86995e6b19e7fbbb6ac5cffc44c081faf206059e153ac441ea7f7e82148600a6000848152602001908152602001600020600201546040518082815260200191505060405180910390a295945050505050565b60008060008060008060008060008060008b141580156113df57506009548b11155b15156113ea57600080fd5b6113f38b610d6f565b99503373ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415151561143057600080fd5b600a60008c81526020019081526020016000209850600b60008c815260200190815260200160002097506114638b610ffa565b965086341015151561147457600080fd5b86341115611520577ff3c131ad7e14b0819d605186af670423716e4ddeb85d45547c9cb910c57af708876114b18934611ac690919063ffffffff16565b604051808381526020018281526020019250505060405180910390a13373ffffffffffffffffffffffffffffffffffffffff166108fc6114fa8934611ac690919063ffffffff16565b9081150290604051600060405180830381858888f19350505050151561151f57600080fd5b5b6000896004015414158015611549575060008960010154141580611548575060008880549050115b5b156116a75760008960010154146115775761157260018980549050611d3390919063ffffffff16565b61157d565b87805490505b955061158e878a6004015488610c40565b9450309350600092505b85831015611675576115d8888054905084146115cd5788848154811015156115bc57fe5b9060005260206000209001546115d3565b89600101545b610d6f565b93508373ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f19350505050151561161a57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff167fb70dbf0e62ac2891fc0dccea9117219168105932d8f1537152476ad5e9f7a19d866040518082815260200191505060405180910390a28280600101935050611598565b61169e61168b8787611a7090919063ffffffff16565b8a60050154611d3390919063ffffffff16565b89600501819055505b6116cc6116bd8787611a7090919063ffffffff16565b88611ac690919063ffffffff16565b91506116e2601483611aab90919063ffffffff16565b90506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561174557600080fd5b8973ffffffffffffffffffffffffffffffffffffffff166108fc6117728385611ac690919063ffffffff16565b9081150290604051600060405180830381858888f19350505050151561179757600080fd5b6117c560646117b78b600301548c60020154611a7090919063ffffffff16565b611aab90919063ffffffff16565b89600201819055504289600601819055506117e18a338d611adf565b8a7f0282563bd47b4d3d190c4e341daf0441684e1d78088c1ab272bf4d9699b82f70888b600201548d33604051808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390a25050505050505050505050565b600a6020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070154905088565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561193d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561197957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040805190810160405280600481526020017f434152440000000000000000000000000000000000000000000000000000000081525081565b6000806000841415611a855760009150611aa4565b8284029050828482811515611a9657fe5b04141515611aa057fe5b8091505b5092915050565b6000808284811515611ab957fe5b0490508091505092915050565b6000828211151515611ad457fe5b818303905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611b1b57600080fd5b611b2481610d6f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611b5e57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff16611b7e82610d6f565b73ffffffffffffffffffffffffffffffffffffffff16141515611ba057600080fd5b611baa8382611d51565b611bb48382611e3a565b611bbe82826120c1565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008273ffffffffffffffffffffffffffffffffffffffff16611c4a83610c95565b73ffffffffffffffffffffffffffffffffffffffff1614905092915050565b6000611c916064611c838486611a7090919063ffffffff16565b611aab90919063ffffffff16565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611cd557600080fd5b611cdf82826120c1565b8173ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000808284019050838110151515611d4757fe5b8091505092915050565b8173ffffffffffffffffffffffffffffffffffffffff16611d7182610d6f565b73ffffffffffffffffffffffffffffffffffffffff16141515611d9357600080fd5b60006003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b60008060008473ffffffffffffffffffffffffffffffffffffffff16611e5f85610d6f565b73ffffffffffffffffffffffffffffffffffffffff16141515611e8157600080fd5b60056000858152602001908152602001600020549250611eb36001611ea587610ded565b611ac690919063ffffffff16565b9150600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481101515611f0157fe5b906000526020600020900154905060006002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084815481101515611faf57fe5b9060005260206000209001819055506000600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110151561200c57fe5b906000526020600020900181905550600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548091906001900361206d919061227f565b50600060056000868152602001908152602001600020819055508260056000838152602001908152602001600020819055506120b460018054611ac690919063ffffffff16565b6001819055505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561213057600080fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061218b83610ded565b9050600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060010182816121de9190612253565b91600052602060002090016000849091909150555080600560008481526020019081526020016000208190555061222060018054611d3390919063ffffffff16565b600181905550505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b81548183558181151161227a5781836000526020600020918201910161227991906122ab565b5b505050565b8154818355818115116122a6578183600052602060002091820191016122a591906122ab565b5b505050565b6122cd91905b808211156122c95760008160009055506001016122b1565b5090565b905600a165627a7a7230582079153c95be2a735f5463d3c01cc00f21070fee797235e10c16e2d0340deabb910029
Swarm Source
bzzr://79153c95be2a735f5463d3c01cc00f21070fee797235e10c16e2d0340deabb91
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.