Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 226 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
End Sale | 6615143 | 2287 days ago | IN | 0 ETH | 0.00052221 | ||||
Transfer | 6610922 | 2287 days ago | IN | 25.21843202 ETH | 0.00576714 | ||||
Transfer | 6610557 | 2287 days ago | IN | 2 ETH | 0.00455587 | ||||
Transfer | 6609930 | 2287 days ago | IN | 10.985039 ETH | 0.00455587 | ||||
Transfer | 6609791 | 2287 days ago | IN | 4.01 ETH | 0.00527273 | ||||
Transfer | 6609752 | 2287 days ago | IN | 10 ETH | 0.00480595 | ||||
Transfer | 6609194 | 2288 days ago | IN | 4.57417333 ETH | 0.00777833 | ||||
Transfer | 6608836 | 2288 days ago | IN | 4.59263555 ETH | 0.00203921 | ||||
Add Many To Whit... | 6608592 | 2288 days ago | IN | 0 ETH | 0.00201234 | ||||
Transfer | 6604819 | 2288 days ago | IN | 1 ETH | 0.00146014 | ||||
Transfer | 6604218 | 2288 days ago | IN | 11.5 ETH | 0.00486714 | ||||
Transfer | 6603275 | 2289 days ago | IN | 4 ETH | 0.00666714 | ||||
Add Many To Whit... | 6603137 | 2289 days ago | IN | 0 ETH | 0.00548153 | ||||
Transfer | 6596239 | 2290 days ago | IN | 3.5 ETH | 0.00332587 | ||||
Transfer | 6589265 | 2291 days ago | IN | 2.8 ETH | 0.00455587 | ||||
Transfer | 6589081 | 2291 days ago | IN | 2.8 ETH | 0.000861 | ||||
Transfer | 6586952 | 2291 days ago | IN | 1 ETH | 0.00666714 | ||||
Transfer | 6586923 | 2291 days ago | IN | 1 ETH | 0.000861 | ||||
Transfer | 6586818 | 2291 days ago | IN | 0.55450959 ETH | 0.00088895 | ||||
Transfer | 6586239 | 2291 days ago | IN | 4 ETH | 0.00100007 | ||||
Transfer | 6584110 | 2292 days ago | IN | 1 ETH | 0.00300021 | ||||
Transfer | 6581060 | 2292 days ago | IN | 1.04 ETH | 0.00576714 | ||||
Transfer | 6580969 | 2292 days ago | IN | 29 ETH | 0.00486714 | ||||
Add Many To Whit... | 6580753 | 2292 days ago | IN | 0 ETH | 0.00275019 | ||||
Transfer | 6579417 | 2292 days ago | IN | 1 ETH | 0.00666714 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
6610922 | 2287 days ago | 25.21843202 ETH | ||||
6610557 | 2287 days ago | 2 ETH | ||||
6609930 | 2287 days ago | 10.985039 ETH | ||||
6609791 | 2287 days ago | 4.01 ETH | ||||
6609752 | 2287 days ago | 10 ETH | ||||
6609194 | 2288 days ago | 4.57417333 ETH | ||||
6604819 | 2288 days ago | 1 ETH | ||||
6604218 | 2288 days ago | 11.5 ETH | ||||
6603275 | 2289 days ago | 4 ETH | ||||
6596239 | 2290 days ago | 3.5 ETH | ||||
6589265 | 2291 days ago | 2.8 ETH | ||||
6586952 | 2291 days ago | 1 ETH | ||||
6586818 | 2291 days ago | 0.55450959 ETH | ||||
6586239 | 2291 days ago | 4 ETH | ||||
6584110 | 2292 days ago | 1 ETH | ||||
6581060 | 2292 days ago | 1.04 ETH | ||||
6580969 | 2292 days ago | 29 ETH | ||||
6579417 | 2292 days ago | 1 ETH | ||||
6573921 | 2293 days ago | 0.479 ETH | ||||
6573745 | 2293 days ago | 1.6 ETH | ||||
6572383 | 2294 days ago | 4 ETH | ||||
6572059 | 2294 days ago | 20 ETH | ||||
6571977 | 2294 days ago | 8 ETH | ||||
6571730 | 2294 days ago | 1.5 ETH | ||||
6570287 | 2294 days ago | 0.5 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
CloudbricSale
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-08-21 */ pragma solidity ^0.4.18; /** * @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) public onlyOwner { require(newOwner != address(0)); OwnershipTransferred(owner, newOwner); owner = newOwner; } } /** * @title Pausable * @dev Base contract which allows children to implement an emergency stop mechanism. */ contract Pausable is Ownable { event Pause(); event Unpause(); bool public paused = false; /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier whenNotPaused() { require(!paused); _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier whenPaused() { require(paused); _; } /** * @dev called by the owner to pause, triggers stopped state */ function pause() onlyOwner whenNotPaused public { paused = true; Pause(); } /** * @dev called by the owner to unpause, returns to normal state */ function unpause() onlyOwner whenPaused public { paused = false; Unpause(); } } /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/179 */ contract ERC20Basic { function totalSupply() public view returns (uint256); function balanceOf(address who) public view returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ contract ERC20 is ERC20Basic { function allowance(address owner, address spender) public view 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 Basic token * @dev Basic version of StandardToken, with no allowances. */ contract BasicToken is ERC20Basic { using SafeMath for uint256; mapping(address => uint256) balances; uint256 totalSupply_; /** * @dev total number of tokens in existence */ function totalSupply() public view returns (uint256) { return totalSupply_; } /** * @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)); require(_value <= balances[msg.sender]); // 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 view returns (uint256 balance) { return balances[_owner]; } } /** * @title Burnable Token * @dev Token that can be irreversibly burned (destroyed). */ contract BurnableToken is BasicToken { event Burn(address indexed burner, uint256 value); /** * @dev Burns a specific amount of tokens. * @param _value The amount of token to be burned. */ function burn(uint256 _value) public { require(_value <= balances[msg.sender]); // no need to require value <= totalSupply, since that would imply the // sender's balance is greater than the totalSupply, which *should* be an assertion failure address burner = msg.sender; balances[burner] = balances[burner].sub(_value); totalSupply_ = totalSupply_.sub(_value); Burn(burner, _value); Transfer(burner, address(0), _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)) internal 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)); require(_value <= balances[_from]); require(_value <= allowed[_from][msg.sender]); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = allowed[_from][msg.sender].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 view returns (uint256) { return allowed[_owner][_spender]; } /** * @dev Increase the amount of tokens that an owner allowed to a 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 * @param _spender The address which will spend the funds. * @param _addedValue The amount of tokens to increase the allowance by. */ function increaseApproval(address _spender, uint _addedValue) public returns (bool) { allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue); Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } /** * @dev Decrease the amount of tokens that an owner allowed to a spender. * * approve should be called when allowed[_spender] == 0. To decrement * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _subtractedValue The amount of tokens to decrease the allowance by. */ function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) { 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; } } contract Cloudbric is StandardToken, BurnableToken, Ownable { using SafeMath for uint256; string public constant symbol = "CLB"; string public constant name = "Cloudbric"; uint8 public constant decimals = 18; uint256 public constant INITIAL_SUPPLY = 1000000000 * (10 ** uint256(decimals)); uint256 public constant TOKEN_SALE_ALLOWANCE = 540000000 * (10 ** uint256(decimals)); uint256 public constant ADMIN_ALLOWANCE = INITIAL_SUPPLY - TOKEN_SALE_ALLOWANCE; // Address of token administrator address public adminAddr; // Address of token sale contract address public tokenSaleAddr; // Enable transfer after token sale is completed bool public transferEnabled = false; // Accounts to be locked for certain period mapping(address => uint256) private lockedAccounts; /* * * Permissions when transferEnabled is false : * ContractOwner Admin SaleContract Others * transfer x v v x * transferFrom x v v x * * Permissions when transferEnabled is true : * ContractOwner Admin SaleContract Others * transfer v v v v * transferFrom v v v v * */ /* * Check if token transfer is allowed * Permission table above is result of this modifier */ modifier onlyWhenTransferAllowed() { require(transferEnabled == true || msg.sender == adminAddr || msg.sender == tokenSaleAddr); _; } /* * Check if token sale address is not set */ modifier onlyWhenTokenSaleAddrNotSet() { require(tokenSaleAddr == address(0x0)); _; } /* * Check if token transfer destination is valid */ modifier onlyValidDestination(address to) { require(to != address(0x0) && to != address(this) && to != owner && to != adminAddr && to != tokenSaleAddr); _; } modifier onlyAllowedAmount(address from, uint256 amount) { require(balances[from].sub(amount) >= lockedAccounts[from]); _; } /* * The constructor of Cloudbric contract * * @param _adminAddr: Address of token administrator */ function Cloudbric(address _adminAddr) public { totalSupply_ = INITIAL_SUPPLY; balances[msg.sender] = totalSupply_; Transfer(address(0x0), msg.sender, totalSupply_); adminAddr = _adminAddr; approve(adminAddr, ADMIN_ALLOWANCE); } /* * Set amount of token sale to approve allowance for sale contract * * @param _tokenSaleAddr: Address of sale contract * @param _amountForSale: Amount of token for sale */ function setTokenSaleAmount(address _tokenSaleAddr, uint256 amountForSale) external onlyOwner onlyWhenTokenSaleAddrNotSet { require(!transferEnabled); uint256 amount = (amountForSale == 0) ? TOKEN_SALE_ALLOWANCE : amountForSale; require(amount <= TOKEN_SALE_ALLOWANCE); approve(_tokenSaleAddr, amount); tokenSaleAddr = _tokenSaleAddr; } /* * Set transferEnabled variable to true */ function enableTransfer() external onlyOwner { transferEnabled = true; approve(tokenSaleAddr, 0); } /* * Set transferEnabled variable to false */ function disableTransfer() external onlyOwner { transferEnabled = false; } /* * Transfer token from message sender to another * * @param to: Destination address * @param value: Amount of AMO token to transfer */ function transfer(address to, uint256 value) public onlyWhenTransferAllowed onlyValidDestination(to) onlyAllowedAmount(msg.sender, value) returns (bool) { return super.transfer(to, value); } /* * Transfer token from 'from' address to 'to' addreess * * @param from: Origin address * @param to: Destination address * @param value: Amount of tokens to transfer */ function transferFrom(address from, address to, uint256 value) public onlyWhenTransferAllowed onlyValidDestination(to) onlyAllowedAmount(from, value) returns (bool) { return super.transferFrom(from, to, value); } /* * Burn token, only owner is allowed * * @param value: Amount of tokens to burn */ function burn(uint256 value) public onlyOwner { require(transferEnabled); super.burn(value); } /* * Disable transfering tokens more than allowed amount from certain account * * @param addr: Account to set allowed amount * @param amount: Amount of tokens to allow */ function lockAccount(address addr, uint256 amount) external onlyOwner onlyValidDestination(addr) { require(amount > 0); lockedAccounts[addr] = amount; } /* * Enable transfering tokens of locked account * * @param addr: Account to unlock */ function unlockAccount(address addr) external onlyOwner onlyValidDestination(addr) { lockedAccounts[addr] = 0; } } contract CloudbricSale is Pausable { using SafeMath for uint256; // Start time of sale uint256 public startTime; // End time of sale uint256 public endTime; // Address to collect fund address private fundAddr; // Token contract instance Cloudbric public token; // Amount of raised in Wei (1 ether) uint256 public totalWeiRaised; // Base hard cap for each round in ether uint256 public constant BASE_HARD_CAP_PER_ROUND = 20000 * 1 ether; uint256 public constant UINT256_MAX = ~uint256(0); // Base CLB to Ether rate uint256 public constant BASE_CLB_TO_ETH_RATE = 10000; // Base minimum contribution uint256 public constant BASE_MIN_CONTRIBUTION = 0.1 * 1 ether; // Whitelisted addresses mapping(address => bool) public whitelist; // Whitelisted users' contributions per round mapping(address => mapping(uint8 => uint256)) public contPerRound; // For each round, there are three stages. enum Stages { SetUp, Started, Ended } // The current stage of the sale Stages public stage; // There are three rounds in sale enum SaleRounds { EarlyInvestment, PreSale1, PreSale2, CrowdSale } // The current round of the sale SaleRounds public round; // Each round has different inforamation struct RoundInfo { uint256 minContribution; uint256 maxContribution; uint256 hardCap; uint256 rate; uint256 weiRaised; } // SaleRounds(key) : RoundInfo(value) map // Since solidity does not support enum as key of map, converted enum to uint8 mapping(uint8 => RoundInfo) public roundInfos; struct AllocationInfo { bool isAllowed; uint256 allowedAmount; } // List of users who will be allocated tokens and their allowed amount mapping(address => AllocationInfo) private allocationList; /* * Event for sale start logging * * @param startTime: Start date of sale * @param endTime: End date of sale * @param round: Round of sale started */ event SaleStarted(uint256 startTime, uint256 endTime, SaleRounds round); /* * Event for sale end logging * * @param endTime: End date of sale * @param totalWeiRaised: Total amount of raised in Wei after sale ended * @param round: Round of sale ended */ event SaleEnded(uint256 endTime, uint256 totalWeiRaised, SaleRounds round); /* * Event for token purchase * * @param purchaser: Who paid for the tokens * @param value: Amount in Wei paid for purchase * @param amount: Amount of tokens purchased */ event TokenPurchase(address indexed purchaser, uint256 value, uint256 amount); /* * Modifier to check current stage is same as expected stage * * @param expectedStage: Expected current stage */ modifier atStage(Stages expectedStage) { require(stage == expectedStage); _; } /* * Modifier to check current round is sane as expected round * * @param expectedRound: Expected current round */ modifier atRound(SaleRounds expectedRound) { require(round == expectedRound); _; } /* * Modifier to check purchase is valid * * 1. Current round must be smaller than CrowdSale * 2. Current time must be within sale period * 3. Purchaser must be enrolled to whitelist * 4. Purchaser address must be correct * 5. Contribution must be bigger than minimum contribution for current round * 6. Sum of contributions must be smaller than max contribution for current round * 7. Total funds raised in current round must be smaller than hard cap for current round */ modifier onlyValidPurchase() { require(round <= SaleRounds.CrowdSale); require(now >= startTime && now <= endTime); uint256 contributionInWei = msg.value; address purchaser = msg.sender; require(whitelist[purchaser]); require(purchaser != address(0)); require(contributionInWei >= roundInfos[uint8(round)].minContribution); require( contPerRound[purchaser][uint8(round)].add(contributionInWei) <= roundInfos[uint8(round)].maxContribution ); require( roundInfos[uint8(round)].weiRaised.add(contributionInWei) <= roundInfos[uint8(round)].hardCap ); _; } /* * Constructor for CloudbricSale contract * * @param fundAddress: Address where funds are collected * @param tokenAddress: Address of Cloudbric Token Contract */ function CloudbricSale( address fundAddress, address tokenAddress ) public { require(fundAddress != address(0)); require(tokenAddress != address(0)); token = Cloudbric(tokenAddress); fundAddr = fundAddress; stage = Stages.Ended; round = SaleRounds.EarlyInvestment; uint8 roundIndex = uint8(round); roundInfos[roundIndex].minContribution = BASE_MIN_CONTRIBUTION; roundInfos[roundIndex].maxContribution = UINT256_MAX; roundInfos[roundIndex].hardCap = BASE_HARD_CAP_PER_ROUND; roundInfos[roundIndex].weiRaised = 0; roundInfos[roundIndex].rate = BASE_CLB_TO_ETH_RATE; } /* * Fallback function to buy Cloudbric tokens */ function () public payable { buy(); } /* * Withdraw ethers to fund address */ function withdraw() external onlyOwner { fundAddr.transfer(this.balance); } /* * Add users to whitelist * Whitelisted users are accumulated on each round * * @param users: Addresses of users who passed KYC */ function addManyToWhitelist(address[] users) external onlyOwner { for (uint32 i = 0; i < users.length; i++) { addToWhitelist(users[i]); } } /* * Add one user to whitelist * * @param user: Address of user who passed KYC */ function addToWhitelist(address user) public onlyOwner { whitelist[user] = true; } /* * Remove users from whitelist * * @param users: Addresses of users who should not belong to whitelist */ function removeManyFromWhitelist(address[] users) external onlyOwner { for (uint32 i = 0; i < users.length; i++) { removeFromWhitelist(users[i]); } } /* * Remove users from whitelist * * @param users: Addresses of users who should not belong to whitelist */ function removeFromWhitelist(address user) public onlyOwner { whitelist[user] = false; } /* * Set minimum contribution for round * User have to send more ether than minimum contribution * * @param _round: Round to set * @param _minContribution: Minimum contribution in wei */ function setMinContributionForRound( SaleRounds _round, uint256 _minContribution ) public onlyOwner atStage(Stages.SetUp) { require(round <= _round); roundInfos[uint8(_round)].minContribution = (_minContribution == 0) ? BASE_MIN_CONTRIBUTION : _minContribution; } /* * Set max contribution for round * User can't send more ether than the max contributions in round * * @param _round: Round to set * @param _maxContribution: Max contribution in wei */ function setMaxContributionForRound( SaleRounds _round, uint256 _maxContribution ) public onlyOwner atStage(Stages.SetUp) { require(round <= _round); roundInfos[uint8(_round)].maxContribution = (_maxContribution == 0) ? UINT256_MAX : _maxContribution; } /* * Set hard cap for round * Total wei raised in round should be smaller than hard cap * * @param _round: Round to set * @param _hardCap: Hard cap in wei */ function setHardCapForRound( SaleRounds _round, uint256 _hardCap ) public onlyOwner atStage(Stages.SetUp) { require(round <= _round); roundInfos[uint8(_round)].hardCap = (_hardCap == 0) ? BASE_HARD_CAP_PER_ROUND : _hardCap; } /* * Set CLB to Ether rate for round * * @param _round: Round to set * @param _rate: CLB to Ether rate */ function setRateForRound( SaleRounds _round, uint256 _rate ) public onlyOwner atStage(Stages.SetUp) { require(round <= _round); roundInfos[uint8(_round)].rate = (_rate == 0) ? BASE_CLB_TO_ETH_RATE : _rate; } /* * Set up several information for next round * Only owner can call this method */ function setUpSale( SaleRounds _round, uint256 _minContribution, uint256 _maxContribution, uint256 _hardCap, uint256 _rate ) external onlyOwner atStage(Stages.Ended) { require(round <= _round); stage = Stages.SetUp; round = _round; setMinContributionForRound(_round, _minContribution); setMaxContributionForRound(_round, _maxContribution); setHardCapForRound(_round, _hardCap); setRateForRound(_round, _rate); } /* * Start sale in current round */ function startSale(uint256 durationInSeconds) external onlyOwner atStage(Stages.SetUp) { require(roundInfos[uint8(round)].minContribution > 0 && roundInfos[uint8(round)].hardCap > 0); stage = Stages.Started; startTime = now; endTime = startTime.add(durationInSeconds); SaleStarted(startTime, endTime, round); } /* * End sale in crrent round */ function endSale() external onlyOwner atStage(Stages.Started) { endTime = now; stage = Stages.Ended; SaleEnded(endTime, totalWeiRaised, round); } function buy() public payable whenNotPaused atStage(Stages.Started) onlyValidPurchase() returns (bool) { address purchaser = msg.sender; uint256 contributionInWei = msg.value; uint256 tokenAmount = contributionInWei.mul(roundInfos[uint8(round)].rate); if (!token.transferFrom(token.owner(), purchaser, tokenAmount)) { revert(); } totalWeiRaised = totalWeiRaised.add(contributionInWei); roundInfos[uint8(round)].weiRaised = roundInfos[uint8(round)].weiRaised.add(contributionInWei); contPerRound[purchaser][uint8(round)] = contPerRound[purchaser][uint8(round)].add(contributionInWei); // Transfer contributions to fund address fundAddr.transfer(contributionInWei); TokenPurchase(msg.sender, contributionInWei, tokenAmount); return true; } /* * Add user and his allowed amount to allocation list * * @param user: Address of user to be allocated tokens * @param amount: Allowed allocation amount of user */ function addToAllocationList(address user, uint256 amount) public onlyOwner atRound(SaleRounds.EarlyInvestment) { allocationList[user].isAllowed = true; allocationList[user].allowedAmount = amount; } /* * Add users and their allowed amount to allocation list * * @param users: List of Address to be allocated tokens * @param amount: List of allowed allocation amount of each user */ function addManyToAllocationList(address[] users, uint256[] amounts) external onlyOwner atRound(SaleRounds.EarlyInvestment) { require(users.length == amounts.length); for (uint32 i = 0; i < users.length; i++) { addToAllocationList(users[i], amounts[i]); } } /* * Remove user from allocation list * * @param user: Address of user to be removed */ function removeFromAllocationList(address user) public onlyOwner atRound(SaleRounds.EarlyInvestment) { allocationList[user].isAllowed = false; } /* * Remove users from allocation list * * @param user: Address list of users to be removed */ function removeManyFromAllocationList(address[] users) external onlyOwner atRound(SaleRounds.EarlyInvestment) { for (uint32 i = 0; i < users.length; i++) { removeFromAllocationList(users[i]); } } /* * Allocate tokens to user * Only avaliable on early investment * * @param to: Address of user to be allocated tokens * @param tokenAmount: Amount of tokens to be allocated */ function allocateTokens(address to, uint256 tokenAmount) public onlyOwner atRound(SaleRounds.EarlyInvestment) returns (bool) { require(allocationList[to].isAllowed && tokenAmount <= allocationList[to].allowedAmount); if (!token.transferFrom(token.owner(), to, tokenAmount)) { revert(); } return true; } /* * Allocate tokens to user * Only avaliable on early investment * * @param toList: List of addresses to be allocated tokens * @param tokenAmountList: List of token amount to be allocated to each address */ function allocateTokensToMany(address[] toList, uint256[] tokenAmountList) external onlyOwner atRound(SaleRounds.EarlyInvestment) returns (bool) { require(toList.length == tokenAmountList.length); for (uint32 i = 0; i < toList.length; i++) { allocateTokens(toList[i], tokenAmountList[i]); } return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"BASE_MIN_CONTRIBUTION","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_round","type":"uint8"},{"name":"_maxContribution","type":"uint256"}],"name":"setMaxContributionForRound","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"durationInSeconds","type":"uint256"}],"name":"startSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"}],"name":"removeFromAllocationList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"round","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_round","type":"uint8"},{"name":"_rate","type":"uint256"}],"name":"setRateForRound","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"users","type":"address[]"}],"name":"removeManyFromAllocationList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"endSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_round","type":"uint8"},{"name":"_hardCap","type":"uint256"}],"name":"setHardCapForRound","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalWeiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint8"}],"name":"roundInfos","outputs":[{"name":"minContribution","type":"uint256"},{"name":"maxContribution","type":"uint256"},{"name":"hardCap","type":"uint256"},{"name":"rate","type":"uint256"},{"name":"weiRaised","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"toList","type":"address[]"},{"name":"tokenAmountList","type":"uint256[]"}],"name":"allocateTokensToMany","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"users","type":"address[]"},{"name":"amounts","type":"uint256[]"}],"name":"addManyToAllocationList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_round","type":"uint8"},{"name":"_minContribution","type":"uint256"},{"name":"_maxContribution","type":"uint256"},{"name":"_hardCap","type":"uint256"},{"name":"_rate","type":"uint256"}],"name":"setUpSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"tokenAmount","type":"uint256"}],"name":"allocateTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"}],"name":"removeFromWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"users","type":"address[]"}],"name":"addManyToWhitelist","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":"","type":"address"}],"name":"whitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"},{"name":"amount","type":"uint256"}],"name":"addToAllocationList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stage","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BASE_HARD_CAP_PER_ROUND","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"UINT256_MAX","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_round","type":"uint8"},{"name":"_minContribution","type":"uint256"}],"name":"setMinContributionForRound","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"}],"name":"addToWhitelist","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":"users","type":"address[]"}],"name":"removeManyFromWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint8"}],"name":"contPerRound","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BASE_CLB_TO_ETH_RATE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"fundAddress","type":"address"},{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"startTime","type":"uint256"},{"indexed":false,"name":"endTime","type":"uint256"},{"indexed":false,"name":"round","type":"uint8"}],"name":"SaleStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"endTime","type":"uint256"},{"indexed":false,"name":"totalWeiRaised","type":"uint256"},{"indexed":false,"name":"round","type":"uint8"}],"name":"SaleEnded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
606060405260008060146101000a81548160ff02191690831515021790555034156200002a57600080fd5b60405160408062002cbe833981016040528080519060200190919080519060200190919050506000336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515620000cf57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156200010c57600080fd5b81600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600860006101000a81548160ff02191690836002811115620001ae57fe5b02179055506000600860016101000a81548160ff02191690836003811115620001d357fe5b0217905550600860019054906101000a900460ff166003811115620001f457fe5b905067016345785d8a0000600960008360ff1660ff16815260200190815260200160002060000181905550600019600960008360ff1660ff1681526020019081526020016000206001018190555069043c33c1937564800000600960008360ff1660ff168152602001908152602001600020600201819055506000600960008360ff1660ff16815260200190815260200160002060040181905550612710600960008360ff1660ff168152602001908152602001600020600301819055505050506129f980620002c56000396000f3006060604052600436106101cd576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806304892c9f146101d85780630bee3800146102015780630e3ab61d14610230578063146091f114610253578063146ca5311461028c57806325a1bb47146102c35780632819598d146102f25780633197cbb614610320578063380d831b146103495780633ccfd60b1461035e5780633f4ba83a14610373578063497bf6811461038857806353f4db01146103b757806357738e8f146103e05780635885c626146104365780635b24f87d146104905780635c975abb146104d25780636e5a6d1b146104ff57806378e97925146105495780638456cb591461057257806386ce0285146105875780638ab1d681146105e15780638c10671c1461061a5780638da5cb5b146106485780639b19251a1461069d578063a6f2ae3a146106ee578063ad9ac1bc14610710578063c040e6b814610752578063ce14eeb814610789578063d0949f99146107b2578063e1ab36f0146107db578063e43252d71461080a578063f2fde38b14610843578063f674d7991461087c578063f9810ba5146108aa578063fbfbb62e14610903578063fc0c546a1461092c575b6101d5610981565b50005b34156101e357600080fd5b6101eb6110db565b6040518082815260200191505060405180910390f35b341561020c57600080fd5b61022e600480803560ff169060200190919080359060200190919050506110e7565b005b341561023b57600080fd5b61025160048080359060200190919050506111ed565b005b341561025e57600080fd5b61028a600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506113b6565b005b341561029757600080fd5b61029f6114a5565b604051808260038111156102af57fe5b60ff16815260200191505060405180910390f35b34156102ce57600080fd5b6102f0600480803560ff169060200190919080359060200190919050506114b8565b005b34156102fd57600080fd5b61031e600480803590602001908201803590602001919091929050506115be565b005b341561032b57600080fd5b6103336116b2565b6040518082815260200191505060405180910390f35b341561035457600080fd5b61035c6116b8565b005b341561036957600080fd5b6103716117de565b005b341561037e57600080fd5b6103866118b4565b005b341561039357600080fd5b6103b5600480803560ff16906020019091908035906020019091905050611972565b005b34156103c257600080fd5b6103ca611a80565b6040518082815260200191505060405180910390f35b34156103eb57600080fd5b610404600480803560ff16906020019091905050611a86565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b341561044157600080fd5b610476600480803590602001908201803590602001919091929080359060200190820180359060200191909192905050611abc565b604051808215151515815260200191505060405180910390f35b341561049b57600080fd5b6104d0600480803590602001908201803590602001919091929080359060200190820180359060200191909192905050611be9565b005b34156104dd57600080fd5b6104e5611d0e565b604051808215151515815260200191505060405180910390f35b341561050a57600080fd5b610547600480803560ff16906020019091908035906020019091908035906020019091908035906020019091908035906020019091905050611d21565b005b341561055457600080fd5b61055c611e5c565b6040518082815260200191505060405180910390f35b341561057d57600080fd5b610585611e62565b005b341561059257600080fd5b6105c7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611f22565b604051808215151515815260200191505060405180910390f35b34156105ec57600080fd5b610618600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612237565b005b341561062557600080fd5b610646600480803590602001908201803590602001919091929050506122ed565b005b341561065357600080fd5b61065b6123ab565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106a857600080fd5b6106d4600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506123d0565b604051808215151515815260200191505060405180910390f35b6106f6610981565b604051808215151515815260200191505060405180910390f35b341561071b57600080fd5b610750600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506123f0565b005b341561075d57600080fd5b610765612527565b6040518082600281111561077557fe5b60ff16815260200191505060405180910390f35b341561079457600080fd5b61079c61253a565b6040518082815260200191505060405180910390f35b34156107bd57600080fd5b6107c5612548565b6040518082815260200191505060405180910390f35b34156107e657600080fd5b610808600480803560ff1690602001909190803590602001909190505061254e565b005b341561081557600080fd5b610841600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061265a565b005b341561084e57600080fd5b61087a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612710565b005b341561088757600080fd5b6108a860048080359060200190820180359060200191909192905050612865565b005b34156108b557600080fd5b6108ed600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091905050612923565b6040518082815260200191505060405180910390f35b341561090e57600080fd5b610916612948565b6040518082815260200191505060405180910390f35b341561093757600080fd5b61093f61294e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600080600080600060149054906101000a900460ff161515156109a357600080fd5b60018060028111156109b157fe5b600860009054906101000a900460ff1660028111156109cc57fe5b1415156109d857600080fd5b6000806003808111156109e757fe5b600860019054906101000a900460ff166003811115610a0257fe5b11151515610a0f57600080fd5b6001544210158015610a2357506002544211155b1515610a2e57600080fd5b349150339050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610a8c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610ac857600080fd5b60096000600860019054906101000a900460ff166003811115610ae757fe5b60ff1660ff168152602001908152602001600020600001548210151515610b0d57600080fd5b60096000600860019054906101000a900460ff166003811115610b2c57fe5b60ff1660ff16815260200190815260200160002060010154610bc783600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600860019054906101000a900460ff166003811115610ba457fe5b60ff1660ff1681526020019081526020016000205461297490919063ffffffff16565b11151515610bd457600080fd5b60096000600860019054906101000a900460ff166003811115610bf357fe5b60ff1660ff16815260200190815260200160002060020154610c548360096000600860019054906101000a900460ff166003811115610c2e57fe5b60ff1660ff1681526020019081526020016000206004015461297490919063ffffffff16565b11151515610c6157600080fd5b339550349450610cb060096000600860019054906101000a900460ff166003811115610c8957fe5b60ff1660ff168152602001908152602001600020600301548661299290919063ffffffff16565b9350600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610d7e57600080fd5b6102c65a03f11515610d8f57600080fd5b5050506040518051905088876000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1515610e5b57600080fd5b6102c65a03f11515610e6c57600080fd5b505050604051805190501515610e8157600080fd5b610e968560055461297490919063ffffffff16565b600581905550610ee58560096000600860019054906101000a900460ff166003811115610ebf57fe5b60ff1660ff1681526020019081526020016000206004015461297490919063ffffffff16565b60096000600860019054906101000a900460ff166003811115610f0457fe5b60ff1660ff16815260200190815260200160002060040181905550610fa285600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600860019054906101000a900460ff166003811115610f7f57fe5b60ff1660ff1681526020019081526020016000205461297490919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600860019054906101000a900460ff166003811115610ffe57fe5b60ff1660ff16815260200190815260200160002081905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f19350505050151561107857600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167fcd60aa75dea3072fbc07ae6d7d856b5dc5f4eee88854f5b4abf7b680ef8bc50f8686604051808381526020018281526020019250505060405180910390a26001965050505050505090565b67016345785d8a000081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561114257600080fd5b600080600281111561115057fe5b600860009054906101000a900460ff16600281111561116b57fe5b14151561117757600080fd5b82600381111561118357fe5b600860019054906101000a900460ff16600381111561119e57fe5b111515156111ab57600080fd5b600082146111b957816111bd565b6000195b600960008560038111156111cd57fe5b60ff1660ff16815260200190815260200160002060010181905550505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561124857600080fd5b600080600281111561125657fe5b600860009054906101000a900460ff16600281111561127157fe5b14151561127d57600080fd5b600060096000600860019054906101000a900460ff16600381111561129e57fe5b60ff1660ff168152602001908152602001600020600001541180156112f95750600060096000600860019054906101000a900460ff1660038111156112df57fe5b60ff1660ff16815260200190815260200160002060020154115b151561130457600080fd5b6001600860006101000a81548160ff0219169083600281111561132357fe5b0217905550426001819055506113448260015461297490919063ffffffff16565b6002819055507fa16b9341b2bb91f44d120a07517e11fcd77857ad47263a1659b59223276fc475600154600254600860019054906101000a900460ff166040518084815260200183815260200182600381111561139d57fe5b60ff168152602001935050505060405180910390a15050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561141157600080fd5b600080600381111561141f57fe5b600860019054906101000a900460ff16600381111561143a57fe5b14151561144657600080fd5b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083151502179055505050565b600860019054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561151357600080fd5b600080600281111561152157fe5b600860009054906101000a900460ff16600281111561153c57fe5b14151561154857600080fd5b82600381111561155457fe5b600860019054906101000a900460ff16600381111561156f57fe5b1115151561157c57600080fd5b6000821461158a578161158e565b6127105b6009600085600381111561159e57fe5b60ff1660ff16815260200190815260200160002060030181905550505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561161b57600080fd5b600080600381111561162957fe5b600860019054906101000a900460ff16600381111561164457fe5b14151561165057600080fd5b600091505b838390508263ffffffff1610156116ac5761169f84848463ffffffff16818110151561167d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166113b6565b8180600101925050611655565b50505050565b60025481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561171357600080fd5b600180600281111561172157fe5b600860009054906101000a900460ff16600281111561173c57fe5b14151561174857600080fd5b426002819055506002600860006101000a81548160ff0219169083600281111561176e57fe5b02179055507f91c0395cbf43e0c73c36b85814d72a8d148e5ca8cd293b143146a7457de94369600254600554600860019054906101000a900460ff16604051808481526020018381526020018260038111156117c657fe5b60ff168152602001935050505060405180910390a150565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561183957600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015156118b257600080fd5b565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561190f57600080fd5b600060149054906101000a900460ff16151561192a57600080fd5b60008060146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119cd57600080fd5b60008060028111156119db57fe5b600860009054906101000a900460ff1660028111156119f657fe5b141515611a0257600080fd5b826003811115611a0e57fe5b600860019054906101000a900460ff166003811115611a2957fe5b11151515611a3657600080fd5b60008214611a445781611a50565b69043c33c19375648000005b60096000856003811115611a6057fe5b60ff1660ff16815260200190815260200160002060020181905550505050565b60055481565b60096020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154905085565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b1a57600080fd5b6000806003811115611b2857fe5b600860019054906101000a900460ff166003811115611b4357fe5b141515611b4f57600080fd5b8484905087879050141515611b6357600080fd5b600091505b868690508263ffffffff161015611bdb57611bcd87878463ffffffff168181101515611b9057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1686868563ffffffff168181101515611bc157fe5b90506020020135611f22565b508180600101925050611b68565b600192505050949350505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c4657600080fd5b6000806003811115611c5457fe5b600860019054906101000a900460ff166003811115611c6f57fe5b141515611c7b57600080fd5b8383905086869050141515611c8f57600080fd5b600091505b858590508263ffffffff161015611d0657611cf986868463ffffffff168181101515611cbc57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1685858563ffffffff168181101515611ced57fe5b905060200201356123f0565b8180600101925050611c94565b505050505050565b600060149054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d7c57600080fd5b6002806002811115611d8a57fe5b600860009054906101000a900460ff166002811115611da557fe5b141515611db157600080fd5b856003811115611dbd57fe5b600860019054906101000a900460ff166003811115611dd857fe5b11151515611de557600080fd5b6000600860006101000a81548160ff02191690836002811115611e0457fe5b021790555085600860016101000a81548160ff02191690836003811115611e2757fe5b0217905550611e36868661254e565b611e4086856110e7565b611e4a8684611972565b611e5486836114b8565b505050505050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ebd57600080fd5b600060149054906101000a900460ff16151515611ed957600080fd5b6001600060146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f7f57600080fd5b6000806003811115611f8d57fe5b600860019054906101000a900460ff166003811115611fa857fe5b141515611fb457600080fd5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1680156120525750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101548311155b151561205d57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561212957600080fd5b6102c65a03f1151561213a57600080fd5b5050506040518051905086866000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b151561220657600080fd5b6102c65a03f1151561221757600080fd5b50505060405180519050151561222c57600080fd5b600191505092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561229257600080fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561234a57600080fd5b600090505b828290508163ffffffff1610156123a65761239983838363ffffffff16818110151561237757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1661265a565b808060010191505061234f565b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561244b57600080fd5b600080600381111561245957fe5b600860019054906101000a900460ff16600381111561247457fe5b14151561248057600080fd5b6001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690831515021790555081600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505050565b600860009054906101000a900460ff1681565b69043c33c193756480000081565b60001981565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156125a957600080fd5b60008060028111156125b757fe5b600860009054906101000a900460ff1660028111156125d257fe5b1415156125de57600080fd5b8260038111156125ea57fe5b600860019054906101000a900460ff16600381111561260557fe5b1115151561261257600080fd5b60008214612620578161262a565b67016345785d8a00005b6009600085600381111561263a57fe5b60ff1660ff16815260200190815260200160002060000181905550505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156126b557600080fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561276b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156127a757600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156128c257600080fd5b600090505b828290508163ffffffff16101561291e5761291183838363ffffffff1681811015156128ef57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16612237565b80806001019150506128c7565b505050565b6007602052816000526040600020602052806000526040600020600091509150505481565b61271081565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080828401905083811015151561298857fe5b8091505092915050565b60008060008414156129a757600091506129c6565b82840290508284828115156129b857fe5b041415156129c257fe5b8091505b50929150505600a165627a7a72305820f9b2122d3d272e189b1d1a13827c581afda8a50a5927f275f0c7dd483bf9a5260029000000000000000000000000ce54a3ff220e62e3a7fcd50355941d6a9bc707f4000000000000000000000000b1c1cb8c7c1992dba24e628bf7d38e71dad46aeb
Deployed Bytecode
0x6060604052600436106101cd576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806304892c9f146101d85780630bee3800146102015780630e3ab61d14610230578063146091f114610253578063146ca5311461028c57806325a1bb47146102c35780632819598d146102f25780633197cbb614610320578063380d831b146103495780633ccfd60b1461035e5780633f4ba83a14610373578063497bf6811461038857806353f4db01146103b757806357738e8f146103e05780635885c626146104365780635b24f87d146104905780635c975abb146104d25780636e5a6d1b146104ff57806378e97925146105495780638456cb591461057257806386ce0285146105875780638ab1d681146105e15780638c10671c1461061a5780638da5cb5b146106485780639b19251a1461069d578063a6f2ae3a146106ee578063ad9ac1bc14610710578063c040e6b814610752578063ce14eeb814610789578063d0949f99146107b2578063e1ab36f0146107db578063e43252d71461080a578063f2fde38b14610843578063f674d7991461087c578063f9810ba5146108aa578063fbfbb62e14610903578063fc0c546a1461092c575b6101d5610981565b50005b34156101e357600080fd5b6101eb6110db565b6040518082815260200191505060405180910390f35b341561020c57600080fd5b61022e600480803560ff169060200190919080359060200190919050506110e7565b005b341561023b57600080fd5b61025160048080359060200190919050506111ed565b005b341561025e57600080fd5b61028a600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506113b6565b005b341561029757600080fd5b61029f6114a5565b604051808260038111156102af57fe5b60ff16815260200191505060405180910390f35b34156102ce57600080fd5b6102f0600480803560ff169060200190919080359060200190919050506114b8565b005b34156102fd57600080fd5b61031e600480803590602001908201803590602001919091929050506115be565b005b341561032b57600080fd5b6103336116b2565b6040518082815260200191505060405180910390f35b341561035457600080fd5b61035c6116b8565b005b341561036957600080fd5b6103716117de565b005b341561037e57600080fd5b6103866118b4565b005b341561039357600080fd5b6103b5600480803560ff16906020019091908035906020019091905050611972565b005b34156103c257600080fd5b6103ca611a80565b6040518082815260200191505060405180910390f35b34156103eb57600080fd5b610404600480803560ff16906020019091905050611a86565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b341561044157600080fd5b610476600480803590602001908201803590602001919091929080359060200190820180359060200191909192905050611abc565b604051808215151515815260200191505060405180910390f35b341561049b57600080fd5b6104d0600480803590602001908201803590602001919091929080359060200190820180359060200191909192905050611be9565b005b34156104dd57600080fd5b6104e5611d0e565b604051808215151515815260200191505060405180910390f35b341561050a57600080fd5b610547600480803560ff16906020019091908035906020019091908035906020019091908035906020019091908035906020019091905050611d21565b005b341561055457600080fd5b61055c611e5c565b6040518082815260200191505060405180910390f35b341561057d57600080fd5b610585611e62565b005b341561059257600080fd5b6105c7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611f22565b604051808215151515815260200191505060405180910390f35b34156105ec57600080fd5b610618600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612237565b005b341561062557600080fd5b610646600480803590602001908201803590602001919091929050506122ed565b005b341561065357600080fd5b61065b6123ab565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106a857600080fd5b6106d4600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506123d0565b604051808215151515815260200191505060405180910390f35b6106f6610981565b604051808215151515815260200191505060405180910390f35b341561071b57600080fd5b610750600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506123f0565b005b341561075d57600080fd5b610765612527565b6040518082600281111561077557fe5b60ff16815260200191505060405180910390f35b341561079457600080fd5b61079c61253a565b6040518082815260200191505060405180910390f35b34156107bd57600080fd5b6107c5612548565b6040518082815260200191505060405180910390f35b34156107e657600080fd5b610808600480803560ff1690602001909190803590602001909190505061254e565b005b341561081557600080fd5b610841600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061265a565b005b341561084e57600080fd5b61087a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612710565b005b341561088757600080fd5b6108a860048080359060200190820180359060200191909192905050612865565b005b34156108b557600080fd5b6108ed600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091905050612923565b6040518082815260200191505060405180910390f35b341561090e57600080fd5b610916612948565b6040518082815260200191505060405180910390f35b341561093757600080fd5b61093f61294e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600080600080600060149054906101000a900460ff161515156109a357600080fd5b60018060028111156109b157fe5b600860009054906101000a900460ff1660028111156109cc57fe5b1415156109d857600080fd5b6000806003808111156109e757fe5b600860019054906101000a900460ff166003811115610a0257fe5b11151515610a0f57600080fd5b6001544210158015610a2357506002544211155b1515610a2e57600080fd5b349150339050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610a8c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610ac857600080fd5b60096000600860019054906101000a900460ff166003811115610ae757fe5b60ff1660ff168152602001908152602001600020600001548210151515610b0d57600080fd5b60096000600860019054906101000a900460ff166003811115610b2c57fe5b60ff1660ff16815260200190815260200160002060010154610bc783600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600860019054906101000a900460ff166003811115610ba457fe5b60ff1660ff1681526020019081526020016000205461297490919063ffffffff16565b11151515610bd457600080fd5b60096000600860019054906101000a900460ff166003811115610bf357fe5b60ff1660ff16815260200190815260200160002060020154610c548360096000600860019054906101000a900460ff166003811115610c2e57fe5b60ff1660ff1681526020019081526020016000206004015461297490919063ffffffff16565b11151515610c6157600080fd5b339550349450610cb060096000600860019054906101000a900460ff166003811115610c8957fe5b60ff1660ff168152602001908152602001600020600301548661299290919063ffffffff16565b9350600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610d7e57600080fd5b6102c65a03f11515610d8f57600080fd5b5050506040518051905088876000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1515610e5b57600080fd5b6102c65a03f11515610e6c57600080fd5b505050604051805190501515610e8157600080fd5b610e968560055461297490919063ffffffff16565b600581905550610ee58560096000600860019054906101000a900460ff166003811115610ebf57fe5b60ff1660ff1681526020019081526020016000206004015461297490919063ffffffff16565b60096000600860019054906101000a900460ff166003811115610f0457fe5b60ff1660ff16815260200190815260200160002060040181905550610fa285600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600860019054906101000a900460ff166003811115610f7f57fe5b60ff1660ff1681526020019081526020016000205461297490919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600860019054906101000a900460ff166003811115610ffe57fe5b60ff1660ff16815260200190815260200160002081905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f19350505050151561107857600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167fcd60aa75dea3072fbc07ae6d7d856b5dc5f4eee88854f5b4abf7b680ef8bc50f8686604051808381526020018281526020019250505060405180910390a26001965050505050505090565b67016345785d8a000081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561114257600080fd5b600080600281111561115057fe5b600860009054906101000a900460ff16600281111561116b57fe5b14151561117757600080fd5b82600381111561118357fe5b600860019054906101000a900460ff16600381111561119e57fe5b111515156111ab57600080fd5b600082146111b957816111bd565b6000195b600960008560038111156111cd57fe5b60ff1660ff16815260200190815260200160002060010181905550505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561124857600080fd5b600080600281111561125657fe5b600860009054906101000a900460ff16600281111561127157fe5b14151561127d57600080fd5b600060096000600860019054906101000a900460ff16600381111561129e57fe5b60ff1660ff168152602001908152602001600020600001541180156112f95750600060096000600860019054906101000a900460ff1660038111156112df57fe5b60ff1660ff16815260200190815260200160002060020154115b151561130457600080fd5b6001600860006101000a81548160ff0219169083600281111561132357fe5b0217905550426001819055506113448260015461297490919063ffffffff16565b6002819055507fa16b9341b2bb91f44d120a07517e11fcd77857ad47263a1659b59223276fc475600154600254600860019054906101000a900460ff166040518084815260200183815260200182600381111561139d57fe5b60ff168152602001935050505060405180910390a15050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561141157600080fd5b600080600381111561141f57fe5b600860019054906101000a900460ff16600381111561143a57fe5b14151561144657600080fd5b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083151502179055505050565b600860019054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561151357600080fd5b600080600281111561152157fe5b600860009054906101000a900460ff16600281111561153c57fe5b14151561154857600080fd5b82600381111561155457fe5b600860019054906101000a900460ff16600381111561156f57fe5b1115151561157c57600080fd5b6000821461158a578161158e565b6127105b6009600085600381111561159e57fe5b60ff1660ff16815260200190815260200160002060030181905550505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561161b57600080fd5b600080600381111561162957fe5b600860019054906101000a900460ff16600381111561164457fe5b14151561165057600080fd5b600091505b838390508263ffffffff1610156116ac5761169f84848463ffffffff16818110151561167d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166113b6565b8180600101925050611655565b50505050565b60025481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561171357600080fd5b600180600281111561172157fe5b600860009054906101000a900460ff16600281111561173c57fe5b14151561174857600080fd5b426002819055506002600860006101000a81548160ff0219169083600281111561176e57fe5b02179055507f91c0395cbf43e0c73c36b85814d72a8d148e5ca8cd293b143146a7457de94369600254600554600860019054906101000a900460ff16604051808481526020018381526020018260038111156117c657fe5b60ff168152602001935050505060405180910390a150565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561183957600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015156118b257600080fd5b565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561190f57600080fd5b600060149054906101000a900460ff16151561192a57600080fd5b60008060146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119cd57600080fd5b60008060028111156119db57fe5b600860009054906101000a900460ff1660028111156119f657fe5b141515611a0257600080fd5b826003811115611a0e57fe5b600860019054906101000a900460ff166003811115611a2957fe5b11151515611a3657600080fd5b60008214611a445781611a50565b69043c33c19375648000005b60096000856003811115611a6057fe5b60ff1660ff16815260200190815260200160002060020181905550505050565b60055481565b60096020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154905085565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b1a57600080fd5b6000806003811115611b2857fe5b600860019054906101000a900460ff166003811115611b4357fe5b141515611b4f57600080fd5b8484905087879050141515611b6357600080fd5b600091505b868690508263ffffffff161015611bdb57611bcd87878463ffffffff168181101515611b9057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1686868563ffffffff168181101515611bc157fe5b90506020020135611f22565b508180600101925050611b68565b600192505050949350505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c4657600080fd5b6000806003811115611c5457fe5b600860019054906101000a900460ff166003811115611c6f57fe5b141515611c7b57600080fd5b8383905086869050141515611c8f57600080fd5b600091505b858590508263ffffffff161015611d0657611cf986868463ffffffff168181101515611cbc57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1685858563ffffffff168181101515611ced57fe5b905060200201356123f0565b8180600101925050611c94565b505050505050565b600060149054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d7c57600080fd5b6002806002811115611d8a57fe5b600860009054906101000a900460ff166002811115611da557fe5b141515611db157600080fd5b856003811115611dbd57fe5b600860019054906101000a900460ff166003811115611dd857fe5b11151515611de557600080fd5b6000600860006101000a81548160ff02191690836002811115611e0457fe5b021790555085600860016101000a81548160ff02191690836003811115611e2757fe5b0217905550611e36868661254e565b611e4086856110e7565b611e4a8684611972565b611e5486836114b8565b505050505050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ebd57600080fd5b600060149054906101000a900460ff16151515611ed957600080fd5b6001600060146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f7f57600080fd5b6000806003811115611f8d57fe5b600860019054906101000a900460ff166003811115611fa857fe5b141515611fb457600080fd5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1680156120525750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101548311155b151561205d57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561212957600080fd5b6102c65a03f1151561213a57600080fd5b5050506040518051905086866000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b151561220657600080fd5b6102c65a03f1151561221757600080fd5b50505060405180519050151561222c57600080fd5b600191505092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561229257600080fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561234a57600080fd5b600090505b828290508163ffffffff1610156123a65761239983838363ffffffff16818110151561237757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1661265a565b808060010191505061234f565b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561244b57600080fd5b600080600381111561245957fe5b600860019054906101000a900460ff16600381111561247457fe5b14151561248057600080fd5b6001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690831515021790555081600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505050565b600860009054906101000a900460ff1681565b69043c33c193756480000081565b60001981565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156125a957600080fd5b60008060028111156125b757fe5b600860009054906101000a900460ff1660028111156125d257fe5b1415156125de57600080fd5b8260038111156125ea57fe5b600860019054906101000a900460ff16600381111561260557fe5b1115151561261257600080fd5b60008214612620578161262a565b67016345785d8a00005b6009600085600381111561263a57fe5b60ff1660ff16815260200190815260200160002060000181905550505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156126b557600080fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561276b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156127a757600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156128c257600080fd5b600090505b828290508163ffffffff16101561291e5761291183838363ffffffff1681811015156128ef57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16612237565b80806001019150506128c7565b505050565b6007602052816000526040600020602052806000526040600020600091509150505481565b61271081565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080828401905083811015151561298857fe5b8091505092915050565b60008060008414156129a757600091506129c6565b82840290508284828115156129b857fe5b041415156129c257fe5b8091505b50929150505600a165627a7a72305820f9b2122d3d272e189b1d1a13827c581afda8a50a5927f275f0c7dd483bf9a5260029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ce54a3ff220e62e3a7fcd50355941d6a9bc707f4000000000000000000000000b1c1cb8c7c1992dba24e628bf7d38e71dad46aeb
-----Decoded View---------------
Arg [0] : fundAddress (address): 0xCe54A3Ff220E62E3A7fcd50355941D6A9BC707F4
Arg [1] : tokenAddress (address): 0xb1c1Cb8C7c1992dba24e628bF7d38E71daD46aeB
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000ce54a3ff220e62e3a7fcd50355941d6a9bc707f4
Arg [1] : 000000000000000000000000b1c1cb8c7c1992dba24e628bf7d38e71dad46aeb
Swarm Source
bzzr://f9b2122d3d272e189b1d1a13827c581afda8a50a5927f275f0c7dd483bf9a526
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.