Feature Tip: Add private address tag to any address under My Name Tag !
Overview
Max Total Supply
100,000,000 OAX
Holders
7,143 ( 0.028%)
Market
Price
$0.03 @ 0.000010 ETH (-2.73%)
Onchain Market Cap
$3,245,872.00
Circulating Supply Market Cap
$1,808,861.00
Other Info
Token Contract (WITH 18 Decimals)
Balance
478 OAXValue
$15.52 ( ~0.00456763051714138 Eth) [0.0005%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
OpenANXToken
Compiler Version
v0.4.11+commit.68ef5810
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2017-06-21 */ pragma solidity ^0.4.11; // ---------------------------------------------------------------------------- // OAX 'openANX Token' crowdfunding contract // // Refer to http://openanx.org/ for further information. // // Enjoy. (c) openANX and BokkyPooBah / Bok Consulting Pty Ltd 2017. // The MIT Licence. // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // OAX 'openANX Token' crowdfunding contract - ERC20 Token Interface // // Refer to http://openanx.org/ for further information. // // Enjoy. (c) openANX and BokkyPooBah / Bok Consulting Pty Ltd 2017. // The MIT Licence. // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // ERC Token Standard #20 Interface // https://github.com/ethereum/EIPs/issues/20 // ---------------------------------------------------------------------------- contract ERC20Interface { uint public totalSupply; function balanceOf(address _owner) constant returns (uint balance); function transfer(address _to, uint _value) returns (bool success); function transferFrom(address _from, address _to, uint _value) returns (bool success); function approve(address _spender, uint _value) returns (bool success); function allowance(address _owner, address _spender) constant returns (uint remaining); event Transfer(address indexed _from, address indexed _to, uint _value); event Approval(address indexed _owner, address indexed _spender, uint _value); } // ---------------------------------------------------------------------------- // OAX 'openANX Token' crowdfunding contract - Owned contracts // // Refer to http://openanx.org/ for further information. // // Enjoy. (c) openANX and BokkyPooBah / Bok Consulting Pty Ltd 2017. // The MIT Licence. // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // Owned contract // ---------------------------------------------------------------------------- contract Owned { // ------------------------------------------------------------------------ // Current owner, and proposed new owner // ------------------------------------------------------------------------ address public owner; address public newOwner; // ------------------------------------------------------------------------ // Constructor - assign creator as the owner // ------------------------------------------------------------------------ function Owned() { owner = msg.sender; } // ------------------------------------------------------------------------ // Modifier to mark that a function can only be executed by the owner // ------------------------------------------------------------------------ modifier onlyOwner { require(msg.sender == owner); _; } // ------------------------------------------------------------------------ // Owner can initiate transfer of contract to a new owner // ------------------------------------------------------------------------ function transferOwnership(address _newOwner) onlyOwner { newOwner = _newOwner; } // ------------------------------------------------------------------------ // New owner has to accept transfer of contract // ------------------------------------------------------------------------ function acceptOwnership() { require(msg.sender == newOwner); OwnershipTransferred(owner, newOwner); owner = newOwner; } event OwnershipTransferred(address indexed _from, address indexed _to); } // ---------------------------------------------------------------------------- // OAX 'openANX Token' crowdfunding contract // // Refer to http://openanx.org/ for further information. // // Enjoy. (c) openANX and BokkyPooBah / Bok Consulting Pty Ltd 2017. // The MIT Licence. // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // Safe maths, borrowed from OpenZeppelin // ---------------------------------------------------------------------------- library SafeMath { // ------------------------------------------------------------------------ // Add a number to another number, checking for overflows // ------------------------------------------------------------------------ function add(uint a, uint b) internal returns (uint) { uint c = a + b; assert(c >= a && c >= b); return c; } // ------------------------------------------------------------------------ // Subtract a number from another number, checking for underflows // ------------------------------------------------------------------------ function sub(uint a, uint b) internal returns (uint) { assert(b <= a); return a - b; } } // ---------------------------------------------------------------------------- // OAX 'openANX Token' crowdfunding contract - Configuration // // Refer to http://openanx.org/ for further information. // // Enjoy. (c) openANX and BokkyPooBah / Bok Consulting Pty Ltd 2017. // The MIT Licence. // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // openANX crowdsale token smart contract - configuration parameters // ---------------------------------------------------------------------------- contract OpenANXTokenConfig { // ------------------------------------------------------------------------ // Token symbol(), name() and decimals() // ------------------------------------------------------------------------ string public constant SYMBOL = "OAX"; string public constant NAME = "openANX Token"; uint8 public constant DECIMALS = 18; // ------------------------------------------------------------------------ // Decimal factor for multiplications from OAX unit to OAX natural unit // ------------------------------------------------------------------------ uint public constant DECIMALSFACTOR = 10**uint(DECIMALS); // ------------------------------------------------------------------------ // Tranche 1 soft cap and hard cap, and total tokens // ------------------------------------------------------------------------ uint public constant TOKENS_SOFT_CAP = 13000000 * DECIMALSFACTOR; uint public constant TOKENS_HARD_CAP = 30000000 * DECIMALSFACTOR; uint public constant TOKENS_TOTAL = 100000000 * DECIMALSFACTOR; // ------------------------------------------------------------------------ // Tranche 1 crowdsale start date and end date // Do not use the `now` function here // Start - Thursday, 22-Jun-17 13:00:00 UTC / 1pm GMT 22 June 2017 // End - Saturday, 22-Jul-17 13:00:00 UTC / 1pm GMT 22 July 2017 // ------------------------------------------------------------------------ uint public constant START_DATE = 1498136400; uint public constant END_DATE = 1500728400; // ------------------------------------------------------------------------ // 1 year and 2 year dates for locked tokens // Do not use the `now` function here // ------------------------------------------------------------------------ uint public constant LOCKED_1Y_DATE = START_DATE + 365 days; uint public constant LOCKED_2Y_DATE = START_DATE + 2 * 365 days; // ------------------------------------------------------------------------ // Individual transaction contribution min and max amounts // Set to 0 to switch off, or `x ether` // ------------------------------------------------------------------------ uint public CONTRIBUTIONS_MIN = 0 ether; uint public CONTRIBUTIONS_MAX = 0 ether; } // ---------------------------------------------------------------------------- // OAX 'openANX Token' crowdfunding contract - locked tokens // // Refer to http://openanx.org/ for further information. // // Enjoy. (c) openANX and BokkyPooBah / Bok Consulting Pty Ltd 2017. // The MIT Licence. // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // Contract that holds the 1Y and 2Y locked token information // ---------------------------------------------------------------------------- contract LockedTokens is OpenANXTokenConfig { using SafeMath for uint; // ------------------------------------------------------------------------ // 1y and 2y locked totals, not including unsold tranche1 and all tranche2 // tokens // ------------------------------------------------------------------------ uint public constant TOKENS_LOCKED_1Y_TOTAL = 14000000 * DECIMALSFACTOR; uint public constant TOKENS_LOCKED_2Y_TOTAL = 26000000 * DECIMALSFACTOR; // ------------------------------------------------------------------------ // Tokens locked for 1 year for sale 2 in the following account // ------------------------------------------------------------------------ address public TRANCHE2_ACCOUNT = 0x813703Eb676f3B6C76dA75cBa0cbC49DdbCA7B37; // ------------------------------------------------------------------------ // Current totalSupply of 1y and 2y locked tokens // ------------------------------------------------------------------------ uint public totalSupplyLocked1Y; uint public totalSupplyLocked2Y; // ------------------------------------------------------------------------ // Locked tokens mapping // ------------------------------------------------------------------------ mapping (address => uint) public balancesLocked1Y; mapping (address => uint) public balancesLocked2Y; // ------------------------------------------------------------------------ // Address of openANX crowdsale token contract // ------------------------------------------------------------------------ ERC20Interface public tokenContract; // ------------------------------------------------------------------------ // Constructor - called by crowdsale token contract // ------------------------------------------------------------------------ function LockedTokens(address _tokenContract) { tokenContract = ERC20Interface(_tokenContract); // --- 1y locked tokens --- // Confirm 1Y totals add1Y(0x4beE088efDBCC610EEEa101ded7204150AF1C8b9,1000000 * DECIMALSFACTOR); add1Y(0x839551201f866907Eb5017bE79cEB48aDa58650c,925000 * DECIMALSFACTOR); add1Y(0xa92d4Cd3412862386c234Be572Fe4A8FA4BB09c6,925000 * DECIMALSFACTOR); add1Y(0xECf2B5fce33007E5669D63de39a4c663e56958dD,925000 * DECIMALSFACTOR); add1Y(0xD6B7695bc74E2C950eb953316359Eab283C5Bda8,925000 * DECIMALSFACTOR); add1Y(0xBE3463Eae26398D55a7118683079264BcF3ab24B,150000 * DECIMALSFACTOR); add1Y(0xf47428Fb9A61c9f3312cB035AEE049FBa76ba62a,150000 * DECIMALSFACTOR); add1Y(0xfCcc77165D822Ef9004714d829bDC267C743658a,50000 * DECIMALSFACTOR); add1Y(0xaf8df2aCAec3d5d92dE42a6c19d7706A4F3E8D8b,50000 * DECIMALSFACTOR); add1Y(0x22a6f9693856374BF2922cd837d07F6670E7FA4d,250000 * DECIMALSFACTOR); add1Y(0x3F720Ca8FfF598F00a51DE32A8Cb58Ca73f22aDe,50000 * DECIMALSFACTOR); add1Y(0xBd0D1954B301E414F0b5D0827A69EC5dD559e50B,50000 * DECIMALSFACTOR); add1Y(0x2ad6B011FEcDE830c9cc4dc0d0b77F055D6b5990,50000 * DECIMALSFACTOR); add1Y(0x0c5cD0E971cA18a0F0E0d581f4B93FaD31D608B0,2000085 * DECIMALSFACTOR); add1Y(0xFaaDC4d80Eaf430Ab604337CB67d77eC763D3e23,200248 * DECIMALSFACTOR); add1Y(0xDAef46f89c264182Cd87Ce93B620B63c7AfB14f7,1616920 * DECIMALSFACTOR); add1Y(0x19cc59C30cE54706633dC29EdEbAE1efF1757b25,224980 * DECIMALSFACTOR); add1Y(0xa130fE5D399104CA5AF168fbbBBe19F95d739741,745918 * DECIMALSFACTOR); add1Y(0xC0cD1bf6F2939095a56B0DFa085Ba2886b84E7d1,745918 * DECIMALSFACTOR); add1Y(0xf2C26e79eD264B0E3e5A5DFb1Dd91EA61f512C6e,745918 * DECIMALSFACTOR); add1Y(0x5F876a8A5F1B66fbf3D0D119075b62aF4386e319,745918 * DECIMALSFACTOR); add1Y(0xb8E046570800Dd76720aF6d42d3cCae451F54f15,745920 * DECIMALSFACTOR); add1Y(0xA524fa65Aac4647fa7bA2c20D22F64450c351bBd,714286 * DECIMALSFACTOR); add1Y(0x27209b276C15a936BCE08D7D70f0c97aeb3CE8c3,13889 * DECIMALSFACTOR); assert(totalSupplyLocked1Y == TOKENS_LOCKED_1Y_TOTAL); // --- 2y locked tokens --- add2Y(0x4beE088efDBCC610EEEa101ded7204150AF1C8b9,1000000 * DECIMALSFACTOR); add2Y(0x839551201f866907Eb5017bE79cEB48aDa58650c,925000 * DECIMALSFACTOR); add2Y(0xa92d4Cd3412862386c234Be572Fe4A8FA4BB09c6,925000 * DECIMALSFACTOR); add2Y(0xECf2B5fce33007E5669D63de39a4c663e56958dD,925000 * DECIMALSFACTOR); add2Y(0xD6B7695bc74E2C950eb953316359Eab283C5Bda8,925000 * DECIMALSFACTOR); add2Y(0xBE3463Eae26398D55a7118683079264BcF3ab24B,150000 * DECIMALSFACTOR); add2Y(0xf47428Fb9A61c9f3312cB035AEE049FBa76ba62a,150000 * DECIMALSFACTOR); add2Y(0xfCcc77165D822Ef9004714d829bDC267C743658a,50000 * DECIMALSFACTOR); add2Y(0xDAef46f89c264182Cd87Ce93B620B63c7AfB14f7,500000 * DECIMALSFACTOR); add2Y(0xaf8df2aCAec3d5d92dE42a6c19d7706A4F3E8D8b,50000 * DECIMALSFACTOR); add2Y(0x22a6f9693856374BF2922cd837d07F6670E7FA4d,250000 * DECIMALSFACTOR); add2Y(0x3F720Ca8FfF598F00a51DE32A8Cb58Ca73f22aDe,50000 * DECIMALSFACTOR); add2Y(0xBd0D1954B301E414F0b5D0827A69EC5dD559e50B,50000 * DECIMALSFACTOR); add2Y(0x2ad6B011FEcDE830c9cc4dc0d0b77F055D6b5990,50000 * DECIMALSFACTOR); //treasury add2Y(0x990a2D172398007fcbd5078D84696BdD8cCDf7b2,20000000 * DECIMALSFACTOR); assert(totalSupplyLocked2Y == TOKENS_LOCKED_2Y_TOTAL); } // ------------------------------------------------------------------------ // Add remaining tokens to locked 1y balances // ------------------------------------------------------------------------ function addRemainingTokens() { // Only the crowdsale contract can call this function require(msg.sender == address(tokenContract)); // Total tokens to be created uint remainingTokens = TOKENS_TOTAL; // Minus precommitments and public crowdsale tokens remainingTokens = remainingTokens.sub(tokenContract.totalSupply()); // Minus 1y locked tokens remainingTokens = remainingTokens.sub(totalSupplyLocked1Y); // Minus 2y locked tokens remainingTokens = remainingTokens.sub(totalSupplyLocked2Y); // Unsold tranche1 and tranche2 tokens to be locked for 1y add1Y(TRANCHE2_ACCOUNT, remainingTokens); } // ------------------------------------------------------------------------ // Add to 1y locked balances and totalSupply // ------------------------------------------------------------------------ function add1Y(address account, uint value) private { balancesLocked1Y[account] = balancesLocked1Y[account].add(value); totalSupplyLocked1Y = totalSupplyLocked1Y.add(value); } // ------------------------------------------------------------------------ // Add to 2y locked balances and totalSupply // ------------------------------------------------------------------------ function add2Y(address account, uint value) private { balancesLocked2Y[account] = balancesLocked2Y[account].add(value); totalSupplyLocked2Y = totalSupplyLocked2Y.add(value); } // ------------------------------------------------------------------------ // 1y locked balances for an account // ------------------------------------------------------------------------ function balanceOfLocked1Y(address account) constant returns (uint balance) { return balancesLocked1Y[account]; } // ------------------------------------------------------------------------ // 2y locked balances for an account // ------------------------------------------------------------------------ function balanceOfLocked2Y(address account) constant returns (uint balance) { return balancesLocked2Y[account]; } // ------------------------------------------------------------------------ // 1y and 2y locked balances for an account // ------------------------------------------------------------------------ function balanceOfLocked(address account) constant returns (uint balance) { return balancesLocked1Y[account].add(balancesLocked2Y[account]); } // ------------------------------------------------------------------------ // 1y and 2y locked total supply // ------------------------------------------------------------------------ function totalSupplyLocked() constant returns (uint) { return totalSupplyLocked1Y + totalSupplyLocked2Y; } // ------------------------------------------------------------------------ // An account can unlock their 1y locked tokens 1y after token launch date // ------------------------------------------------------------------------ function unlock1Y() { require(now >= LOCKED_1Y_DATE); uint amount = balancesLocked1Y[msg.sender]; require(amount > 0); balancesLocked1Y[msg.sender] = 0; totalSupplyLocked1Y = totalSupplyLocked1Y.sub(amount); if (!tokenContract.transfer(msg.sender, amount)) throw; } // ------------------------------------------------------------------------ // An account can unlock their 2y locked tokens 2y after token launch date // ------------------------------------------------------------------------ function unlock2Y() { require(now >= LOCKED_2Y_DATE); uint amount = balancesLocked2Y[msg.sender]; require(amount > 0); balancesLocked2Y[msg.sender] = 0; totalSupplyLocked2Y = totalSupplyLocked2Y.sub(amount); if (!tokenContract.transfer(msg.sender, amount)) throw; } } // ---------------------------------------------------------------------------- // ERC20 Token, with the addition of symbol, name and decimals // ---------------------------------------------------------------------------- contract ERC20Token is ERC20Interface, Owned { using SafeMath for uint; // ------------------------------------------------------------------------ // symbol(), name() and decimals() // ------------------------------------------------------------------------ string public symbol; string public name; uint8 public decimals; // ------------------------------------------------------------------------ // Balances for each account // ------------------------------------------------------------------------ mapping(address => uint) balances; // ------------------------------------------------------------------------ // Owner of account approves the transfer of an amount to another account // ------------------------------------------------------------------------ mapping(address => mapping (address => uint)) allowed; // ------------------------------------------------------------------------ // Constructor // ------------------------------------------------------------------------ function ERC20Token( string _symbol, string _name, uint8 _decimals, uint _totalSupply ) Owned() { symbol = _symbol; name = _name; decimals = _decimals; totalSupply = _totalSupply; balances[owner] = _totalSupply; } // ------------------------------------------------------------------------ // Get the account balance of another account with address _owner // ------------------------------------------------------------------------ function balanceOf(address _owner) constant returns (uint balance) { return balances[_owner]; } // ------------------------------------------------------------------------ // Transfer the balance from owner's account to another account // ------------------------------------------------------------------------ function transfer(address _to, uint _amount) returns (bool success) { if (balances[msg.sender] >= _amount // User has balance && _amount > 0 // Non-zero transfer && balances[_to] + _amount > balances[_to] // Overflow check ) { balances[msg.sender] = balances[msg.sender].sub(_amount); balances[_to] = balances[_to].add(_amount); Transfer(msg.sender, _to, _amount); return true; } else { return false; } } // ------------------------------------------------------------------------ // Allow _spender to withdraw from your account, multiple times, up to the // _value amount. If this function is called again it overwrites the // current allowance with _value. // ------------------------------------------------------------------------ function approve( address _spender, uint _amount ) returns (bool success) { allowed[msg.sender][_spender] = _amount; Approval(msg.sender, _spender, _amount); return true; } // ------------------------------------------------------------------------ // Spender of tokens transfer an amount of tokens from the token owner's // balance to another account. The owner of the tokens must already // have approve(...)-d this transfer // ------------------------------------------------------------------------ function transferFrom( address _from, address _to, uint _amount ) returns (bool success) { if (balances[_from] >= _amount // From a/c has balance && allowed[_from][msg.sender] >= _amount // Transfer approved && _amount > 0 // Non-zero transfer && balances[_to] + _amount > balances[_to] // Overflow check ) { balances[_from] = balances[_from].sub(_amount); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_amount); balances[_to] = balances[_to].add(_amount); Transfer(_from, _to, _amount); return true; } else { return false; } } // ------------------------------------------------------------------------ // Returns the amount of tokens approved by the owner that can be // transferred to the spender's account // ------------------------------------------------------------------------ function allowance( address _owner, address _spender ) constant returns (uint remaining) { return allowed[_owner][_spender]; } } // ---------------------------------------------------------------------------- // openANX crowdsale token smart contract // ---------------------------------------------------------------------------- contract OpenANXToken is ERC20Token, OpenANXTokenConfig { // ------------------------------------------------------------------------ // Has the crowdsale been finalised? // ------------------------------------------------------------------------ bool public finalised = false; // ------------------------------------------------------------------------ // Number of tokens per 1,000 ETH // This can be adjusted as the ETH/USD rate changes // // Indicative rate of ETH per token of 0.00290923 at 8 June 2017 // // This is the same as 1 / 0.00290923 = 343.733565238912015 OAX per ETH // // tokensPerEther = 343.733565238912015 // tokensPerKEther = 343,733.565238912015 // tokensPerKEther = 343,734 rounded to an uint, six significant figures // ------------------------------------------------------------------------ uint public tokensPerKEther = 343734; // ------------------------------------------------------------------------ // Locked Tokens - holds the 1y and 2y locked tokens information // ------------------------------------------------------------------------ LockedTokens public lockedTokens; // ------------------------------------------------------------------------ // Wallet receiving the raised funds // ------------------------------------------------------------------------ address public wallet; // ------------------------------------------------------------------------ // Crowdsale participant's accounts need to be KYC verified KYC before // the participant can move their tokens // ------------------------------------------------------------------------ mapping(address => bool) public kycRequired; // ------------------------------------------------------------------------ // Constructor // ------------------------------------------------------------------------ function OpenANXToken(address _wallet) ERC20Token(SYMBOL, NAME, DECIMALS, 0) { wallet = _wallet; lockedTokens = new LockedTokens(this); require(address(lockedTokens) != 0x0); } // ------------------------------------------------------------------------ // openANX can change the crowdsale wallet address // Can be set at any time before or during the crowdsale // Not relevant after the crowdsale is finalised as no more contributions // are accepted // ------------------------------------------------------------------------ function setWallet(address _wallet) onlyOwner { wallet = _wallet; WalletUpdated(wallet); } event WalletUpdated(address newWallet); // ------------------------------------------------------------------------ // openANX can set number of tokens per 1,000 ETH // Can only be set before the start of the crowdsale // ------------------------------------------------------------------------ function setTokensPerKEther(uint _tokensPerKEther) onlyOwner { require(now < START_DATE); require(_tokensPerKEther > 0); tokensPerKEther = _tokensPerKEther; TokensPerKEtherUpdated(tokensPerKEther); } event TokensPerKEtherUpdated(uint tokensPerKEther); // ------------------------------------------------------------------------ // Accept ethers to buy tokens during the crowdsale // ------------------------------------------------------------------------ function () payable { proxyPayment(msg.sender); } // ------------------------------------------------------------------------ // Accept ethers from one account for tokens to be created for another // account. Can be used by exchanges to purchase tokens on behalf of // it's user // ------------------------------------------------------------------------ function proxyPayment(address participant) payable { // No contributions after the crowdsale is finalised require(!finalised); // No contributions before the start of the crowdsale require(now >= START_DATE); // No contributions after the end of the crowdsale require(now <= END_DATE); // No contributions below the minimum (can be 0 ETH) require(msg.value >= CONTRIBUTIONS_MIN); // No contributions above a maximum (if maximum is set to non-0) require(CONTRIBUTIONS_MAX == 0 || msg.value < CONTRIBUTIONS_MAX); // Calculate number of tokens for contributed ETH // `18` is the ETH decimals // `- decimals` is the token decimals // `+ 3` for the tokens per 1,000 ETH factor uint tokens = msg.value * tokensPerKEther / 10**uint(18 - decimals + 3); // Check if the hard cap will be exceeded require(totalSupply + tokens <= TOKENS_HARD_CAP); // Add tokens purchased to account's balance and total supply balances[participant] = balances[participant].add(tokens); totalSupply = totalSupply.add(tokens); // Log the tokens purchased Transfer(0x0, participant, tokens); TokensBought(participant, msg.value, this.balance, tokens, totalSupply, tokensPerKEther); // KYC verification required before participant can transfer the tokens kycRequired[participant] = true; // Transfer the contributed ethers to the crowdsale wallet if (!wallet.send(msg.value)) throw; } event TokensBought(address indexed buyer, uint ethers, uint newEtherBalance, uint tokens, uint newTotalSupply, uint tokensPerKEther); // ------------------------------------------------------------------------ // openANX to finalise the crowdsale - to adding the locked tokens to // this contract and the total supply // ------------------------------------------------------------------------ function finalise() onlyOwner { // Can only finalise if raised > soft cap or after the end date require(totalSupply >= TOKENS_SOFT_CAP || now > END_DATE); // Can only finalise once require(!finalised); // Calculate and add remaining tokens to locked balances lockedTokens.addRemainingTokens(); // Allocate locked and premined tokens balances[address(lockedTokens)] = balances[address(lockedTokens)]. add(lockedTokens.totalSupplyLocked()); totalSupply = totalSupply.add(lockedTokens.totalSupplyLocked()); // Can only finalise once finalised = true; } // ------------------------------------------------------------------------ // openANX to add precommitment funding token balance before the crowdsale // commences // ------------------------------------------------------------------------ function addPrecommitment(address participant, uint balance) onlyOwner { require(now < START_DATE); require(balance > 0); balances[participant] = balances[participant].add(balance); totalSupply = totalSupply.add(balance); Transfer(0x0, participant, balance); } event PrecommitmentAdded(address indexed participant, uint balance); // ------------------------------------------------------------------------ // Transfer the balance from owner's account to another account, with KYC // verification check for the crowdsale participant's first transfer // ------------------------------------------------------------------------ function transfer(address _to, uint _amount) returns (bool success) { // Cannot transfer before crowdsale ends require(finalised); // Cannot transfer if KYC verification is required require(!kycRequired[msg.sender]); // Standard transfer return super.transfer(_to, _amount); } // ------------------------------------------------------------------------ // Spender of tokens transfer an amount of tokens from the token owner's // balance to another account, with KYC verification check for the // crowdsale participant's first transfer // ------------------------------------------------------------------------ function transferFrom(address _from, address _to, uint _amount) returns (bool success) { // Cannot transfer before crowdsale ends require(finalised); // Cannot transfer if KYC verification is required require(!kycRequired[_from]); // Standard transferFrom return super.transferFrom(_from, _to, _amount); } // ------------------------------------------------------------------------ // openANX to KYC verify the participant's account // ------------------------------------------------------------------------ function kycVerify(address participant) onlyOwner { kycRequired[participant] = false; KycVerified(participant); } event KycVerified(address indexed participant); // ------------------------------------------------------------------------ // Any account can burn _from's tokens as long as the _from account has // approved the _amount to be burnt using // approve(0x0, _amount) // ------------------------------------------------------------------------ function burnFrom( address _from, uint _amount ) returns (bool success) { if (balances[_from] >= _amount // From a/c has balance && allowed[_from][0x0] >= _amount // Transfer approved && _amount > 0 // Non-zero transfer && balances[0x0] + _amount > balances[0x0] // Overflow check ) { balances[_from] = balances[_from].sub(_amount); allowed[_from][0x0] = allowed[_from][0x0].sub(_amount); balances[0x0] = balances[0x0].add(_amount); totalSupply = totalSupply.sub(_amount); Transfer(_from, 0x0, _amount); return true; } else { return false; } } // ------------------------------------------------------------------------ // 1y locked balances for an account // ------------------------------------------------------------------------ function balanceOfLocked1Y(address account) constant returns (uint balance) { return lockedTokens.balanceOfLocked1Y(account); } // ------------------------------------------------------------------------ // 2y locked balances for an account // ------------------------------------------------------------------------ function balanceOfLocked2Y(address account) constant returns (uint balance) { return lockedTokens.balanceOfLocked2Y(account); } // ------------------------------------------------------------------------ // 1y and 2y locked balances for an account // ------------------------------------------------------------------------ function balanceOfLocked(address account) constant returns (uint balance) { return lockedTokens.balanceOfLocked(account); } // ------------------------------------------------------------------------ // 1y locked total supply // ------------------------------------------------------------------------ function totalSupplyLocked1Y() constant returns (uint) { if (finalised) { return lockedTokens.totalSupplyLocked1Y(); } else { return 0; } } // ------------------------------------------------------------------------ // 2y locked total supply // ------------------------------------------------------------------------ function totalSupplyLocked2Y() constant returns (uint) { if (finalised) { return lockedTokens.totalSupplyLocked2Y(); } else { return 0; } } // ------------------------------------------------------------------------ // 1y and 2y locked total supply // ------------------------------------------------------------------------ function totalSupplyLocked() constant returns (uint) { if (finalised) { return lockedTokens.totalSupplyLocked(); } else { return 0; } } // ------------------------------------------------------------------------ // Unlocked total supply // ------------------------------------------------------------------------ function totalSupplyUnlocked() constant returns (uint) { if (finalised && totalSupply >= lockedTokens.totalSupplyLocked()) { return totalSupply.sub(lockedTokens.totalSupplyLocked()); } else { return 0; } } // ------------------------------------------------------------------------ // openANX can transfer out any accidentally sent ERC20 tokens // ------------------------------------------------------------------------ function transferAnyERC20Token(address tokenAddress, uint amount) onlyOwner returns (bool success) { return ERC20Interface(tokenAddress).transfer(owner, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"TOKENS_TOTAL","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokensPerKEther","type":"uint256"}],"name":"setTokensPerKEther","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"lockedTokens","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"participant","type":"address"}],"name":"kycVerify","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"balanceOfLocked1Y","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"finalised","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"CONTRIBUTIONS_MIN","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"DECIMALS","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"START_DATE","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"participant","type":"address"},{"name":"balance","type":"uint256"}],"name":"addPrecommitment","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"TOKENS_SOFT_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"END_DATE","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupplyLocked","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupplyLocked2Y","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_amount","type":"uint256"}],"name":"burnFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"TOKENS_HARD_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"DECIMALSFACTOR","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"CONTRIBUTIONS_MAX","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"LOCKED_2Y_DATE","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"NAME","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"finalise","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokensPerKEther","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"kycRequired","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"balanceOfLocked2Y","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupplyLocked1Y","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupplyUnlocked","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"amount","type":"uint256"}],"name":"transferAnyERC20Token","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_wallet","type":"address"}],"name":"setWallet","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"balanceOfLocked","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"LOCKED_1Y_DATE","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"participant","type":"address"}],"name":"proxyPayment","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"SYMBOL","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"inputs":[{"name":"_wallet","type":"address"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newWallet","type":"address"}],"name":"WalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokensPerKEther","type":"uint256"}],"name":"TokensPerKEtherUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"buyer","type":"address"},{"indexed":false,"name":"ethers","type":"uint256"},{"indexed":false,"name":"newEtherBalance","type":"uint256"},{"indexed":false,"name":"tokens","type":"uint256"},{"indexed":false,"name":"newTotalSupply","type":"uint256"},{"indexed":false,"name":"tokensPerKEther","type":"uint256"}],"name":"TokensBought","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"PrecommitmentAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"}],"name":"KycVerified","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"}]
Contract Creation Code
606060405260006008819055600955600a805460ff1916905562053eb6600b5534156200002857fe5b6040516020806200386483398101604052515b604060405190810160405280600381526020017f4f41580000000000000000000000000000000000000000000000000000000000815250604060405190810160405280600d81526020017f6f70656e414e5820546f6b656e00000000000000000000000000000000000000815250601260005b5b60018054600160a060020a03191633600160a060020a03161790555b8351620000e0906003906020870190620001aa565b508251620000f6906004906020860190620001aa565b506005805460ff191660ff84161790556000818155600154600160a060020a031681526006602052604090208190555b5050600d8054600160a060020a031916600160a060020a038516179055503090506200015162000230565b600160a060020a03909116815260405190819003602001906000f08015156200017657fe5b600c8054600160a060020a031916600160a060020a039283161790819055161515620001a25760006000fd5b5b5062000265565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001ed57805160ff19168380011785556200021d565b828001600101855582156200021d579182015b828111156200021d57825182559160200191906001019062000200565b5b506200022c92915062000241565b5090565b604051611661806200220383390190565b6200026291905b808211156200022c576000815560010162000248565b5090565b90565b611f8e80620002756000396000f3006060604052361561022d5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461023f578063095ea7b3146102cf5780630b743021146103025780630e9d02cc146103245780630eb347401461033957806318160ddd146103655780631881b0f0146103875780631ab3c515146103a5578063214bb60f146103d357806323b872dd146103f75780632da13d5e146104305780632e0f262514610452578063313ce56714610478578063372c65331461049e5780633818d907146104c05780633a9f967e146104e1578063521eb27314610503578063545599ff1461052f5780635834192214610551578063622c77fe1461057357806370a082311461059557806379ba5097146105c357806379cc6790146105d5578063831a1754146106085780638bc04eb71461062a5780638da5cb5b1461064c57806393fea1841461067857806395d89b411461069a578063978c5b151461072a578063a3f4df7e1461074c578063a4399263146107dc578063a5bc770c146107ee578063a9059cbb14610810578063b7121da414610843578063bc5dc16814610873578063c0c3da9c146108a1578063c0f5dc97146108c3578063d4ee1d90146108e5578063dc39d06d14610911578063dd62ed3e14610944578063deaa59df14610978578063e960bb4814610996578063f2fde38b146109c4578063f4509fc2146109e2578063f48c305414610a04578063f76f8d7814610a1a575b61023d5b61023a33610aaa565b5b565b005b341561024757fe5b61024f610c96565b604080516020808252835181830152835191928392908301918501908083838215610295575b80518252602083111561029557601f199092019160209182019101610275565b505050905090810190601f1680156102c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102d757fe5b6102ee600160a060020a0360043516602435610d24565b604080519115158252519081900360200190f35b341561030a57fe5b610312610d8f565b60408051918252519081900360200190f35b341561032c57fe5b61023d600435610d9e565b005b341561034157fe5b610349610e16565b60408051600160a060020a039092168252519081900360200190f35b341561036d57fe5b610312610e25565b60408051918252519081900360200190f35b341561038f57fe5b61023d600160a060020a0360043516610e2b565b005b34156103ad57fe5b610312600160a060020a0360043516610e92565b60408051918252519081900360200190f35b34156103db57fe5b6102ee610f1d565b604080519115158252519081900360200190f35b34156103ff57fe5b6102ee600160a060020a0360043581169060243516604435610f26565b604080519115158252519081900360200190f35b341561043857fe5b610312610f77565b60408051918252519081900360200190f35b341561045a57fe5b610462610f7d565b6040805160ff9092168252519081900360200190f35b341561048057fe5b610462610f82565b6040805160ff9092168252519081900360200190f35b34156104a657fe5b610312610f8b565b60408051918252519081900360200190f35b34156104c857fe5b61023d600160a060020a0360043516602435610f93565b005b34156104e957fe5b61031261105d565b60408051918252519081900360200190f35b341561050b57fe5b61034961106c565b60408051600160a060020a039092168252519081900360200190f35b341561053757fe5b61031261107b565b60408051918252519081900360200190f35b341561055957fe5b610312611083565b60408051918252519081900360200190f35b341561057b57fe5b610312611104565b60408051918252519081900360200190f35b341561059d57fe5b610312600160a060020a036004351661119f565b60408051918252519081900360200190f35b34156105cb57fe5b61023d6111be565b005b34156105dd57fe5b6102ee600160a060020a036004351660243561124b565b604080519115158252519081900360200190f35b341561061057fe5b61031261142c565b60408051918252519081900360200190f35b341561063257fe5b61031261143b565b60408051918252519081900360200190f35b341561065457fe5b610349611447565b60408051600160a060020a039092168252519081900360200190f35b341561068057fe5b610312611456565b60408051918252519081900360200190f35b34156106a257fe5b61024f61145c565b604080516020808252835181830152835191928392908301918501908083838215610295575b80518252602083111561029557601f199092019160209182019101610275565b505050905090810190601f1680156102c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561073257fe5b6103126114ea565b60408051918252519081900360200190f35b341561075457fe5b61024f6114f2565b604080516020808252835181830152835191928392908301918501908083838215610295575b80518252602083111561029557601f199092019160209182019101610275565b505050905090810190601f1680156102c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107e457fe5b61023d611529565b005b34156107f657fe5b610312611744565b60408051918252519081900360200190f35b341561081857fe5b6102ee600160a060020a036004351660243561174a565b604080519115158252519081900360200190f35b341561084b57fe5b6102ee600160a060020a0360043516611799565b604080519115158252519081900360200190f35b341561087b57fe5b610312600160a060020a03600435166117ae565b60408051918252519081900360200190f35b34156108a957fe5b610312611839565b60408051918252519081900360200190f35b34156108cb57fe5b6103126118d4565b60408051918252519081900360200190f35b34156108ed57fe5b6103496119db565b60408051600160a060020a039092168252519081900360200190f35b341561091957fe5b6102ee600160a060020a03600435166024356119ea565b604080519115158252519081900360200190f35b341561094c57fe5b610312600160a060020a0360043581169060243516611a9b565b60408051918252519081900360200190f35b341561098057fe5b61023d600160a060020a0360043516611ac8565b005b341561099e57fe5b610312600160a060020a0360043516611b4d565b60408051918252519081900360200190f35b34156109cc57fe5b61023d600160a060020a0360043516611bd8565b005b34156109ea57fe5b610312611c21565b60408051918252519081900360200190f35b61023d600160a060020a0360043516610aaa565b005b3415610a2257fe5b61024f611c29565b604080516020808252835181830152835191928392908301918501908083838215610295575b80518252602083111561029557601f199092019160209182019101610275565b505050905090810190601f1680156102c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600a5460009060ff1615610abe5760006000fd5b63594bbf50421015610ad05760006000fd5b6359734c50421115610ae25760006000fd5b600854341015610af25760006000fd5b6009541580610b02575060095434105b1515610b0e5760006000fd5b600554600b54600360ff92831660120301909116600a0a903402811515610b3157fe5b60005491900491506a18d0bf423c03d8de0000009082011115610b545760006000fd5b600160a060020a038216600090815260066020526040902054610b7d908263ffffffff611c6016565b600160a060020a03831660009081526006602052604081209190915554610baa908263ffffffff611c6016565b6000908155604080518381529051600160a060020a0385169291600080516020611f43833981519152919081900360200190a3600054600b546040805134815230600160a060020a039081163160208301528183018690526060820194909452608081019290925251918416917f6a7381bdc8f4e7ed3c0f0c299382777bde88a65f0c27f670235401d1544546309181900360a00190a2600160a060020a038083166000908152600e6020526040808220805460ff19166001179055600d5490519216913480156108fc0292909190818181858888f193505050501515610c915760006000fd5b5b5050565b6004805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d1c5780601f10610cf157610100808354040283529160200191610d1c565b820191906000526020600020905b815481529060010190602001808311610cff57829003601f168201915b505050505081565b600160a060020a03338116600081815260076020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b6a52b7d2dcc80cd2e400000081565b60015433600160a060020a03908116911614610dba5760006000fd5b63594bbf504210610dcb5760006000fd5b60008111610dd95760006000fd5b600b8190556040805182815290517fee386bebbe46d39825c2b93313aa1ab1dc57d4774cac81c6debb8c611c9227ab9181900360200190a15b5b50565b600c54600160a060020a031681565b60005481565b60015433600160a060020a03908116911614610e475760006000fd5b600160a060020a0381166000818152600e6020526040808220805460ff19169055517fb3e6054663369578ee4831fc6c8ee9486db04e6f78b939250094785f6b6a430b9190a25b5b50565b600c54604080516000602091820181905282517f1ab3c515000000000000000000000000000000000000000000000000000000008152600160a060020a038681166004830152935191949390931692631ab3c51592602480830193919282900301818787803b1515610f0057fe5b6102c65a03f11515610f0e57fe5b5050604051519150505b919050565b600a5460ff1681565b600a5460009060ff161515610f3b5760006000fd5b600160a060020a0384166000908152600e602052604090205460ff1615610f625760006000fd5b610f6d848484611c88565b90505b9392505050565b60085481565b601281565b60055460ff1681565b63594bbf5081565b60015433600160a060020a03908116911614610faf5760006000fd5b63594bbf504210610fc05760006000fd5b60008111610fce5760006000fd5b600160a060020a038216600090815260066020526040902054610ff7908263ffffffff611c6016565b600160a060020a03831660009081526006602052604081209190915554611024908263ffffffff611c6016565b6000908155604080518381529051600160a060020a0385169291600080516020611f43833981519152919081900360200190a35b5b5050565b6a0ac0db698068112d00000081565b600d54600160a060020a031681565b6359734c5081565b600a5460009060ff16156110fc57600c546040805160006020918201819052825160e160020a632c1a0c910281529251600160a060020a039094169363583419229360048082019493918390030190829087803b15156110df57fe5b6102c65a03f115156110ed57fe5b50506040515191506111009050565b5060005b5b90565b600a5460009060ff16156110fc57600c54604080516000602091820181905282517f622c77fe0000000000000000000000000000000000000000000000000000000081529251600160a060020a039094169363622c77fe9360048082019493918390030190829087803b15156110df57fe5b6102c65a03f115156110ed57fe5b50506040515191506111009050565b506000611100565b5b90565b600160a060020a0381166000908152600660205260409020545b919050565b60025433600160a060020a039081169116146111da5760006000fd5b600254600154604051600160a060020a0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36002546001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b565b600160a060020a0382166000908152600660205260408120548290108015906112985750600160a060020a0383166000908152600760209081526040808320838052909152902054829010155b80156112a45750600082115b80156112db57506000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f854828101115b1561141d57600160a060020a038316600090815260066020526040902054611309908363ffffffff611e1d16565b600160a060020a0384166000908152600660209081526040808320939093556007815282822082805290522054611346908363ffffffff611e1d16565b600160a060020a0384166000908152600760209081526040808320838052825290912091909155600690527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8546113a3908363ffffffff611c6016565b600080805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f891909155546113e3908363ffffffff611e1d16565b6000908155604080518481529051600160a060020a03861691600080516020611f43833981519152919081900360200190a3506001610d89565b506000610d89565b5b92915050565b6a18d0bf423c03d8de00000081565b670de0b6b3a764000081565b600154600160a060020a031681565b60095481565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d1c5780601f10610cf157610100808354040283529160200191610d1c565b820191906000526020600020905b815481529060010190602001808311610cff57829003601f168201915b505050505081565b635d0e265081565b60408051808201909152600d81527f6f70656e414e5820546f6b656e00000000000000000000000000000000000000602082015281565b60015433600160a060020a039081169116146115455760006000fd5b6000546a0ac0db698068112d0000009010158061156557506359734c5042115b15156115715760006000fd5b600a5460ff16156115825760006000fd5b600c54604080517fe9d7f3090000000000000000000000000000000000000000000000000000000081529051600160a060020a039092169163e9d7f3099160048082019260009290919082900301818387803b15156115dd57fe5b6102c65a03f115156115eb57fe5b5050506116a2600c60009054906101000a9004600160a060020a0316600160a060020a031663583419226000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401809050602060405180830381600087803b151561166557fe5b6102c65a03f1151561167357fe5b50506040805151600c54600160a060020a0316600090815260066020529190912054915063ffffffff611c6016565b600c8054600160a060020a03908116600090815260066020908152604080832095909555925484518401829052845160e160020a632c1a0c91028152945161173095919093169363583419229360048084019492939192918390030190829087803b151561170c57fe5b6102c65a03f1151561171a57fe5b505060405151600054915063ffffffff611c6016565b600055600a805460ff191660011790555b5b565b600b5481565b600a5460009060ff16151561175f5760006000fd5b600160a060020a0333166000908152600e602052604090205460ff16156117865760006000fd5b6117908383611e34565b90505b92915050565b600e6020526000908152604090205460ff1681565b600c54604080516000602091820181905282517fbc5dc168000000000000000000000000000000000000000000000000000000008152600160a060020a03868116600483015293519194939093169263bc5dc16892602480830193919282900301818787803b1515610f0057fe5b6102c65a03f11515610f0e57fe5b5050604051519150505b919050565b600a5460009060ff16156110fc57600c54604080516000602091820181905282517fc0c3da9c0000000000000000000000000000000000000000000000000000000081529251600160a060020a039094169363c0c3da9c9360048082019493918390030190829087803b15156110df57fe5b6102c65a03f115156110ed57fe5b50506040515191506111009050565b506000611100565b5b90565b600a5460009060ff16801561194e5750600c546040805160006020918201819052825160e160020a632c1a0c910281529251600160a060020a039094169363583419229360048082019493918390030190829087803b151561193257fe5b6102c65a03f1151561194057fe5b505060405151600054101590505b156110fc57600c546040805160006020918201819052825160e160020a632c1a0c9102815292516119c894600160a060020a0316936358341922936004808301949193928390030190829087803b15156119a457fe5b6102c65a03f115156119b257fe5b505060405151600054915063ffffffff611e1d16565b9050611100565b506000611100565b5b90565b600254600160a060020a031681565b60015460009033600160a060020a03908116911614611a095760006000fd5b600154604080516000602091820181905282517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0394851660048201526024810187905292519387169363a9059cbb9360448082019493918390030190829087803b1515611a7c57fe5b6102c65a03f11515611a8a57fe5b5050604051519150505b5b92915050565b600160a060020a038083166000908152600760209081526040808320938516835292905220545b92915050565b60015433600160a060020a03908116911614611ae45760006000fd5b600d805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091179182905560408051929091168252517f4edbfac5b40fe46ac1af1fd222b224b38cfeeb9e21bd4fc6344526c245f7549b916020908290030190a15b5b50565b600c54604080516000602091820181905282517fe960bb48000000000000000000000000000000000000000000000000000000008152600160a060020a03868116600483015293519194939093169263e960bb4892602480830193919282900301818787803b1515610f0057fe5b6102c65a03f11515610f0e57fe5b5050604051519150505b919050565b60015433600160a060020a03908116911614611bf45760006000fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b635b2cf2d081565b60408051808201909152600381527f4f41580000000000000000000000000000000000000000000000000000000000602082015281565b6000828201838110801590611c755750828110155b1515611c7d57fe5b8091505b5092915050565b600160a060020a038316600090815260066020526040812054829010801590611cd85750600160a060020a0380851660009081526007602090815260408083203390941683529290522054829010155b8015611ce45750600082115b8015611d095750600160a060020a038316600090815260066020526040902054828101115b15611e0d57600160a060020a038416600090815260066020526040902054611d37908363ffffffff611e1d16565b600160a060020a0380861660009081526006602090815260408083209490945560078152838220339093168252919091522054611d7a908363ffffffff611e1d16565b600160a060020a0380861660009081526007602090815260408083203385168452825280832094909455918616815260069091522054611dc0908363ffffffff611c6016565b600160a060020a038085166000818152600660209081526040918290209490945580518681529051919392881692600080516020611f4383398151915292918290030190a3506001610f70565b506000610f70565b5b9392505050565b600082821115611e2957fe5b508082035b92915050565b600160a060020a033316600090815260066020526040812054829010801590611e5d5750600082115b8015611e825750600160a060020a038316600090815260066020526040902054828101115b1561141d57600160a060020a033316600090815260066020526040902054611eb0908363ffffffff611e1d16565b600160a060020a033381166000908152600660205260408082209390935590851681522054611ee5908363ffffffff611c6016565b600160a060020a03808516600081815260066020908152604091829020949094558051868152905191933390931692600080516020611f4383398151915292918290030190a3506001610d89565b506000610d89565b5b929150505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a7230582002d82e12d01419074eb87e3b53edd24e33c5ad021933496454ed30b3c41a4d1600296060604052600080805560015560028054600160a060020a03191673813703eb676f3b6c76da75cba0cbc49ddbca7b3717905534156200003b57fe5b6040516020806200166183398101604052515b60078054600160a060020a031916600160a060020a038316179055620000a1734bee088efdbcc610eeea101ded7204150af1c8b969d3c21bcecceda10000006401000000006200092a810262000b351704565b620000d973839551201f866907eb5017be79ceb48ada58650c69c3e059b8e3f56820000064010000000062000b356200092a82021704565b6200011173a92d4cd3412862386c234be572fe4a8fa4bb09c669c3e059b8e3f56820000064010000000062000b356200092a82021704565b6200014973ecf2b5fce33007e5669d63de39a4c663e56958dd69c3e059b8e3f56820000064010000000062000b356200092a82021704565b6200018173d6b7695bc74e2c950eb953316359eab283c5bda869c3e059b8e3f56820000064010000000062000b356200092a82021704565b620001b973be3463eae26398d55a7118683079264bcf3ab24b691fc3842bd1f071c0000064010000000062000b356200092a82021704565b620001f173f47428fb9a61c9f3312cb035aee049fba76ba62a691fc3842bd1f071c0000064010000000062000b356200092a82021704565b6200022973fccc77165d822ef9004714d829bdc267c743658a690a968163f0a57b40000064010000000062000b356200092a82021704565b6200026173af8df2acaec3d5d92de42a6c19d7706a4f3e8d8b690a968163f0a57b40000064010000000062000b356200092a82021704565b620002997322a6f9693856374bf2922cd837d07f6670e7fa4d6934f086f3b33b6840000064010000000062000b356200092a82021704565b620002d1733f720ca8fff598f00a51de32a8cb58ca73f22ade690a968163f0a57b40000064010000000062000b356200092a82021704565b6200030973bd0d1954b301e414f0b5d0827a69ec5dd559e50b690a968163f0a57b40000064010000000062000b356200092a82021704565b62000341732ad6b011fecde830c9cc4dc0d0b77f055d6b5990690a968163f0a57b40000064010000000062000b356200092a82021704565b6200037a730c5cd0e971ca18a0f0e0d581f4b93fad31d608b06a01a788d33a4381d634000064010000000062000b356200092a82021704565b620003b273faadc4d80eaf430ab604337cb67d77ec763d3e23692a677740c0a015e0000064010000000062000b356200092a82021704565b620003eb73daef46f89c264182cd87ce93b620b63c7afb14f76a01566568a986aee160000064010000000062000b356200092a82021704565b620004237319cc59c30ce54706633dc29edebae1eff1757b25692fa430b374df96d0000064010000000062000b356200092a82021704565b6200045b73a130fe5d399104ca5af168fbbbbe19f95d739741699df44bb9dd0f2038000064010000000062000b356200092a82021704565b6200049373c0cd1bf6f2939095a56b0dfa085ba2886b84e7d1699df44bb9dd0f2038000064010000000062000b356200092a82021704565b620004cb73f2c26e79ed264b0e3e5a5dfb1dd91ea61f512c6e699df44bb9dd0f2038000064010000000062000b356200092a82021704565b62000503735f876a8a5f1b66fbf3d0d119075b62af4386e319699df44bb9dd0f2038000064010000000062000b356200092a82021704565b6200053b73b8e046570800dd76720af6d42d3ccae451f54f15699df4677b4a766f00000064010000000062000b356200092a82021704565b6200057373a524fa65aac4647fa7ba2c20d22f64450c351bbd699741858ac693ebf8000064010000000062000b356200092a82021704565b620005ab7327209b276c15a936bce08d7d70f0c97aeb3ce8c36902f0ec9848ec9864000064010000000062000b356200092a82021704565b6003546a0b949d854f34fece00000014620005c257fe5b620005fa734bee088efdbcc610eeea101ded7204150af1c8b969d3c21bcecceda100000064010000000062000b926200099b82021704565b6200063273839551201f866907eb5017be79ceb48ada58650c69c3e059b8e3f56820000064010000000062000b926200099b82021704565b6200066a73a92d4cd3412862386c234be572fe4a8fa4bb09c669c3e059b8e3f56820000064010000000062000b926200099b82021704565b620006a273ecf2b5fce33007e5669d63de39a4c663e56958dd69c3e059b8e3f56820000064010000000062000b926200099b82021704565b620006da73d6b7695bc74e2c950eb953316359eab283c5bda869c3e059b8e3f56820000064010000000062000b926200099b82021704565b6200071273be3463eae26398d55a7118683079264bcf3ab24b691fc3842bd1f071c0000064010000000062000b926200099b82021704565b6200074a73f47428fb9a61c9f3312cb035aee049fba76ba62a691fc3842bd1f071c0000064010000000062000b926200099b82021704565b6200078273fccc77165d822ef9004714d829bdc267c743658a690a968163f0a57b40000064010000000062000b926200099b82021704565b620007ba73daef46f89c264182cd87ce93b620b63c7afb14f76969e10de76676d080000064010000000062000b926200099b82021704565b620007f273af8df2acaec3d5d92de42a6c19d7706a4f3e8d8b690a968163f0a57b40000064010000000062000b926200099b82021704565b6200082a7322a6f9693856374bf2922cd837d07f6670e7fa4d6934f086f3b33b6840000064010000000062000b926200099b82021704565b62000862733f720ca8fff598f00a51de32a8cb58ca73f22ade690a968163f0a57b40000064010000000062000b926200099b82021704565b6200089a73bd0d1954b301e414f0b5d0827a69ec5dd559e50b690a968163f0a57b40000064010000000062000b926200099b82021704565b620008d2732ad6b011fecde830c9cc4dc0d0b77f055d6b5990690a968163f0a57b40000064010000000062000b926200099b82021704565b6200090b73990a2d172398007fcbd5078d84696bdd8ccdf7b26a108b2a2c2802909400000064010000000062000b926200099b82021704565b6004546a1581b6d300d0225a000000146200092257fe5b5b5062000a36565b600160a060020a0382166000908152600560205260409020546200095d908264010000000062000b0d62000a0c82021704565b600160a060020a03831660009081526005602052604090205560035462000993908264010000000062000b0d62000a0c82021704565b6003555b5050565b600160a060020a038216600090815260066020526040902054620009ce908264010000000062000b0d62000a0c82021704565b600160a060020a03831660009081526006602052604090205560045462000a04908264010000000062000b0d62000a0c82021704565b6004555b5050565b600082820183811080159062000a225750828110155b151562000a2b57fe5b8091505b5092915050565b610c1b8062000a466000396000f300606060405236156101675763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630b74302181146101695780631a6f56a01461018b5780631ab3c515146101b95780632da13d5e146101e75780632e0f262514610209578063372c65331461022f57806338c80857146102515780633a9f967e14610263578063400ee78314610285578063545599ff146102a757806355a373d6146102c957806358341922146102f5578063622c77fe1461031757806376e403ec146103395780637f592be414610367578063831a1754146103935780638bc04eb7146103b557806393fea184146103d7578063978c5b15146103f9578063a3f4df7e1461041b578063bc5dc168146104ab578063c0c3da9c146104d9578063e5494be1146104fb578063e960bb481461050d578063e9d7f3091461053b578063f4509fc21461054d578063f76f8d781461056f578063ffb00df1146105ff575bfe5b341561017157fe5b610179610621565b60408051918252519081900360200190f35b341561019357fe5b610179600160a060020a0360043516610630565b60408051918252519081900360200190f35b34156101c157fe5b610179600160a060020a0360043516610642565b60408051918252519081900360200190f35b34156101ef57fe5b610179610661565b60408051918252519081900360200190f35b341561021157fe5b610219610667565b6040805160ff9092168252519081900360200190f35b341561023757fe5b61017961066c565b60408051918252519081900360200190f35b341561025957fe5b610261610674565b005b341561026b57fe5b610179610779565b60408051918252519081900360200190f35b341561028d57fe5b610179610788565b60408051918252519081900360200190f35b34156102af57fe5b610179610797565b60408051918252519081900360200190f35b34156102d157fe5b6102d961079f565b60408051600160a060020a039092168252519081900360200190f35b34156102fd57fe5b6101796107ae565b60408051918252519081900360200190f35b341561031f57fe5b6101796107b9565b60408051918252519081900360200190f35b341561034157fe5b610179600160a060020a03600435166107bf565b60408051918252519081900360200190f35b341561036f57fe5b6102d96107d1565b60408051600160a060020a039092168252519081900360200190f35b341561039b57fe5b6101796107e0565b60408051918252519081900360200190f35b34156103bd57fe5b6101796107ef565b60408051918252519081900360200190f35b34156103df57fe5b6101796107fb565b60408051918252519081900360200190f35b341561040157fe5b610179610801565b60408051918252519081900360200190f35b341561042357fe5b61042b610809565b604080516020808252835181830152835191928392908301918501908083838215610471575b80518252602083111561047157601f199092019160209182019101610451565b505050905090810190601f16801561049d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156104b357fe5b610179600160a060020a0360043516610840565b60408051918252519081900360200190f35b34156104e157fe5b61017961085f565b60408051918252519081900360200190f35b341561050357fe5b610261610865565b005b341561051557fe5b610179600160a060020a036004351661096b565b60408051918252519081900360200190f35b341561054357fe5b6102616109a6565b005b341561055557fe5b610179610aa8565b60408051918252519081900360200190f35b341561057757fe5b61042b610ab0565b604080516020808252835181830152835191928392908301918501908083838215610471575b80518252602083111561047157601f199092019160209182019101610451565b505050905090810190601f16801561049d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561060757fe5b610179610ae7565b60408051918252519081900360200190f35b6a52b7d2dcc80cd2e400000081565b60066020526000908152604090205481565b600160a060020a0381166000908152600560205260409020545b919050565b60005481565b601281565b63594bbf5081565b6000635b2cf2d04210156106885760006000fd5b50600160a060020a0333166000908152600560205260408120549081116106af5760006000fd5b600160a060020a0333166000908152600560205260408120556003546106db908263ffffffff610af616565b600355600754604080516000602091820181905282517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a033381166004830152602482018790529351939094169363a9059cbb936044808301949391928390030190829087803b151561075357fe5b6102c65a03f1151561076157fe5b505060405151151590506107755760006000fd5b5b50565b6a0ac0db698068112d00000081565b6a0b949d854f34fece00000081565b6359734c5081565b600754600160a060020a031681565b600454600354015b90565b60045481565b60056020526000908152604090205481565b600254600160a060020a031681565b6a18d0bf423c03d8de00000081565b670de0b6b3a764000081565b60015481565b635d0e265081565b60408051808201909152600d81527f6f70656e414e5820546f6b656e00000000000000000000000000000000000000602082015281565b600160a060020a0381166000908152600660205260409020545b919050565b60035481565b6000635d0e26504210156108795760006000fd5b50600160a060020a0333166000908152600660205260408120549081116108a05760006000fd5b600160a060020a0333166000908152600660205260408120556004546108cc908263ffffffff610af616565b6004908155600754604080516000602091820181905282517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0333811696820196909652602481018790529251949093169363a9059cbb936044808501948390030190829087803b151561075357fe5b6102c65a03f1151561076157fe5b505060405151151590506107755760006000fd5b5b50565b600160a060020a038116600090815260066020908152604080832054600590925282205461099e9163ffffffff610b0d16565b90505b919050565b60075460009033600160a060020a039081169116146109c55760006000fd5b50600754604080516000602091820181905282517f18160ddd00000000000000000000000000000000000000000000000000000000815292516a52b7d2dcc80cd2e400000094610a5d94600160a060020a03909116936318160ddd9360048084019492938390030190829087803b1515610a3b57fe5b6102c65a03f11515610a4957fe5b50506040515183915063ffffffff610af616565b9050610a7460035482610af690919063ffffffff16565b9050610a8b60045482610af690919063ffffffff16565b60025490915061077590600160a060020a031682610b35565b5b50565b635b2cf2d081565b60408051808201909152600381527f4f41580000000000000000000000000000000000000000000000000000000000602082015281565b6a1581b6d300d0225a00000081565b600082821115610b0257fe5b508082035b92915050565b6000828201838110801590610b225750828110155b1515610b2a57fe5b8091505b5092915050565b600160a060020a038216600090815260056020526040902054610b5e908263ffffffff610b0d16565b600160a060020a038316600090815260056020526040902055600354610b8a908263ffffffff610b0d16565b6003555b5050565b600160a060020a038216600090815260066020526040902054610bbb908263ffffffff610b0d16565b600160a060020a038316600090815260066020526040902055600454610be7908263ffffffff610b0d16565b6004555b50505600a165627a7a723058201ebf78c948e9b064875413e10729508a8cb3f4fc7b2decd423f81a4a0a420b8000290000000000000000000000002b3b67c6dffc2bcdda2315491eac9bbe868fbcdd
Deployed Bytecode
0x6060604052361561022d5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461023f578063095ea7b3146102cf5780630b743021146103025780630e9d02cc146103245780630eb347401461033957806318160ddd146103655780631881b0f0146103875780631ab3c515146103a5578063214bb60f146103d357806323b872dd146103f75780632da13d5e146104305780632e0f262514610452578063313ce56714610478578063372c65331461049e5780633818d907146104c05780633a9f967e146104e1578063521eb27314610503578063545599ff1461052f5780635834192214610551578063622c77fe1461057357806370a082311461059557806379ba5097146105c357806379cc6790146105d5578063831a1754146106085780638bc04eb71461062a5780638da5cb5b1461064c57806393fea1841461067857806395d89b411461069a578063978c5b151461072a578063a3f4df7e1461074c578063a4399263146107dc578063a5bc770c146107ee578063a9059cbb14610810578063b7121da414610843578063bc5dc16814610873578063c0c3da9c146108a1578063c0f5dc97146108c3578063d4ee1d90146108e5578063dc39d06d14610911578063dd62ed3e14610944578063deaa59df14610978578063e960bb4814610996578063f2fde38b146109c4578063f4509fc2146109e2578063f48c305414610a04578063f76f8d7814610a1a575b61023d5b61023a33610aaa565b5b565b005b341561024757fe5b61024f610c96565b604080516020808252835181830152835191928392908301918501908083838215610295575b80518252602083111561029557601f199092019160209182019101610275565b505050905090810190601f1680156102c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102d757fe5b6102ee600160a060020a0360043516602435610d24565b604080519115158252519081900360200190f35b341561030a57fe5b610312610d8f565b60408051918252519081900360200190f35b341561032c57fe5b61023d600435610d9e565b005b341561034157fe5b610349610e16565b60408051600160a060020a039092168252519081900360200190f35b341561036d57fe5b610312610e25565b60408051918252519081900360200190f35b341561038f57fe5b61023d600160a060020a0360043516610e2b565b005b34156103ad57fe5b610312600160a060020a0360043516610e92565b60408051918252519081900360200190f35b34156103db57fe5b6102ee610f1d565b604080519115158252519081900360200190f35b34156103ff57fe5b6102ee600160a060020a0360043581169060243516604435610f26565b604080519115158252519081900360200190f35b341561043857fe5b610312610f77565b60408051918252519081900360200190f35b341561045a57fe5b610462610f7d565b6040805160ff9092168252519081900360200190f35b341561048057fe5b610462610f82565b6040805160ff9092168252519081900360200190f35b34156104a657fe5b610312610f8b565b60408051918252519081900360200190f35b34156104c857fe5b61023d600160a060020a0360043516602435610f93565b005b34156104e957fe5b61031261105d565b60408051918252519081900360200190f35b341561050b57fe5b61034961106c565b60408051600160a060020a039092168252519081900360200190f35b341561053757fe5b61031261107b565b60408051918252519081900360200190f35b341561055957fe5b610312611083565b60408051918252519081900360200190f35b341561057b57fe5b610312611104565b60408051918252519081900360200190f35b341561059d57fe5b610312600160a060020a036004351661119f565b60408051918252519081900360200190f35b34156105cb57fe5b61023d6111be565b005b34156105dd57fe5b6102ee600160a060020a036004351660243561124b565b604080519115158252519081900360200190f35b341561061057fe5b61031261142c565b60408051918252519081900360200190f35b341561063257fe5b61031261143b565b60408051918252519081900360200190f35b341561065457fe5b610349611447565b60408051600160a060020a039092168252519081900360200190f35b341561068057fe5b610312611456565b60408051918252519081900360200190f35b34156106a257fe5b61024f61145c565b604080516020808252835181830152835191928392908301918501908083838215610295575b80518252602083111561029557601f199092019160209182019101610275565b505050905090810190601f1680156102c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561073257fe5b6103126114ea565b60408051918252519081900360200190f35b341561075457fe5b61024f6114f2565b604080516020808252835181830152835191928392908301918501908083838215610295575b80518252602083111561029557601f199092019160209182019101610275565b505050905090810190601f1680156102c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107e457fe5b61023d611529565b005b34156107f657fe5b610312611744565b60408051918252519081900360200190f35b341561081857fe5b6102ee600160a060020a036004351660243561174a565b604080519115158252519081900360200190f35b341561084b57fe5b6102ee600160a060020a0360043516611799565b604080519115158252519081900360200190f35b341561087b57fe5b610312600160a060020a03600435166117ae565b60408051918252519081900360200190f35b34156108a957fe5b610312611839565b60408051918252519081900360200190f35b34156108cb57fe5b6103126118d4565b60408051918252519081900360200190f35b34156108ed57fe5b6103496119db565b60408051600160a060020a039092168252519081900360200190f35b341561091957fe5b6102ee600160a060020a03600435166024356119ea565b604080519115158252519081900360200190f35b341561094c57fe5b610312600160a060020a0360043581169060243516611a9b565b60408051918252519081900360200190f35b341561098057fe5b61023d600160a060020a0360043516611ac8565b005b341561099e57fe5b610312600160a060020a0360043516611b4d565b60408051918252519081900360200190f35b34156109cc57fe5b61023d600160a060020a0360043516611bd8565b005b34156109ea57fe5b610312611c21565b60408051918252519081900360200190f35b61023d600160a060020a0360043516610aaa565b005b3415610a2257fe5b61024f611c29565b604080516020808252835181830152835191928392908301918501908083838215610295575b80518252602083111561029557601f199092019160209182019101610275565b505050905090810190601f1680156102c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600a5460009060ff1615610abe5760006000fd5b63594bbf50421015610ad05760006000fd5b6359734c50421115610ae25760006000fd5b600854341015610af25760006000fd5b6009541580610b02575060095434105b1515610b0e5760006000fd5b600554600b54600360ff92831660120301909116600a0a903402811515610b3157fe5b60005491900491506a18d0bf423c03d8de0000009082011115610b545760006000fd5b600160a060020a038216600090815260066020526040902054610b7d908263ffffffff611c6016565b600160a060020a03831660009081526006602052604081209190915554610baa908263ffffffff611c6016565b6000908155604080518381529051600160a060020a0385169291600080516020611f43833981519152919081900360200190a3600054600b546040805134815230600160a060020a039081163160208301528183018690526060820194909452608081019290925251918416917f6a7381bdc8f4e7ed3c0f0c299382777bde88a65f0c27f670235401d1544546309181900360a00190a2600160a060020a038083166000908152600e6020526040808220805460ff19166001179055600d5490519216913480156108fc0292909190818181858888f193505050501515610c915760006000fd5b5b5050565b6004805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d1c5780601f10610cf157610100808354040283529160200191610d1c565b820191906000526020600020905b815481529060010190602001808311610cff57829003601f168201915b505050505081565b600160a060020a03338116600081815260076020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b6a52b7d2dcc80cd2e400000081565b60015433600160a060020a03908116911614610dba5760006000fd5b63594bbf504210610dcb5760006000fd5b60008111610dd95760006000fd5b600b8190556040805182815290517fee386bebbe46d39825c2b93313aa1ab1dc57d4774cac81c6debb8c611c9227ab9181900360200190a15b5b50565b600c54600160a060020a031681565b60005481565b60015433600160a060020a03908116911614610e475760006000fd5b600160a060020a0381166000818152600e6020526040808220805460ff19169055517fb3e6054663369578ee4831fc6c8ee9486db04e6f78b939250094785f6b6a430b9190a25b5b50565b600c54604080516000602091820181905282517f1ab3c515000000000000000000000000000000000000000000000000000000008152600160a060020a038681166004830152935191949390931692631ab3c51592602480830193919282900301818787803b1515610f0057fe5b6102c65a03f11515610f0e57fe5b5050604051519150505b919050565b600a5460ff1681565b600a5460009060ff161515610f3b5760006000fd5b600160a060020a0384166000908152600e602052604090205460ff1615610f625760006000fd5b610f6d848484611c88565b90505b9392505050565b60085481565b601281565b60055460ff1681565b63594bbf5081565b60015433600160a060020a03908116911614610faf5760006000fd5b63594bbf504210610fc05760006000fd5b60008111610fce5760006000fd5b600160a060020a038216600090815260066020526040902054610ff7908263ffffffff611c6016565b600160a060020a03831660009081526006602052604081209190915554611024908263ffffffff611c6016565b6000908155604080518381529051600160a060020a0385169291600080516020611f43833981519152919081900360200190a35b5b5050565b6a0ac0db698068112d00000081565b600d54600160a060020a031681565b6359734c5081565b600a5460009060ff16156110fc57600c546040805160006020918201819052825160e160020a632c1a0c910281529251600160a060020a039094169363583419229360048082019493918390030190829087803b15156110df57fe5b6102c65a03f115156110ed57fe5b50506040515191506111009050565b5060005b5b90565b600a5460009060ff16156110fc57600c54604080516000602091820181905282517f622c77fe0000000000000000000000000000000000000000000000000000000081529251600160a060020a039094169363622c77fe9360048082019493918390030190829087803b15156110df57fe5b6102c65a03f115156110ed57fe5b50506040515191506111009050565b506000611100565b5b90565b600160a060020a0381166000908152600660205260409020545b919050565b60025433600160a060020a039081169116146111da5760006000fd5b600254600154604051600160a060020a0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36002546001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b565b600160a060020a0382166000908152600660205260408120548290108015906112985750600160a060020a0383166000908152600760209081526040808320838052909152902054829010155b80156112a45750600082115b80156112db57506000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f854828101115b1561141d57600160a060020a038316600090815260066020526040902054611309908363ffffffff611e1d16565b600160a060020a0384166000908152600660209081526040808320939093556007815282822082805290522054611346908363ffffffff611e1d16565b600160a060020a0384166000908152600760209081526040808320838052825290912091909155600690527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8546113a3908363ffffffff611c6016565b600080805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f891909155546113e3908363ffffffff611e1d16565b6000908155604080518481529051600160a060020a03861691600080516020611f43833981519152919081900360200190a3506001610d89565b506000610d89565b5b92915050565b6a18d0bf423c03d8de00000081565b670de0b6b3a764000081565b600154600160a060020a031681565b60095481565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d1c5780601f10610cf157610100808354040283529160200191610d1c565b820191906000526020600020905b815481529060010190602001808311610cff57829003601f168201915b505050505081565b635d0e265081565b60408051808201909152600d81527f6f70656e414e5820546f6b656e00000000000000000000000000000000000000602082015281565b60015433600160a060020a039081169116146115455760006000fd5b6000546a0ac0db698068112d0000009010158061156557506359734c5042115b15156115715760006000fd5b600a5460ff16156115825760006000fd5b600c54604080517fe9d7f3090000000000000000000000000000000000000000000000000000000081529051600160a060020a039092169163e9d7f3099160048082019260009290919082900301818387803b15156115dd57fe5b6102c65a03f115156115eb57fe5b5050506116a2600c60009054906101000a9004600160a060020a0316600160a060020a031663583419226000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401809050602060405180830381600087803b151561166557fe5b6102c65a03f1151561167357fe5b50506040805151600c54600160a060020a0316600090815260066020529190912054915063ffffffff611c6016565b600c8054600160a060020a03908116600090815260066020908152604080832095909555925484518401829052845160e160020a632c1a0c91028152945161173095919093169363583419229360048084019492939192918390030190829087803b151561170c57fe5b6102c65a03f1151561171a57fe5b505060405151600054915063ffffffff611c6016565b600055600a805460ff191660011790555b5b565b600b5481565b600a5460009060ff16151561175f5760006000fd5b600160a060020a0333166000908152600e602052604090205460ff16156117865760006000fd5b6117908383611e34565b90505b92915050565b600e6020526000908152604090205460ff1681565b600c54604080516000602091820181905282517fbc5dc168000000000000000000000000000000000000000000000000000000008152600160a060020a03868116600483015293519194939093169263bc5dc16892602480830193919282900301818787803b1515610f0057fe5b6102c65a03f11515610f0e57fe5b5050604051519150505b919050565b600a5460009060ff16156110fc57600c54604080516000602091820181905282517fc0c3da9c0000000000000000000000000000000000000000000000000000000081529251600160a060020a039094169363c0c3da9c9360048082019493918390030190829087803b15156110df57fe5b6102c65a03f115156110ed57fe5b50506040515191506111009050565b506000611100565b5b90565b600a5460009060ff16801561194e5750600c546040805160006020918201819052825160e160020a632c1a0c910281529251600160a060020a039094169363583419229360048082019493918390030190829087803b151561193257fe5b6102c65a03f1151561194057fe5b505060405151600054101590505b156110fc57600c546040805160006020918201819052825160e160020a632c1a0c9102815292516119c894600160a060020a0316936358341922936004808301949193928390030190829087803b15156119a457fe5b6102c65a03f115156119b257fe5b505060405151600054915063ffffffff611e1d16565b9050611100565b506000611100565b5b90565b600254600160a060020a031681565b60015460009033600160a060020a03908116911614611a095760006000fd5b600154604080516000602091820181905282517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0394851660048201526024810187905292519387169363a9059cbb9360448082019493918390030190829087803b1515611a7c57fe5b6102c65a03f11515611a8a57fe5b5050604051519150505b5b92915050565b600160a060020a038083166000908152600760209081526040808320938516835292905220545b92915050565b60015433600160a060020a03908116911614611ae45760006000fd5b600d805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091179182905560408051929091168252517f4edbfac5b40fe46ac1af1fd222b224b38cfeeb9e21bd4fc6344526c245f7549b916020908290030190a15b5b50565b600c54604080516000602091820181905282517fe960bb48000000000000000000000000000000000000000000000000000000008152600160a060020a03868116600483015293519194939093169263e960bb4892602480830193919282900301818787803b1515610f0057fe5b6102c65a03f11515610f0e57fe5b5050604051519150505b919050565b60015433600160a060020a03908116911614611bf45760006000fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b635b2cf2d081565b60408051808201909152600381527f4f41580000000000000000000000000000000000000000000000000000000000602082015281565b6000828201838110801590611c755750828110155b1515611c7d57fe5b8091505b5092915050565b600160a060020a038316600090815260066020526040812054829010801590611cd85750600160a060020a0380851660009081526007602090815260408083203390941683529290522054829010155b8015611ce45750600082115b8015611d095750600160a060020a038316600090815260066020526040902054828101115b15611e0d57600160a060020a038416600090815260066020526040902054611d37908363ffffffff611e1d16565b600160a060020a0380861660009081526006602090815260408083209490945560078152838220339093168252919091522054611d7a908363ffffffff611e1d16565b600160a060020a0380861660009081526007602090815260408083203385168452825280832094909455918616815260069091522054611dc0908363ffffffff611c6016565b600160a060020a038085166000818152600660209081526040918290209490945580518681529051919392881692600080516020611f4383398151915292918290030190a3506001610f70565b506000610f70565b5b9392505050565b600082821115611e2957fe5b508082035b92915050565b600160a060020a033316600090815260066020526040812054829010801590611e5d5750600082115b8015611e825750600160a060020a038316600090815260066020526040902054828101115b1561141d57600160a060020a033316600090815260066020526040902054611eb0908363ffffffff611e1d16565b600160a060020a033381166000908152600660205260408082209390935590851681522054611ee5908363ffffffff611c6016565b600160a060020a03808516600081815260066020908152604091829020949094558051868152905191933390931692600080516020611f4383398151915292918290030190a3506001610d89565b506000610d89565b5b929150505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a7230582002d82e12d01419074eb87e3b53edd24e33c5ad021933496454ed30b3c41a4d160029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000002b3b67c6dffc2bcdda2315491eac9bbe868fbcdd
-----Decoded View---------------
Arg [0] : _wallet (address): 0x2b3b67c6dffc2BCDDa2315491Eac9bbE868fbCDD
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000002b3b67c6dffc2bcdda2315491eac9bbe868fbcdd
Swarm Source
bzzr://1ebf78c948e9b064875413e10729508a8cb3f4fc7b2decd423f81a4a0a420b80
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.