More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,841 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Distribute Token... | 6495257 | 2242 days ago | IN | 0 ETH | 0.00240532 | ||||
Distribute Token... | 5786901 | 2361 days ago | IN | 0 ETH | 0.00240532 | ||||
Distribute Token... | 5786898 | 2361 days ago | IN | 0 ETH | 0.00240116 | ||||
Distribute Token... | 5786328 | 2361 days ago | IN | 0 ETH | 0.00643695 | ||||
Distribute Token... | 5786328 | 2361 days ago | IN | 0 ETH | 0.00643688 | ||||
Distribute Token... | 5786260 | 2361 days ago | IN | 0 ETH | 0.00217353 | ||||
Distribute Token... | 5740747 | 2369 days ago | IN | 0 ETH | 0.00240532 | ||||
Distribute Token... | 5657193 | 2384 days ago | IN | 0 ETH | 0.00217769 | ||||
Distribute Token... | 5657189 | 2384 days ago | IN | 0 ETH | 0.00240532 | ||||
Distribute Token... | 5576562 | 2398 days ago | IN | 0 ETH | 0.00217769 | ||||
Distribute Token... | 5576551 | 2398 days ago | IN | 0 ETH | 0.00169019 | ||||
Distribute Token... | 5543627 | 2404 days ago | IN | 0 ETH | 0.00169019 | ||||
Distribute Token... | 5543617 | 2404 days ago | IN | 0 ETH | 0.00240116 | ||||
Distribute Token... | 5543613 | 2404 days ago | IN | 0 ETH | 0.00240532 | ||||
Distribute Token... | 5461405 | 2418 days ago | IN | 0 ETH | 0.00217561 | ||||
Distribute Token... | 5373950 | 2433 days ago | IN | 0 ETH | 0.00217769 | ||||
Distribute Token... | 5373949 | 2433 days ago | IN | 0 ETH | 0.00240532 | ||||
Distribute To Al... | 5373949 | 2433 days ago | IN | 0 ETH | 0.00312032 | ||||
Distribute Token... | 5373949 | 2433 days ago | IN | 0 ETH | 0.00168811 | ||||
Distribute Token... | 5301486 | 2445 days ago | IN | 0 ETH | 0.00217769 | ||||
Distribute Token... | 5301486 | 2445 days ago | IN | 0 ETH | 0.00240532 | ||||
Distribute Token... | 5265227 | 2451 days ago | IN | 0 ETH | 0.00217769 | ||||
Distribute Token... | 5265225 | 2451 days ago | IN | 0 ETH | 0.00240532 | ||||
Distribute Token... | 5259568 | 2452 days ago | IN | 0 ETH | 0.00217769 | ||||
Distribute Token... | 5259554 | 2452 days ago | IN | 0 ETH | 0.00643695 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
4953596 | 2504 days ago | 0.78 ETH | ||||
4953596 | 2504 days ago | 0.5 ETH | ||||
4953596 | 2504 days ago | 0.20413654 ETH | ||||
4953596 | 2504 days ago | 0.99284594 ETH | ||||
4953596 | 2504 days ago | 1.3918401 ETH | ||||
4953596 | 2504 days ago | 1.11347208 ETH | ||||
4953596 | 2504 days ago | 4.63946701 ETH | ||||
4953596 | 2504 days ago | 2.63946701 ETH | ||||
4953596 | 2504 days ago | 4.63946701 ETH | ||||
4953596 | 2504 days ago | 4.63946701 ETH | ||||
4953596 | 2504 days ago | 4.63 ETH | ||||
4953596 | 2504 days ago | 4.6 ETH | ||||
4953596 | 2504 days ago | 4.639 ETH | ||||
4953596 | 2504 days ago | 9.27 ETH | ||||
4953596 | 2504 days ago | 2 ETH | ||||
4953595 | 2504 days ago | 2 ETH | ||||
4953595 | 2504 days ago | 5 ETH | ||||
4953595 | 2504 days ago | 0.02893403 ETH | ||||
4953595 | 2504 days ago | 1.48462944 ETH | ||||
4953595 | 2504 days ago | 1.8557868 ETH | ||||
4953595 | 2504 days ago | 4.00386003 ETH | ||||
4953595 | 2504 days ago | 5.5 ETH | ||||
4953595 | 2504 days ago | 1 ETH | ||||
4953595 | 2504 days ago | 9.27893403 ETH | ||||
4953595 | 2504 days ago | 0.2 ETH |
Loading...
Loading
Contract Name:
DadiPreSale
Compiler Version
v0.4.18+commit.9cf6e910
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-01-21 */ pragma solidity ^0.4.11; /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a * b; assert(a == 0 || c / a == b); return c; } 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; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ 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) onlyOwner public { require(newOwner != address(0)); OwnershipTransferred(owner, newOwner); owner = newOwner; } } /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/179 */ contract ERC20Basic { uint256 public totalSupply; function balanceOf(address who) public constant returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } /** * @title Basic token * @dev Basic version of StandardToken, with no allowances. */ contract BasicToken is ERC20Basic { using SafeMath for uint256; mapping(address => uint256) balances; /** * @dev transfer token for a specified address * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function transfer(address _to, uint256 _value) public returns (bool) { require(_to != address(0)); // SafeMath.sub will throw if there is not enough balance. balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); Transfer(msg.sender, _to, _value); return true; } /** * @dev Gets the balance of the specified address. * @param _owner The address to query the the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address _owner) public constant returns (uint256 balance) { return balances[_owner]; } } /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ contract ERC20 is ERC20Basic { function allowance(address owner, address spender) public constant returns (uint256); function transferFrom(address from, address to, uint256 value) public returns (bool); function approve(address spender, uint256 value) public returns (bool); event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @title Standard ERC20 token * * @dev Implementation of the basic standard token. * @dev https://github.com/ethereum/EIPs/issues/20 * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol */ contract StandardToken is ERC20, BasicToken { mapping (address => mapping (address => uint256)) allowed; /** * @dev Transfer tokens from one address to another * @param _from address The address which you want to send tokens from * @param _to address The address which you want to transfer to * @param _value uint256 the amount of tokens to be transferred */ function transferFrom(address _from, address _to, uint256 _value) public returns (bool) { require(_to != address(0)); uint256 _allowance = allowed[_from][msg.sender]; // Check is not needed because sub(_allowance, _value) will already throw if this condition is not met // require (_value <= _allowance); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = _allowance.sub(_value); Transfer(_from, _to, _value); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * * Beware that changing an allowance with this method brings the risk that someone may use both the old * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * @param _spender The address which will spend the funds. * @param _value The amount of tokens to be spent. */ function approve(address _spender, uint256 _value) public returns (bool) { allowed[msg.sender][_spender] = _value; Approval(msg.sender, _spender, _value); return true; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param _owner address The address which owns the funds. * @param _spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance(address _owner, address _spender) public constant returns (uint256 remaining) { return allowed[_owner][_spender]; } /** * approve should be called when allowed[_spender] == 0. To increment * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol */ function increaseApproval (address _spender, uint _addedValue) public returns (bool success) { allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue); Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } function decreaseApproval (address _spender, uint _subtractedValue) public returns (bool success) { uint oldValue = allowed[msg.sender][_spender]; if (_subtractedValue > oldValue) { allowed[msg.sender][_spender] = 0; } else { allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue); } Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } } /***** * @title The DADI Presale Contract */ contract DadiPreSale is Ownable { using SafeMath for uint256; StandardToken public token; // The DADI ERC20 token */ address public owner; address[] public preSaleWallets; struct WhitelistUser { uint256 pledged; uint index; } struct Investor { uint256 tokens; uint256 contribution; uint index; } uint256 public tokenSupply; uint256 public tokensPurchased = 0; uint256 public individualCap = 10000 * 1000; // USD$10,000 uint256 public preSaleTokenPrice = 400; // USD$0.40 uint256 public ethRate; // ETH to USD Rate, set by owner: 1 ETH = ethRate USD mapping(address => WhitelistUser) private whitelisted; address[] private whitelistedIndex; mapping(address => Investor) private investors; address[] private investorIndex; /***** * State for Sale Modes * 0 - Preparing: All contract initialization calls * 1 - PreSale: Contract is in the Presale Period * 2 - PreSaleFinalized Presale period is finalized, no more payments are allowed * 3 - Success: Presale Successful * 4 - TokenDistribution: Presale finished, tokens can be distributed * 5 - Closed: Presale closed, no tokens more can be distributed */ enum SaleState { Preparing, PreSale, PreSaleFinalized, Success, TokenDistribution, Closed } SaleState public state = SaleState.Preparing; /***** * State for Purchase Periods * 0 - Preparing: All contract initialization calls * 1 - Whitelist: Only whitelisted users can make payments * 2 - WhitelistApplicant: Only whitelisted users and whitelist applicants can make payments * 3 - Public: Sale open to all */ enum PurchasePeriod { Preparing, Whitelist, WhitelistApplicant, Public } PurchasePeriod public purchasePeriod = PurchasePeriod.Preparing; /** * event for token purchase logging * @param purchaser who paid for the tokens * @param beneficiary who got the tokens * @param value weis paid for purchase * @param tokens amount of tokens purchased */ event LogTokenPurchase(address indexed purchaser, address indexed beneficiary, uint256 value, uint256 tokens); event LogTokenDistribution(address recipient, uint256 tokens); event LogRedistributeTokens(address recipient, SaleState _state, uint256 tokens); event LogFundTransfer(address wallet, uint256 value); event LogRefund(address wallet, uint256 value); event LogStateChange(SaleState _state); event LogNewWhitelistUser(address indexed userAddress, uint index, uint256 value); /***** * @dev Modifier to check that amount transferred is not 0 */ modifier nonZero() { require(msg.value != 0); _; } /***** * @dev The constructor function to initialize the Presale * @param _token address the address of the ERC20 token for the sale * @param _tokenSupply uint256 the amount of tokens available */ function DadiPreSale (StandardToken _token,uint256 _tokenSupply) public { require(_token != address(0)); require(_tokenSupply != 0); owner = msg.sender; token = StandardToken(_token); tokenSupply = _tokenSupply * (uint256(10) ** 18); } /***** * @dev Fallback Function to buy the tokens */ function () public nonZero payable { require(state == SaleState.PreSale); buyTokens(msg.sender, msg.value); } /***** * @dev Allows the contract owner to add a new PreSale wallet, used to hold funds safely * @param _wallet address The address of the wallet * @return success bool Returns true if executed successfully */ function addPreSaleWallet (address _wallet) public onlyOwner returns (bool) { require(_wallet != address(0)); preSaleWallets.push(_wallet); return true; } /***** * @dev Allows the contract owner to add multiple whitelist users, each with a wallet address and a pledged contribution * @param userAddresses address[] The array of whitelist wallet addresses * @param pledges uint256[] The array of whitelist pledges */ function addWhitelistUsers(address[] userAddresses, uint256[] pledges) public onlyOwner { for (uint i = 0; i < userAddresses.length; i++) { addWhitelistUser(userAddresses[i], pledges[i]); } } /***** * @dev Allows the contract owner to a single whitelist user * @param userAddress address The wallet address to whitelist * @param pledged uint256 The amount pledged by the user */ function addWhitelistUser(address userAddress, uint256 pledged) public onlyOwner { if (!isWhitelisted(userAddress)) { whitelisted[userAddress].pledged = pledged * 1000; whitelisted[userAddress].index = whitelistedIndex.push(userAddress) - 1; LogNewWhitelistUser(userAddress, whitelisted[userAddress].index, pledged); } } /***** * @dev Calculates the number of tokens that can be bought for the amount of Wei transferred * @param _amount uint256 The amount of money invested by the investor * @return tokens uint256 The number of tokens purchased for the amount invested */ function calculateTokens (uint256 _amount) public constant returns (uint256 tokens) { tokens = _amount * ethRate / preSaleTokenPrice; return tokens; } /***** * @dev Called by the owner of the contract to modify the sale state */ function setState (uint256 _state) public onlyOwner { state = SaleState(uint(_state)); LogStateChange(state); } /***** * @dev Called by the owner of the contract to open the WhitelistApplicant/Public periods */ function setPurchasePeriod (uint256 phase) public onlyOwner { purchasePeriod = PurchasePeriod(uint(phase)); } /***** * @dev Called by the owner of the contract to start the Presale * @param rate uint256 the current ETH USD rate, multiplied by 1000 */ function startPreSale (uint256 rate) public onlyOwner { state = SaleState.PreSale; purchasePeriod = PurchasePeriod.Whitelist; updateEthRate(rate); LogStateChange(state); } /***** * @dev Allow updating the ETH USD exchange rate * @param rate uint256 the current ETH USD rate, multiplied by 1000 * @return bool Return true if the contract is in PartnerSale Period */ function updateEthRate (uint256 rate) public onlyOwner returns (bool) { require(rate >= 100000); ethRate = rate; return true; } /***** * @dev Allows transfer of tokens to a recipient who has purchased offline, during the PreSale * @param _recipient address The address of the recipient of the tokens * @param _tokens uint256 The number of tokens purchased by the recipient * @return success bool Returns true if executed successfully */ function offlineTransaction (address _recipient, uint256 _tokens) public onlyOwner returns (bool) { require(_tokens > 0); // Convert to a token with decimals uint256 tokens = _tokens * (uint256(10) ** uint8(18)); // if the number of tokens is greater than available, reject tx if (tokens >= getTokensAvailable()) { revert(); } addToInvestor(_recipient, 0, tokens); // Increase the count of tokens purchased in the sale updateSaleParameters(tokens); LogTokenPurchase(msg.sender, _recipient, 0, tokens); return true; } /***** * @dev Called by the owner of the contract to finalize the ICO * and redistribute funds (if any) */ function finalizeSale () public onlyOwner { state = SaleState.Success; LogStateChange(state); // Transfer any ETH to one of the Presale wallets if (this.balance > 0) { forwardFunds(this.balance); } } /***** * @dev Called by the owner of the contract to close the Sale and redistribute any crumbs. * @param recipient address The address of the recipient of the tokens */ function closeSale (address recipient) public onlyOwner { state = SaleState.Closed; LogStateChange(state); // redistribute unsold tokens to DADI ecosystem uint256 remaining = getTokensAvailable(); updateSaleParameters(remaining); if (remaining > 0) { token.transfer(recipient, remaining); LogRedistributeTokens(recipient, state, remaining); } } /***** * @dev Called by the owner of the contract to allow tokens to be distributed */ function setTokenDistribution () public onlyOwner { state = SaleState.TokenDistribution; LogStateChange(state); } /***** * @dev Called by the owner of the contract to distribute tokens to investors * @param _address address The address of the investor for which to distribute tokens * @return success bool Returns true if executed successfully */ function distributeTokens (address _address) public onlyOwner returns (bool) { require(state == SaleState.TokenDistribution); // get the tokens available for the investor uint256 tokens = investors[_address].tokens; require(tokens > 0); investors[_address].tokens = 0; investors[_address].contribution = 0; token.transfer(_address, tokens); LogTokenDistribution(_address, tokens); return true; } /***** * @dev Called by the owner of the contract to distribute tokens to investors who used a non-ERC20 wallet address * @param _purchaseAddress address The address the investor used to buy tokens * @param _tokenAddress address The address to send the tokens to * @return success bool Returns true if executed successfully */ function distributeToAlternateAddress (address _purchaseAddress, address _tokenAddress) public onlyOwner returns (bool) { require(state == SaleState.TokenDistribution); // get the tokens available for the investor uint256 tokens = investors[_purchaseAddress].tokens; require(tokens > 0); investors[_purchaseAddress].tokens = 0; token.transfer(_tokenAddress, tokens); LogTokenDistribution(_tokenAddress, tokens); return true; } /***** * @dev Called by the owner of the contract to redistribute tokens if an investor has been refunded offline * @param investorAddress address The address the investor used to buy tokens * @param recipient address The address to send the tokens to */ function redistributeTokens (address investorAddress, address recipient) public onlyOwner { uint256 tokens = investors[investorAddress].tokens; require(tokens > 0); // remove tokens, so they can't be redistributed investors[investorAddress].tokens = 0; token.transfer(recipient, tokens); LogRedistributeTokens(recipient, state, tokens); } /***** * @dev Get the amount of PreSale tokens left for purchase * @return uint256 the count of tokens available */ function getTokensAvailable () public constant returns (uint256) { return tokenSupply - tokensPurchased; } /***** * @dev Get the total count of tokens purchased in all the Sale periods * @return uint256 the count of tokens purchased */ function getTokensPurchased () public constant returns (uint256) { return tokensPurchased; } /***** * @dev Get the balance sent to the contract * @return uint256 the amount sent to this contract, in Wei */ function getBalance () public constant returns (uint256) { return this.balance; } /***** * @dev Converts an amount sent in Wei to the equivalent in USD * @param _amount uint256 the amount sent to the contract, in Wei * @return uint256 the amount sent to this contract, in USD */ function ethToUsd (uint256 _amount) public constant returns (uint256) { return (_amount * ethRate) / (uint256(10) ** 18); } /***** * @dev Get the overall success state of the ICO * @return bool whether the state is successful, or not */ function isSuccessful () public constant returns (bool) { return state == SaleState.Success; } /***** * @dev Get a whitelisted user * @param userAddress address the wallet address of the user * @return uint256 the amount pledged by the user * @return uint the index of the user */ function getWhitelistUser (address userAddress) public constant returns (uint256 pledged, uint index) { require(isWhitelisted(userAddress)); return(whitelisted[userAddress].pledged, whitelisted[userAddress].index); } /***** * @dev Get count of contributors * @return uint the number of unique contributors */ function getInvestorCount () public constant returns (uint count) { return investorIndex.length; } /***** * @dev Get an investor * @param _address address the wallet address of the investor * @return uint256 the amount contributed by the user * @return uint256 the number of tokens assigned to the user * @return uint the index of the user */ function getInvestor (address _address) public constant returns (uint256 contribution, uint256 tokens, uint index) { require(isInvested(_address)); return(investors[_address].contribution, investors[_address].tokens, investors[_address].index); } /***** * @dev Get a user's whitelisted state * @param userAddress address the wallet address of the user * @return bool true if the user is in the whitelist */ function isWhitelisted (address userAddress) internal constant returns (bool isIndeed) { if (whitelistedIndex.length == 0) return false; return (whitelistedIndex[whitelisted[userAddress].index] == userAddress); } /***** * @dev Get a user's invested state * @param _address address the wallet address of the user * @return bool true if the user has already contributed */ function isInvested (address _address) internal constant returns (bool isIndeed) { if (investorIndex.length == 0) return false; return (investorIndex[investors[_address].index] == _address); } /***** * @dev Update a user's invested state * @param _address address the wallet address of the user * @param _value uint256 the amount contributed in this transaction * @param _tokens uint256 the number of tokens assigned in this transaction */ function addToInvestor(address _address, uint256 _value, uint256 _tokens) internal { // add the user to the investorIndex if this is their first contribution if (!isInvested(_address)) { investors[_address].index = investorIndex.push(_address) - 1; } investors[_address].tokens = investors[_address].tokens.add(_tokens); investors[_address].contribution = investors[_address].contribution.add(_value); } /***** * @dev Send ether to the presale collection wallets */ function forwardFunds (uint256 _value) internal { uint accountNumber; address account; // move funds to a random preSaleWallet if (preSaleWallets.length > 0) { accountNumber = getRandom(preSaleWallets.length) - 1; account = preSaleWallets[accountNumber]; account.transfer(_value); LogFundTransfer(account, _value); } } /***** * @dev Internal function to assign tokens to the contributor * @param _address address The address of the contributing investor * @param _value uint256 The amount invested * @return success bool Returns true if executed successfully */ function buyTokens (address _address, uint256 _value) internal returns (bool) { require(isBelowCap(_value)); if (isWhitelistPeriod()) { require(isWhitelisted(_address)); } require(isValidContribution(_address, _value)); uint256 boughtTokens = calculateTokens(_value); require(boughtTokens != 0); // if the number of tokens calculated for the given value is // greater than the tokens available, reject the payment if (boughtTokens >= getTokensAvailable()) { revert(); } // update investor state addToInvestor(_address, _value, boughtTokens); LogTokenPurchase(msg.sender, _address, _value, boughtTokens); forwardFunds(_value); updateSaleParameters(boughtTokens); return true; } /***** * @dev Check that the amount sent in the transaction is below the individual cap, or below the pledged * amount if the user is whitelisted and the sale is in the whitelist period. Factors in previous * transaction by the same user * @param _address address The address of the user making the transaction * @param _amount uint256 The amount sent in the transaction * @return bool Returns true if the amount is valid */ function isValidContribution (address _address, uint256 _amount) internal constant returns (bool valid) { if (isWhitelistPeriod() && isWhitelisted(_address)) { return ethToUsd(_amount + investors[_address].contribution) <= whitelisted[_address].pledged; } return isBelowCap(_amount + investors[_address].contribution); } /***** * @dev Check that the amount sent in the transaction is below the individual cap * @param _amount uint256 The amount sent in the transaction * @return bool Returns true if the amount is below the individual cap */ function isBelowCap (uint256 _amount) internal constant returns (bool) { return ethToUsd(_amount) < individualCap; } /***** * @dev Generates a random number from 1 to max based on the last block hash * @param max uint the maximum value * @return a random number */ function getRandom(uint max) internal constant returns (uint randomNumber) { return (uint(keccak256(block.blockhash(block.number - 1))) % max) + 1; } /***** * @dev Internal function to modify parameters based on tokens bought * @param _tokens uint256 The number of tokens purchased */ function updateSaleParameters (uint256 _tokens) internal { tokensPurchased = tokensPurchased.add(_tokens); } /***** * @dev Check the state of the contract * @return bool Return true if the contract is in the Whitelist period */ function isWhitelistPeriod () private constant returns (bool) { return purchasePeriod == PurchasePeriod.Whitelist; } /***** * @dev Check the state of the contract * @return bool Return true if the contract is in the WhitelistApplicant period */ function isWhitelistApplicantPeriod () private constant returns (bool) { return purchasePeriod == PurchasePeriod.WhitelistApplicant; } /***** * @dev Check the state of the contract * @return bool Return true if the contract is in the Public period */ function isPublicPeriod () private constant returns (bool) { return purchasePeriod == PurchasePeriod.Public; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"individualCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"investorAddress","type":"address"},{"name":"recipient","type":"address"}],"name":"redistributeTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"rate","type":"uint256"}],"name":"updateEthRate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finalizeSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"rate","type":"uint256"}],"name":"startPreSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_purchaseAddress","type":"address"},{"name":"_tokenAddress","type":"address"}],"name":"distributeToAlternateAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"phase","type":"uint256"}],"name":"setPurchasePeriod","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_amount","type":"uint256"}],"name":"calculateTokens","outputs":[{"name":"tokens","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"preSaleTokenPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"}],"name":"closeSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"userAddress","type":"address"},{"name":"pledged","type":"uint256"}],"name":"addWhitelistUser","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":"_address","type":"address"}],"name":"getInvestor","outputs":[{"name":"contribution","type":"uint256"},{"name":"tokens","type":"uint256"},{"name":"index","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTokensPurchased","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_amount","type":"uint256"}],"name":"ethToUsd","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getInvestorCount","outputs":[{"name":"count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"setTokenDistribution","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_state","type":"uint256"}],"name":"setState","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getTokensAvailable","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"distributeTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"userAddress","type":"address"}],"name":"getWhitelistUser","outputs":[{"name":"pledged","type":"uint256"},{"name":"index","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"state","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"preSaleWallets","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensPurchased","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ethRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"purchasePeriod","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_wallet","type":"address"}],"name":"addPreSaleWallet","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isSuccessful","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"userAddresses","type":"address[]"},{"name":"pledges","type":"uint256[]"}],"name":"addWhitelistUsers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_recipient","type":"address"},{"name":"_tokens","type":"uint256"}],"name":"offlineTransaction","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_token","type":"address"},{"name":"_tokenSupply","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"LogTokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"recipient","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"LogTokenDistribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"recipient","type":"address"},{"indexed":false,"name":"_state","type":"uint8"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"LogRedistributeTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"wallet","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"LogFundTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"wallet","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"LogRefund","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_state","type":"uint8"}],"name":"LogStateChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"userAddress","type":"address"},{"indexed":false,"name":"index","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"}],"name":"LogNewWhitelistUser","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
60606040526000600555629896806006556101906007556000600d60006101000a81548160ff0219169083600581111561003557fe5b02179055506000600d60016101000a81548160ff0219169083600381111561005957fe5b0217905550341561006957600080fd5b60405160408062002c2783398101604052808051906020019091908051906020019091905050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561010b57600080fd5b6000811415151561011b57600080fd5b33600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a0a81026004819055505050612a6b80620001bc6000396000f3006060604052600436106101ac576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630276650b146101fd57806312065fe0146102265780633d1e215d1461024f5780633f6f7ed6146102a757806358a687ec146102e25780635b91c510146102f7578063616d1fab1461031a5780636648cb521461038a57806371aa60fd146103ad5780637259bce3146103e45780637824407f1461040d57806379491370146104365780637ba8c12d1461046f5780638da5cb5b146104b15780638f35a75e1461050657806391667aef14610561578063946d14801461058a578063960524e3146105c157806396406391146105ea578063a9e966b7146105ff578063aaa5ad6114610622578063b1d17c981461064b578063b36c14fe1461069c578063c19d93fb146106f0578063c3c2686c14610727578063cc4d819c1461078a578063d2d93f90146107b3578063df0f093b146107dc578063e03c639c14610813578063ec4cd0cf14610864578063ed621e9a14610891578063f2fde38b1461092b578063f54e7a4014610964578063fc0c546a146109be575b600034141515156101bc57600080fd5b600160058111156101c957fe5b600d60009054906101000a900460ff1660058111156101e457fe5b1415156101f057600080fd5b6101fa3334610a13565b50005b341561020857600080fd5b610210610b26565b6040518082815260200191505060405180910390f35b341561023157600080fd5b610239610b2c565b6040518082815260200191505060405180910390f35b341561025a57600080fd5b6102a5600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b4b565b005b34156102b257600080fd5b6102c86004808035906020019091905050610dc2565b604051808215151515815260200191505060405180910390f35b34156102ed57600080fd5b6102f5610e41565b005b341561030257600080fd5b6103186004808035906020019091905050610f57565b005b341561032557600080fd5b610370600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061105b565b604051808215151515815260200191505060405180910390f35b341561039557600080fd5b6103ab60048080359060200190919050506112e8565b005b34156103b857600080fd5b6103ce6004808035906020019091905050611374565b6040518082815260200191505060405180910390f35b34156103ef57600080fd5b6103f7611392565b6040518082815260200191505060405180910390f35b341561041857600080fd5b610420611398565b6040518082815260200191505060405180910390f35b341561044157600080fd5b61046d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061139e565b005b341561047a57600080fd5b6104af600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061160d565b005b34156104bc57600080fd5b6104c461180a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561051157600080fd5b61053d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611830565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561056c57600080fd5b61057461191f565b6040518082815260200191505060405180910390f35b341561059557600080fd5b6105ab6004808035906020019091905050611929565b6040518082815260200191505060405180910390f35b34156105cc57600080fd5b6105d4611946565b6040518082815260200191505060405180910390f35b34156105f557600080fd5b6105fd611953565b005b341561060a57600080fd5b6106206004808035906020019091905050611a28565b005b341561062d57600080fd5b610635611b08565b6040518082815260200191505060405180910390f35b341561065657600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611b16565b604051808215151515815260200191505060405180910390f35b34156106a757600080fd5b6106d3600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611dea565b604051808381526020018281526020019250505060405180910390f35b34156106fb57600080fd5b610703611e90565b6040518082600581111561071357fe5b60ff16815260200191505060405180910390f35b341561073257600080fd5b6107486004808035906020019091905050611ea3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561079557600080fd5b61079d611ee2565b6040518082815260200191505060405180910390f35b34156107be57600080fd5b6107c6611ee8565b6040518082815260200191505060405180910390f35b34156107e757600080fd5b6107ef611eee565b604051808260038111156107ff57fe5b60ff16815260200191505060405180910390f35b341561081e57600080fd5b61084a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611f01565b604051808215151515815260200191505060405180910390f35b341561086f57600080fd5b610877612006565b604051808215151515815260200191505060405180910390f35b341561089c57600080fd5b61092960048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050612036565b005b341561093657600080fd5b610962600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506120eb565b005b341561096f57600080fd5b6109a4600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612240565b604051808215151515815260200191505060405180910390f35b34156109c957600080fd5b6109d161235c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600080610a1f83612382565b1515610a2a57600080fd5b610a32612398565b15610a4c57610a40846123c8565b1515610a4b57600080fd5b5b610a568484612493565b1515610a6157600080fd5b610a6a83611374565b905060008114151515610a7c57600080fd5b610a84611b08565b81101515610a9157600080fd5b610a9c8484836125a2565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ff370ff51765588b4b12b4ccf319b865dd3499a57df818acfe82c2740e41c878d8584604051808381526020018281526020019250505060405180910390a3610b1283612798565b610b1b816128aa565b600191505092915050565b60065481565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ba857600080fd5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050600081111515610bfc57600080fd5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515610d1157600080fd5b6102c65a03f11515610d2257600080fd5b50505060405180519050507f8a1bda63f5f60920a84caac25ec9eb9f26a6c01e1682229db0268c5a5c92453482600d60009054906101000a900460ff1683604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836005811115610da257fe5b60ff168152602001828152602001935050505060405180910390a1505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e1f57600080fd5b620186a08210151515610e3157600080fd5b8160088190555060019050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e9c57600080fd5b6003600d60006101000a81548160ff02191690836005811115610ebb57fe5b02179055507fc33408924c47a75c436c6caca09732b718f7c974a19cebe04dc816a990d0c174600d60009054906101000a900460ff1660405180826005811115610f0157fe5b60ff16815260200191505060405180910390a160003073ffffffffffffffffffffffffffffffffffffffff16311115610f5557610f543073ffffffffffffffffffffffffffffffffffffffff1631612798565b5b565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610fb257600080fd5b6001600d60006101000a81548160ff02191690836005811115610fd157fe5b02179055506001600d60016101000a81548160ff02191690836003811115610ff557fe5b021790555061100381610dc2565b507fc33408924c47a75c436c6caca09732b718f7c974a19cebe04dc816a990d0c174600d60009054906101000a900460ff166040518082600581111561104557fe5b60ff16815260200191505060405180910390a150565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110b957600080fd5b600460058111156110c657fe5b600d60009054906101000a900460ff1660058111156110e157fe5b1415156110ed57600080fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905060008111151561114157600080fd5b6000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561125657600080fd5b6102c65a03f1151561126757600080fd5b50505060405180519050507f388b9f37b6cbb3a30ba34c69072e43e77eb3714381366d456e84dcd1430968678382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1600191505092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561134357600080fd5b80600381111561134f57fe5b600d60016101000a81548160ff0219169083600381111561136c57fe5b021790555050565b6000600754600854830281151561138757fe5b049050809050919050565b60075481565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113fb57600080fd5b6005600d60006101000a81548160ff0219169083600581111561141a57fe5b02179055507fc33408924c47a75c436c6caca09732b718f7c974a19cebe04dc816a990d0c174600d60009054906101000a900460ff166040518082600581111561146057fe5b60ff16815260200191505060405180910390a161147b611b08565b9050611486816128aa565b600081111561160957600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561155c57600080fd5b6102c65a03f1151561156d57600080fd5b50505060405180519050507f8a1bda63f5f60920a84caac25ec9eb9f26a6c01e1682229db0268c5a5c92453482600d60009054906101000a900460ff1683604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018360058111156115ed57fe5b60ff168152602001828152602001935050505060405180910390a15b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561166857600080fd5b611671826123c8565b1515611806576103e88102600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506001600a80548060010182816116d891906129ee565b9160005260206000209001600085909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555003600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055508173ffffffffffffffffffffffffffffffffffffffff167f66731e9585532396e86cce538ac325969df87ba505a0913c37b798d30e95215d600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015483604051808381526020018281526020019250505060405180910390a25b5050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600061183e846128c8565b151561184957600080fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549250925092509193909250565b6000600554905090565b60006012600a0a600854830281151561193e57fe5b049050919050565b6000600c80549050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119ae57600080fd5b6004600d60006101000a81548160ff021916908360058111156119cd57fe5b02179055507fc33408924c47a75c436c6caca09732b718f7c974a19cebe04dc816a990d0c174600d60009054906101000a900460ff1660405180826005811115611a1357fe5b60ff16815260200191505060405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a8357600080fd5b806005811115611a8f57fe5b600d60006101000a81548160ff02191690836005811115611aac57fe5b02179055507fc33408924c47a75c436c6caca09732b718f7c974a19cebe04dc816a990d0c174600d60009054906101000a900460ff1660405180826005811115611af257fe5b60ff16815260200191505060405180910390a150565b600060055460045403905090565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b7457600080fd5b60046005811115611b8157fe5b600d60009054906101000a900460ff166005811115611b9c57fe5b141515611ba857600080fd5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050600081111515611bfc57600080fd5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515611d5957600080fd5b6102c65a03f11515611d6a57600080fd5b50505060405180519050507f388b9f37b6cbb3a30ba34c69072e43e77eb3714381366d456e84dcd1430968678382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a16001915050919050565b600080611df6836123c8565b1515611e0157600080fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015491509150915091565b600d60009054906101000a900460ff1681565b600381815481101515611eb257fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60085481565b600d60019054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f5e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611f9a57600080fd5b60038054806001018281611fae91906129ee565b9160005260206000209001600084909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060019050919050565b60006003600581111561201557fe5b600d60009054906101000a900460ff16600581111561203057fe5b14905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561209357600080fd5b600090505b82518110156120e6576120d983828151811015156120b257fe5b9060200190602002015183838151811015156120ca57fe5b9060200190602002015161160d565b8080600101915050612098565b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561214657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561218257600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561229e57600080fd5b6000831115156122ad57600080fd5b601260ff16600a0a830290506122c1611b08565b811015156122ce57600080fd5b6122da846000836125a2565b6122e3816128aa565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ff370ff51765588b4b12b4ccf319b865dd3499a57df818acfe82c2740e41c878d600084604051808381526020018281526020019250505060405180910390a3600191505092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060065461239083611929565b109050919050565b6000600160038111156123a757fe5b600d60019054906101000a900460ff1660038111156123c257fe5b14905090565b600080600a8054905014156123e0576000905061248e565b8173ffffffffffffffffffffffffffffffffffffffff16600a600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015481548110151561244857fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161490505b919050565b600061249d612398565b80156124ae57506124ad836123c8565b5b1561254c57600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612543600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101548401611929565b1115905061259c565b612599600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101548301612382565b90505b92915050565b6125ab836128c8565b151561265d576001600c80548060010182816125c791906129ee565b9160005260206000209001600086909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555003600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055505b6126b281600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461299390919063ffffffff16565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061274d82600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461299390919063ffffffff16565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505050565b600080600060038054905011156128a55760016127b96003805490506129b1565b0391506003828154811015156127cb57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050151561283957600080fd5b7f35c019e24e057e2b74358b61c59c75be70dc488b1c5f97fd5b9dfe58f6df04e88184604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b505050565b6128bf8160055461299390919063ffffffff16565b60058190555050565b600080600c8054905014156128e0576000905061298e565b8173ffffffffffffffffffffffffffffffffffffffff16600c600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015481548110151561294857fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161490505b919050565b60008082840190508381101515156129a757fe5b8091505092915050565b600060018260014303406040518082600019166000191681526020019150506040518091039020600190048115156129e557fe5b06019050919050565b815481835581811511612a1557818360005260206000209182019101612a149190612a1a565b5b505050565b612a3c91905b80821115612a38576000816000905550600101612a20565b5090565b905600a165627a7a7230582031f0f524ada83e60eaa8366139b70f02d7ec18aa896b88952e26028c5978748a0029000000000000000000000000fb2f26f266fb2805a387230f2aa0a331b4d96fba0000000000000000000000000000000000000000000000000000000000989680
Deployed Bytecode
0x6060604052600436106101ac576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630276650b146101fd57806312065fe0146102265780633d1e215d1461024f5780633f6f7ed6146102a757806358a687ec146102e25780635b91c510146102f7578063616d1fab1461031a5780636648cb521461038a57806371aa60fd146103ad5780637259bce3146103e45780637824407f1461040d57806379491370146104365780637ba8c12d1461046f5780638da5cb5b146104b15780638f35a75e1461050657806391667aef14610561578063946d14801461058a578063960524e3146105c157806396406391146105ea578063a9e966b7146105ff578063aaa5ad6114610622578063b1d17c981461064b578063b36c14fe1461069c578063c19d93fb146106f0578063c3c2686c14610727578063cc4d819c1461078a578063d2d93f90146107b3578063df0f093b146107dc578063e03c639c14610813578063ec4cd0cf14610864578063ed621e9a14610891578063f2fde38b1461092b578063f54e7a4014610964578063fc0c546a146109be575b600034141515156101bc57600080fd5b600160058111156101c957fe5b600d60009054906101000a900460ff1660058111156101e457fe5b1415156101f057600080fd5b6101fa3334610a13565b50005b341561020857600080fd5b610210610b26565b6040518082815260200191505060405180910390f35b341561023157600080fd5b610239610b2c565b6040518082815260200191505060405180910390f35b341561025a57600080fd5b6102a5600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b4b565b005b34156102b257600080fd5b6102c86004808035906020019091905050610dc2565b604051808215151515815260200191505060405180910390f35b34156102ed57600080fd5b6102f5610e41565b005b341561030257600080fd5b6103186004808035906020019091905050610f57565b005b341561032557600080fd5b610370600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061105b565b604051808215151515815260200191505060405180910390f35b341561039557600080fd5b6103ab60048080359060200190919050506112e8565b005b34156103b857600080fd5b6103ce6004808035906020019091905050611374565b6040518082815260200191505060405180910390f35b34156103ef57600080fd5b6103f7611392565b6040518082815260200191505060405180910390f35b341561041857600080fd5b610420611398565b6040518082815260200191505060405180910390f35b341561044157600080fd5b61046d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061139e565b005b341561047a57600080fd5b6104af600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061160d565b005b34156104bc57600080fd5b6104c461180a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561051157600080fd5b61053d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611830565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561056c57600080fd5b61057461191f565b6040518082815260200191505060405180910390f35b341561059557600080fd5b6105ab6004808035906020019091905050611929565b6040518082815260200191505060405180910390f35b34156105cc57600080fd5b6105d4611946565b6040518082815260200191505060405180910390f35b34156105f557600080fd5b6105fd611953565b005b341561060a57600080fd5b6106206004808035906020019091905050611a28565b005b341561062d57600080fd5b610635611b08565b6040518082815260200191505060405180910390f35b341561065657600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611b16565b604051808215151515815260200191505060405180910390f35b34156106a757600080fd5b6106d3600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611dea565b604051808381526020018281526020019250505060405180910390f35b34156106fb57600080fd5b610703611e90565b6040518082600581111561071357fe5b60ff16815260200191505060405180910390f35b341561073257600080fd5b6107486004808035906020019091905050611ea3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561079557600080fd5b61079d611ee2565b6040518082815260200191505060405180910390f35b34156107be57600080fd5b6107c6611ee8565b6040518082815260200191505060405180910390f35b34156107e757600080fd5b6107ef611eee565b604051808260038111156107ff57fe5b60ff16815260200191505060405180910390f35b341561081e57600080fd5b61084a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611f01565b604051808215151515815260200191505060405180910390f35b341561086f57600080fd5b610877612006565b604051808215151515815260200191505060405180910390f35b341561089c57600080fd5b61092960048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050612036565b005b341561093657600080fd5b610962600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506120eb565b005b341561096f57600080fd5b6109a4600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612240565b604051808215151515815260200191505060405180910390f35b34156109c957600080fd5b6109d161235c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600080610a1f83612382565b1515610a2a57600080fd5b610a32612398565b15610a4c57610a40846123c8565b1515610a4b57600080fd5b5b610a568484612493565b1515610a6157600080fd5b610a6a83611374565b905060008114151515610a7c57600080fd5b610a84611b08565b81101515610a9157600080fd5b610a9c8484836125a2565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ff370ff51765588b4b12b4ccf319b865dd3499a57df818acfe82c2740e41c878d8584604051808381526020018281526020019250505060405180910390a3610b1283612798565b610b1b816128aa565b600191505092915050565b60065481565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ba857600080fd5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050600081111515610bfc57600080fd5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515610d1157600080fd5b6102c65a03f11515610d2257600080fd5b50505060405180519050507f8a1bda63f5f60920a84caac25ec9eb9f26a6c01e1682229db0268c5a5c92453482600d60009054906101000a900460ff1683604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836005811115610da257fe5b60ff168152602001828152602001935050505060405180910390a1505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e1f57600080fd5b620186a08210151515610e3157600080fd5b8160088190555060019050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e9c57600080fd5b6003600d60006101000a81548160ff02191690836005811115610ebb57fe5b02179055507fc33408924c47a75c436c6caca09732b718f7c974a19cebe04dc816a990d0c174600d60009054906101000a900460ff1660405180826005811115610f0157fe5b60ff16815260200191505060405180910390a160003073ffffffffffffffffffffffffffffffffffffffff16311115610f5557610f543073ffffffffffffffffffffffffffffffffffffffff1631612798565b5b565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610fb257600080fd5b6001600d60006101000a81548160ff02191690836005811115610fd157fe5b02179055506001600d60016101000a81548160ff02191690836003811115610ff557fe5b021790555061100381610dc2565b507fc33408924c47a75c436c6caca09732b718f7c974a19cebe04dc816a990d0c174600d60009054906101000a900460ff166040518082600581111561104557fe5b60ff16815260200191505060405180910390a150565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110b957600080fd5b600460058111156110c657fe5b600d60009054906101000a900460ff1660058111156110e157fe5b1415156110ed57600080fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905060008111151561114157600080fd5b6000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561125657600080fd5b6102c65a03f1151561126757600080fd5b50505060405180519050507f388b9f37b6cbb3a30ba34c69072e43e77eb3714381366d456e84dcd1430968678382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1600191505092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561134357600080fd5b80600381111561134f57fe5b600d60016101000a81548160ff0219169083600381111561136c57fe5b021790555050565b6000600754600854830281151561138757fe5b049050809050919050565b60075481565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113fb57600080fd5b6005600d60006101000a81548160ff0219169083600581111561141a57fe5b02179055507fc33408924c47a75c436c6caca09732b718f7c974a19cebe04dc816a990d0c174600d60009054906101000a900460ff166040518082600581111561146057fe5b60ff16815260200191505060405180910390a161147b611b08565b9050611486816128aa565b600081111561160957600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561155c57600080fd5b6102c65a03f1151561156d57600080fd5b50505060405180519050507f8a1bda63f5f60920a84caac25ec9eb9f26a6c01e1682229db0268c5a5c92453482600d60009054906101000a900460ff1683604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018360058111156115ed57fe5b60ff168152602001828152602001935050505060405180910390a15b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561166857600080fd5b611671826123c8565b1515611806576103e88102600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506001600a80548060010182816116d891906129ee565b9160005260206000209001600085909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555003600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055508173ffffffffffffffffffffffffffffffffffffffff167f66731e9585532396e86cce538ac325969df87ba505a0913c37b798d30e95215d600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015483604051808381526020018281526020019250505060405180910390a25b5050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600061183e846128c8565b151561184957600080fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549250925092509193909250565b6000600554905090565b60006012600a0a600854830281151561193e57fe5b049050919050565b6000600c80549050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119ae57600080fd5b6004600d60006101000a81548160ff021916908360058111156119cd57fe5b02179055507fc33408924c47a75c436c6caca09732b718f7c974a19cebe04dc816a990d0c174600d60009054906101000a900460ff1660405180826005811115611a1357fe5b60ff16815260200191505060405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a8357600080fd5b806005811115611a8f57fe5b600d60006101000a81548160ff02191690836005811115611aac57fe5b02179055507fc33408924c47a75c436c6caca09732b718f7c974a19cebe04dc816a990d0c174600d60009054906101000a900460ff1660405180826005811115611af257fe5b60ff16815260200191505060405180910390a150565b600060055460045403905090565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b7457600080fd5b60046005811115611b8157fe5b600d60009054906101000a900460ff166005811115611b9c57fe5b141515611ba857600080fd5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050600081111515611bfc57600080fd5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515611d5957600080fd5b6102c65a03f11515611d6a57600080fd5b50505060405180519050507f388b9f37b6cbb3a30ba34c69072e43e77eb3714381366d456e84dcd1430968678382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a16001915050919050565b600080611df6836123c8565b1515611e0157600080fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015491509150915091565b600d60009054906101000a900460ff1681565b600381815481101515611eb257fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60085481565b600d60019054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f5e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611f9a57600080fd5b60038054806001018281611fae91906129ee565b9160005260206000209001600084909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060019050919050565b60006003600581111561201557fe5b600d60009054906101000a900460ff16600581111561203057fe5b14905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561209357600080fd5b600090505b82518110156120e6576120d983828151811015156120b257fe5b9060200190602002015183838151811015156120ca57fe5b9060200190602002015161160d565b8080600101915050612098565b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561214657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561218257600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561229e57600080fd5b6000831115156122ad57600080fd5b601260ff16600a0a830290506122c1611b08565b811015156122ce57600080fd5b6122da846000836125a2565b6122e3816128aa565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ff370ff51765588b4b12b4ccf319b865dd3499a57df818acfe82c2740e41c878d600084604051808381526020018281526020019250505060405180910390a3600191505092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060065461239083611929565b109050919050565b6000600160038111156123a757fe5b600d60019054906101000a900460ff1660038111156123c257fe5b14905090565b600080600a8054905014156123e0576000905061248e565b8173ffffffffffffffffffffffffffffffffffffffff16600a600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015481548110151561244857fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161490505b919050565b600061249d612398565b80156124ae57506124ad836123c8565b5b1561254c57600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612543600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101548401611929565b1115905061259c565b612599600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101548301612382565b90505b92915050565b6125ab836128c8565b151561265d576001600c80548060010182816125c791906129ee565b9160005260206000209001600086909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555003600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055505b6126b281600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461299390919063ffffffff16565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061274d82600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461299390919063ffffffff16565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505050565b600080600060038054905011156128a55760016127b96003805490506129b1565b0391506003828154811015156127cb57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050151561283957600080fd5b7f35c019e24e057e2b74358b61c59c75be70dc488b1c5f97fd5b9dfe58f6df04e88184604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b505050565b6128bf8160055461299390919063ffffffff16565b60058190555050565b600080600c8054905014156128e0576000905061298e565b8173ffffffffffffffffffffffffffffffffffffffff16600c600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015481548110151561294857fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161490505b919050565b60008082840190508381101515156129a757fe5b8091505092915050565b600060018260014303406040518082600019166000191681526020019150506040518091039020600190048115156129e557fe5b06019050919050565b815481835581811511612a1557818360005260206000209182019101612a149190612a1a565b5b505050565b612a3c91905b80821115612a38576000816000905550600101612a20565b5090565b905600a165627a7a7230582031f0f524ada83e60eaa8366139b70f02d7ec18aa896b88952e26028c5978748a0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000fb2f26f266fb2805a387230f2aa0a331b4d96fba0000000000000000000000000000000000000000000000000000000000989680
-----Decoded View---------------
Arg [0] : _token (address): 0xFb2f26F266Fb2805a387230f2aa0a331b4d96Fba
Arg [1] : _tokenSupply (uint256): 10000000
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000fb2f26f266fb2805a387230f2aa0a331b4d96fba
Arg [1] : 0000000000000000000000000000000000000000000000000000000000989680
Swarm Source
bzzr://31f0f524ada83e60eaa8366139b70f02d7ec18aa896b88952e26028c5978748a
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.