ETH Price: $3,329.69 (+1.98%)
Gas: 5 Gwei

Contract

0xE07E687DC4b244D574F37490948C7f4aa921D958
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer Tokens56010022018-05-12 13:44:062270 days ago1526132646IN
0xE07E687D...aa921D958
0 ETH0.000239956
Transfer Tokens56010022018-05-12 13:44:062270 days ago1526132646IN
0xE07E687D...aa921D958
0 ETH0.000329956
Transfer Tokens55832122018-05-09 11:11:152273 days ago1525864275IN
0xE07E687D...aa921D958
0 ETH0.000240726
Transfer Tokens55801612018-05-08 22:12:402273 days ago1525817560IN
0xE07E687D...aa921D958
0 ETH0.000055121
Transfer Tokens55685812018-05-06 22:06:592275 days ago1525644419IN
0xE07E687D...aa921D958
0 ETH0.000040121
Transfer Tokens54960672018-04-24 6:42:182288 days ago1524552138IN
0xE07E687D...aa921D958
0 ETH0.000055051
Transfer Tokens53836752018-04-05 7:04:022307 days ago1522911842IN
0xE07E687D...aa921D958
0 ETH0.00020065
Transfer Tokens53682182018-04-02 17:24:332309 days ago1522689873IN
0xE07E687D...aa921D958
0 ETH0.000275285
Transfer Tokens53682092018-04-02 17:22:312309 days ago1522689751IN
0xE07E687D...aa921D958
0 ETH0.000275285
Transfer Tokens53621522018-04-01 17:14:382310 days ago1522602878IN
0xE07E687D...aa921D958
0 ETH0.000200285
Transfer Tokens53430582018-03-29 12:57:062314 days ago1522328226IN
0xE07E687D...aa921D958
0 ETH0.000275285
Transfer Tokens53419422018-03-29 8:30:032314 days ago1522312203IN
0xE07E687D...aa921D958
0 ETH0.000275285
Transfer Tokens53419382018-03-29 8:29:292314 days ago1522312169IN
0xE07E687D...aa921D958
0 ETH0.000200285
Transfer Tokens53418122018-03-29 7:51:042314 days ago1522309864IN
0xE07E687D...aa921D958
0 ETH0.000275285
Transfer Tokens53302752018-03-27 9:01:372316 days ago1522141297IN
0xE07E687D...aa921D958
0 ETH0.000200285
Transfer Tokens53302432018-03-27 8:54:252316 days ago1522140865IN
0xE07E687D...aa921D958
0 ETH0.000199965
Transfer Tokens52846482018-03-19 18:10:442323 days ago1521483044IN
0xE07E687D...aa921D958
0 ETH0.000275285
Transfer Tokens52824502018-03-19 9:12:292324 days ago1521450749IN
0xE07E687D...aa921D958
0 ETH0.00027565
Transfer Tokens52823952018-03-19 9:00:272324 days ago1521450027IN
0xE07E687D...aa921D958
0 ETH0.00027565
Transfer Tokens52823152018-03-19 8:44:072324 days ago1521449047IN
0xE07E687D...aa921D958
0 ETH0.00027565
Transfer Tokens52822992018-03-19 8:41:052324 days ago1521448865IN
0xE07E687D...aa921D958
0 ETH0.000240726
Transfer Tokens52541552018-03-14 14:04:022329 days ago1521036242IN
0xE07E687D...aa921D958
0 ETH0.000160224
Transfer Tokens52541552018-03-14 14:04:022329 days ago1521036242IN
0xE07E687D...aa921D958
0 ETH0.000160224
Transfer Tokens52541522018-03-14 14:03:112329 days ago1521036191IN
0xE07E687D...aa921D958
0 ETH0.000160224
Transfer Tokens52541482018-03-14 14:01:442329 days ago1521036104IN
0xE07E687D...aa921D958
0 ETH0.000159964
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
51752792018-03-01 4:37:302342 days ago1519879050
0xE07E687D...aa921D958
0.5 ETH
51752352018-03-01 4:26:312342 days ago1519878391
0xE07E687D...aa921D958
0.053 ETH
51751832018-03-01 4:12:302342 days ago1519877550
0xE07E687D...aa921D958
0.3 ETH
51745162018-03-01 1:28:592342 days ago1519867739
0xE07E687D...aa921D958
2 ETH
51742232018-03-01 0:21:382342 days ago1519863698
0xE07E687D...aa921D958
0.987 ETH
51740992018-02-28 23:54:132342 days ago1519862053
0xE07E687D...aa921D958
1 ETH
51740432018-02-28 23:40:342342 days ago1519861234
0xE07E687D...aa921D958
0.3 ETH
51739262018-02-28 23:15:062342 days ago1519859706
0xE07E687D...aa921D958
2 ETH
51738712018-02-28 23:00:582342 days ago1519858858
0xE07E687D...aa921D958
0.1 ETH
51736482018-02-28 22:04:152342 days ago1519855455
0xE07E687D...aa921D958
0.31 ETH
51736102018-02-28 21:53:572342 days ago1519854837
0xE07E687D...aa921D958
0.2 ETH
51735072018-02-28 21:24:122342 days ago1519853052
0xE07E687D...aa921D958
0.5 ETH
51734072018-02-28 20:59:142342 days ago1519851554
0xE07E687D...aa921D958
1 ETH
51731592018-02-28 19:57:282342 days ago1519847848
0xE07E687D...aa921D958
4 ETH
51704352018-02-28 8:49:272343 days ago1519807767
0xE07E687D...aa921D958
2 ETH
51674872018-02-27 20:58:542343 days ago1519765134
0xE07E687D...aa921D958
0.55 ETH
51479752018-02-24 12:52:272347 days ago1519476747
0xE07E687D...aa921D958
0.05 ETH
51479612018-02-24 12:49:242347 days ago1519476564
0xE07E687D...aa921D958
0.05 ETH
51468212018-02-24 8:22:042347 days ago1519460524
0xE07E687D...aa921D958
0.065 ETH
51377612018-02-22 19:20:362348 days ago1519327236
0xE07E687D...aa921D958
0.086235 ETH
51367762018-02-22 15:15:072348 days ago1519312507
0xE07E687D...aa921D958
0.074285 ETH
51302932018-02-21 12:57:162350 days ago1519217836
0xE07E687D...aa921D958
0.08 ETH
51214692018-02-20 0:19:242351 days ago1519085964
0xE07E687D...aa921D958
0.02 ETH
51199862018-02-19 18:15:412351 days ago1519064141
0xE07E687D...aa921D958
0.05 ETH
51156712018-02-19 0:44:122352 days ago1519001052
0xE07E687D...aa921D958
0.01960221 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ApplauseCashCrowdsale

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-17
*/

pragma solidity ^0.4.18;


/**
 * @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 ERC20Basic
 * @dev Simpler version of ERC20 interface
 */
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 ERC20 interface
 */
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 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() public onlyOwner whenNotPaused {
        paused = true;
        Pause();
    }

    /**
     * @dev called by the owner to unpause, returns to normal state
     */
    function unpause() public onlyOwner whenPaused {
        paused = false;
        Unpause();
    }
}



/**
 * @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));
        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 constant returns (uint256 balance) {
        return balances[_owner];
    }

}


/**
 * @title RefundVault
 * @dev This contract is used for storing funds while a crowdsale
 * is in progress. Supports refunding the money if crowdsale fails,
 * and forwarding it if crowdsale is successful.
 */
contract RefundVault is Ownable {
    using SafeMath for uint256;

    enum State { Active, Refunding, Closed }

    mapping (address => uint256) public deposited;
    address public wallet;
    State public state;

    event Closed();
    event RefundsEnabled();
    event Refunded(address indexed beneficiary, uint256 weiAmount);

    function RefundVault(address _wallet) public {
        require(_wallet != 0x0);
        wallet = _wallet;
        state = State.Active;
    }

    function deposit(address investor) public onlyOwner  payable {
        require(state == State.Active);
        deposited[investor] = deposited[investor].add(msg.value);
    }

    function close() public onlyOwner {
        require(state == State.Active);
        state = State.Closed;
        Closed();
        wallet.transfer(this.balance);
    }

    function enableRefunds() public onlyOwner {
        require(state == State.Active);
        state = State.Refunding;
        RefundsEnabled();
    }

    function refund(address investor) public {
        require(state == State.Refunding);
        uint256 depositedValue = deposited[investor];
        deposited[investor] = 0;
        investor.transfer(depositedValue);
        Refunded(investor, depositedValue);
    }
}


/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * @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) {

        // To change the approve amount you first have to reduce the addresses`
        //  allowance to zero by calling `approve(_spender, 0)` if it is not
        //  already 0 to mitigate the race condition described here:
        //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
        require((_value == 0) || (allowed[msg.sender][_spender] == 0));

        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;
    }

}


contract PausableToken is StandardToken, Pausable {

    function transfer(address _to, uint256 _value) public whenNotPaused returns (bool) {
        return super.transfer(_to, _value);
    }

    function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused returns (bool) {
        return super.transferFrom(_from, _to, _value);
    }

    function approve(address _spender, uint256 _value) public whenNotPaused returns (bool) {
        return super.approve(_spender, _value);
    }

    function increaseApproval(address _spender, uint _addedValue) public whenNotPaused returns (bool success) {
        return super.increaseApproval(_spender, _addedValue);
    }

    function decreaseApproval(address _spender, uint _subtractedValue) public whenNotPaused returns (bool success) {
        return super.decreaseApproval(_spender, _subtractedValue);
    }
}


contract ApplauseCashToken is StandardToken, PausableToken {
    string public constant name = "ApplauseCash";
    string public constant symbol = "APLC";
    uint8 public constant decimals = 4;
    uint256 public INITIAL_SUPPLY = 300000000 * 10000;

    function ApplauseCashToken() public {
        totalSupply = INITIAL_SUPPLY;
        balances[msg.sender] = INITIAL_SUPPLY;
    }
}



/**
 * @title Crowdsale
 * @dev Modified contract for managing a token crowdsale.
 * ApplauseCashCrowdsale have pre-sale and main sale periods,
 * where investors can make token purchases and the crowdsale will assign
 * them tokens based on a token per ETH rate and the system of bonuses.
 * Funds collected are forwarded to a wallet as they arrive.
 * pre-sale and main sale periods both have caps defined in tokens.
 */

contract ApplauseCashCrowdsale is Ownable {

    using SafeMath for uint256;

    struct Bonus {
        uint duration;
        uint percent;
    }

    // minimum amount of funds to be raised in tokens
    uint256 public softcap;

    // refund vault used to hold funds while crowdsale is running
    RefundVault public vault;

    // true for finalised crowdsale
    bool public isFinalized;

    // The token being sold
    ApplauseCashToken public token = new ApplauseCashToken();

    // start and end timestamps where pre-investments are allowed (both inclusive)
    uint256 public preIcoStartTime;
    uint256 public preIcoEndTime;

    // start and end timestamps where main-investments are allowed (both inclusive)
    uint256 public icoStartTime;
    uint256 public icoEndTime;

    // maximum amout of tokens for pre-sale and main sale
    uint256 public preIcoHardcap;
    uint256 public icoHardcap;

    // address where funds are collected
    address public wallet;

    // how many token units a buyer gets per ETH
    uint256 public rate;

    // amount of raised tokens
    uint256 public tokensInvested;

    Bonus[] public preIcoBonuses;
    Bonus[] public icoBonuses;

    // Invstors can't invest less then specified numbers in wei
    uint256 public preIcoMinimumWei;
    uint256 public icoMinimumWei;

    // Default bonus %
    uint256 public defaultPercent;

    /**
     * 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 amount amount of tokens purchased
     */
    event TokenPurchase(address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount);

    function ApplauseCashCrowdsale(
        uint256 _preIcoStartTime,
        uint256 _preIcoEndTime,
        uint256 _preIcoHardcap,
        uint256 _icoStartTime,
        uint256 _icoEndTime,
        uint256 _icoHardcap,
        uint256 _softcap,
        uint256 _rate,
        address _wallet
    ) public {

        //require(_softcap > 0);

        // can't start pre-sale in the past
        require(_preIcoStartTime >= now);

        // can't start main sale in the past
        require(_icoStartTime >= now);

        // can't start main sale before the end of pre-sale
        require(_preIcoEndTime < _icoStartTime);

        // the end of pre-sale can't happen before it's start
        require(_preIcoStartTime < _preIcoEndTime);

        // the end of main sale can't happen before it's start
        require(_icoStartTime < _icoEndTime);

        require(_rate > 0);
        require(_preIcoHardcap > 0);
        require(_icoHardcap > 0);
        require(_wallet != 0x0);

        preIcoMinimumWei = 20000000000000000;  // 0.02 Ether default minimum
        icoMinimumWei = 20000000000000000; // 0.02 Ether default minimum
        defaultPercent = 0;

        preIcoBonuses.push(Bonus({duration: 1 hours, percent: 90}));
        preIcoBonuses.push(Bonus({duration: 6 days + 5 hours, percent: 50}));

        icoBonuses.push(Bonus({duration: 1 hours, percent: 45}));
        icoBonuses.push(Bonus({duration: 7 days + 15 hours, percent: 40}));
        icoBonuses.push(Bonus({duration: 6 days, percent: 30}));
        icoBonuses.push(Bonus({duration: 6 days, percent: 20}));
        icoBonuses.push(Bonus({duration: 7 days, percent: 10}));

        preIcoStartTime = _preIcoStartTime;
        preIcoEndTime = _preIcoEndTime;
        preIcoHardcap = _preIcoHardcap;
        icoStartTime = _icoStartTime;
        icoEndTime = _icoEndTime;
        icoHardcap = _icoHardcap;
        softcap = _softcap;
        rate = _rate;
        wallet = _wallet;

        isFinalized = false;

        vault = new RefundVault(wallet);
    }

    // fallback function can be used to buy tokens
    function () public payable {
        buyTokens(msg.sender);
    }

    // low level token purchase function
    function buyTokens(address beneficiary) public payable {

        require(beneficiary != 0x0);
        require(msg.value != 0);
        require(!isFinalized);

        uint256 weiAmount = msg.value;

        validateWithinPeriods();

        // calculate token amount to be created.
        // ETH and our tokens have different numbers of decimals after comma
        // ETH - 18 decimals, our tokes - 4. so we need to divide our value
        // by 1e14 (18 - 4 == 14).
        uint256 tokens = weiAmount.mul(rate).div(100000000000000);

        uint256 percent = getBonusPercent(now);

        // add bonus to tokens depends on the period
        uint256 bonusedTokens = applyBonus(tokens, percent);

        validateWithinCaps(bonusedTokens, weiAmount);

        // update state
        tokensInvested = tokensInvested.add(bonusedTokens);
        token.transfer(beneficiary, bonusedTokens);
        TokenPurchase(msg.sender, beneficiary, weiAmount, bonusedTokens);

        forwardFunds();
    }
    
    // owner can transfer tokens
    function transferTokens(address beneficiary, uint256 tokens) public onlyOwner {
        token.transfer(beneficiary, tokens);
    }

    // set new dates for pre-salev (emergency case)
    function setPreIcoParameters(
        uint256 _preIcoStartTime,
        uint256 _preIcoEndTime,
        uint256 _preIcoHardcap,
        uint256 _preIcoMinimumWei
    ) public onlyOwner {
        require(!isFinalized);
        require(_preIcoStartTime < _preIcoEndTime);
        require(_preIcoHardcap > 0);
        preIcoStartTime = _preIcoStartTime;
        preIcoEndTime = _preIcoEndTime;
        preIcoHardcap = _preIcoHardcap;
        preIcoMinimumWei = _preIcoMinimumWei;
    }

    // set new dates for main-sale (emergency case)
    function setIcoParameters(
        uint256 _icoStartTime,
        uint256 _icoEndTime,
        uint256 _icoHardcap,
        uint256 _icoMinimumWei
    ) public onlyOwner {

        require(!isFinalized);
        require(_icoStartTime < _icoEndTime);
        require(_icoHardcap > 0);
        icoStartTime = _icoStartTime;
        icoEndTime = _icoEndTime;
        icoHardcap = _icoHardcap;
        icoMinimumWei = _icoMinimumWei;
    }

    // set new wallets (emergency case)
    function setWallet(address _wallet) public onlyOwner {
        require(!isFinalized);
        require(_wallet != 0x0);
        wallet = _wallet;
    }

      // set new rate (emergency case)
    function setRate(uint256 _rate) public onlyOwner {
        require(!isFinalized);
        require(_rate > 0);
        rate = _rate;
    }

        // set new softcap (emergency case)
    function setSoftcap(uint256 _softcap) public onlyOwner {
        require(!isFinalized);
        require(_softcap > 0);
        softcap = _softcap;
    }


    // set token on pause
    function pauseToken() external onlyOwner {
        require(!isFinalized);
        token.pause();
    }

    // unset token's pause
    function unpauseToken() external onlyOwner {
        token.unpause();
    }

    // set token Ownership
    function transferTokenOwnership(address newOwner) external onlyOwner {
        token.transferOwnership(newOwner);
    }

    // @return true if main sale event has ended
    function icoHasEnded() external constant returns (bool) {
        return now > icoEndTime;
    }

    // @return true if pre sale event has ended
    function preIcoHasEnded() external constant returns (bool) {
        return now > preIcoEndTime;
    }

    // send ether to the fund collection wallet
    function forwardFunds() internal {
        //wallet.transfer(msg.value);
        vault.deposit.value(msg.value)(msg.sender);
    }

    // we want to be able to check all bonuses in already deployed contract
    // that's why we pass currentTime as a parameter instead of using "now"
    function getBonusPercent(uint256 currentTime) public constant returns (uint256 percent) {
      //require(currentTime >= preIcoStartTime);
        uint i = 0;
        bool isPreIco = currentTime >= preIcoStartTime && currentTime <= preIcoEndTime;
        uint256 offset = 0;
        if (isPreIco) {
            uint256 preIcoDiffInSeconds = currentTime.sub(preIcoStartTime);
            for (i = 0; i < preIcoBonuses.length; i++) {
                if (preIcoDiffInSeconds <= preIcoBonuses[i].duration + offset) {
                    return preIcoBonuses[i].percent;
                }
                offset = offset.add(preIcoBonuses[i].duration);
            }
        } else {
            uint256 icoDiffInSeconds = currentTime.sub(icoStartTime);
            for (i = 0; i < icoBonuses.length; i++) {
                if (icoDiffInSeconds <= icoBonuses[i].duration + offset) {
                    return icoBonuses[i].percent;
                }
                offset = offset.add(icoBonuses[i].duration);
            }
        }
        return defaultPercent;
    }

    function applyBonus(uint256 tokens, uint256 percent) internal pure returns  (uint256 bonusedTokens) {
        uint256 tokensToAdd = tokens.mul(percent).div(100);
        return tokens.add(tokensToAdd);
    }

    function validateWithinPeriods() internal constant {
        // within pre-sale or main sale
        require((now >= preIcoStartTime && now <= preIcoEndTime) || (now >= icoStartTime && now <= icoEndTime));
    }

    function validateWithinCaps(uint256 tokensAmount, uint256 weiAmount) internal constant {
        uint256 expectedTokensInvested = tokensInvested.add(tokensAmount);

        // within pre-sale
        if (now >= preIcoStartTime && now <= preIcoEndTime) {
            require(weiAmount >= preIcoMinimumWei);
            require(expectedTokensInvested <= preIcoHardcap);
        }

        // within main sale
        if (now >= icoStartTime && now <= icoEndTime) {
            require(expectedTokensInvested <= icoHardcap);
        }
    }

    // if crowdsale is unsuccessful, investors can claim refunds here
    function claimRefund() public {
        require(isFinalized);
        require(!softcapReached());
        vault.refund(msg.sender);
    }

    function softcapReached() public constant returns (bool) {
        return tokensInvested >= softcap;
    }

    // finish crowdsale
    function finaliseCrowdsale() external onlyOwner returns (bool) {
        require(!isFinalized);
        if (softcapReached()) {
            vault.close();
        } else {
            vault.enableRefunds();
        }

        isFinalized = true;
        return true;
    }

}


contract Deployer is Ownable {

    ApplauseCashCrowdsale public applauseCashCrowdsale;
    uint256 public constant TOKEN_DECIMALS_MULTIPLIER = 10000;
    address public multisig = 0xaB188aCBB8a401277DC2D83C242677ca3C96fF05;

    function deploy() public onlyOwner {
        applauseCashCrowdsale = new ApplauseCashCrowdsale(
            1516280400, //Pre ICO Start: 18 Jan 2018 at 8:00 am EST
            1516856400, //Pre ICO End: 24 Jan 2018 at 11:59 pm EST
            3000000 * TOKEN_DECIMALS_MULTIPLIER, //Pre ICO hardcap
            1517490000,  // ICO Start: 1 Feb 2018 at 8 am EST
            1519880400, // ICO End: 28 Feb 2018 at 11.59 pm EST
            144000000 * TOKEN_DECIMALS_MULTIPLIER,  // ICO hardcap
            50000 * TOKEN_DECIMALS_MULTIPLIER, // Overal crowdsale softcap
            500, // 1 ETH = 500 APLC
            multisig // Multisignature wallet (controlled by multiple accounts)
        );
    }

    function setOwner() public onlyOwner {
        applauseCashCrowdsale.transferOwnership(owner);
    }


}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"icoMinimumWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_softcap","type":"uint256"}],"name":"setSoftcap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferTokenOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finaliseCrowdsale","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pauseToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_icoStartTime","type":"uint256"},{"name":"_icoEndTime","type":"uint256"},{"name":"_icoHardcap","type":"uint256"},{"name":"_icoMinimumWei","type":"uint256"}],"name":"setIcoParameters","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_rate","type":"uint256"}],"name":"setRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpauseToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"softcapReached","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"preIcoEndTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_preIcoStartTime","type":"uint256"},{"name":"_preIcoEndTime","type":"uint256"},{"name":"_preIcoHardcap","type":"uint256"},{"name":"_preIcoMinimumWei","type":"uint256"}],"name":"setPreIcoParameters","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokensInvested","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"defaultPercent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"currentTime","type":"uint256"}],"name":"getBonusPercent","outputs":[{"name":"percent","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"icoEndTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"preIcoHasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isFinalized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"preIcoStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"preIcoBonuses","outputs":[{"name":"duration","type":"uint256"},{"name":"percent","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"icoHasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"preIcoMinimumWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"icoStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"icoBonuses","outputs":[{"name":"duration","type":"uint256"},{"name":"percent","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claimRefund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"preIcoHardcap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_wallet","type":"address"}],"name":"setWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"icoHardcap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"softcap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_preIcoStartTime","type":"uint256"},{"name":"_preIcoEndTime","type":"uint256"},{"name":"_preIcoHardcap","type":"uint256"},{"name":"_icoStartTime","type":"uint256"},{"name":"_icoEndTime","type":"uint256"},{"name":"_icoHardcap","type":"uint256"},{"name":"_softcap","type":"uint256"},{"name":"_rate","type":"uint256"},{"name":"_wallet","type":"address"}],"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":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60606040526200000e620005b7565b604051809103906000f08015156200002557600080fd5b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034156200007157600080fd5b604051610120806200462283398101604052808051906020019091908051906020019091908051906020019091908051906020019091908051906020019091908051906020019091908051906020019091908051906020019091908051906020019091905050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504289101515156200012757600080fd5b4286101515156200013757600080fd5b85881015156200014657600080fd5b87891015156200015557600080fd5b84861015156200016457600080fd5b6000821115156200017457600080fd5b6000871115156200018457600080fd5b6000841115156200019457600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515620001bb57600080fd5b66470de4df820000600f8190555066470de4df8200006010819055506000601181905550600d8054806001018281620001f59190620005c8565b916000526020600020906002020160006040805190810160405280610e108152602001605a81525090919091506000820151816000015560208201518160010155505050600d80548060010182816200024f9190620005c8565b91600052602060002090600202016000604080519081016040528062082f508152602001603281525090919091506000820151816000015560208201518160010155505050600e8054806001018281620002aa9190620005c8565b916000526020600020906002020160006040805190810160405280610e108152602001602d81525090919091506000820151816000015560208201518160010155505050600e8054806001018281620003049190620005c8565b916000526020600020906002020160006040805190810160405280620a0d708152602001602881525090919091506000820151816000015560208201518160010155505050600e80548060010182816200035f9190620005c8565b9160005260206000209060020201600060408051908101604052806207e9008152602001601e81525090919091506000820151816000015560208201518160010155505050600e8054806001018281620003ba9190620005c8565b9160005260206000209060020201600060408051908101604052806207e9008152602001601481525090919091506000820151816000015560208201518160010155505050600e8054806001018281620004159190620005c8565b91600052602060002090600202016000604080519081016040528062093a808152602001600a815250909190915060008201518160000155602082015181600101555050508860048190555087600581905550866008819055508560068190555084600781905550836009819055508260018190555081600b8190555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260146101000a81548160ff021916908315150217905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166200051b620005fd565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015156200056857600080fd5b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505050505062000640565b604051611896806200232b83390190565b815481835581811511620005f857600202816002028360005260206000209182019101620005f791906200060e565b5b505050565b604051610a618062003bc183390190565b6200063d91905b80821115620006395760008082016000905560018201600090555060020162000615565b5090565b90565b611cdb80620006506000396000f3006060604052600436106101c2576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630890e86e146101cd578063101e5a32146101f657806321e6b53d146102195780632bdfbd39146102525780632c3496271461027f5780632c4e722e146102945780632ed44309146102bd57806334fcf437146102fb57806350669a031461031e578063521eb273146103335780636eb2192914610388578063716344f0146103b557806378bc254b146103de57806379c0d5ae1461041c5780637bd63411146104455780637c098bc31461046e5780637e1055b6146104a55780638b092580146104ce5780638d4e4083146104fb5780638da5cb5b14610528578063910f5b811461057d57806398738f97146105a65780639fac9abf146105e4578063a10e057c14610611578063a7c3d71b1461063a578063ad1ac3d014610663578063b5545a3c146106a1578063bec3fa17146106b6578063da547dcf146106f8578063deaa59df14610721578063df6abd341461075a578063ec8ac4d814610783578063f2fde38b146107b1578063f89be593146107ea578063fbfa77cf14610813578063fc0c546a14610868575b6101cb336108bd565b005b34156101d857600080fd5b6101e0610af0565b6040518082815260200191505060405180910390f35b341561020157600080fd5b6102176004808035906020019091905050610af6565b005b341561022457600080fd5b610250600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b86565b005b341561025d57600080fd5b610265610cb4565b604051808215151515815260200191505060405180910390f35b341561028a57600080fd5b610292610e94565b005b341561029f57600080fd5b6102a7610fa6565b6040518082815260200191505060405180910390f35b34156102c857600080fd5b6102f96004808035906020019091908035906020019091908035906020019091908035906020019091905050610fac565b005b341561030657600080fd5b61031c6004808035906020019091905050611062565b005b341561032957600080fd5b6103316110f2565b005b341561033e57600080fd5b6103466111e8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561039357600080fd5b61039b61120e565b604051808215151515815260200191505060405180910390f35b34156103c057600080fd5b6103c861121d565b6040518082815260200191505060405180910390f35b34156103e957600080fd5b61041a6004808035906020019091908035906020019091908035906020019091908035906020019091905050611223565b005b341561042757600080fd5b61042f6112d9565b6040518082815260200191505060405180910390f35b341561045057600080fd5b6104586112df565b6040518082815260200191505060405180910390f35b341561047957600080fd5b61048f60048080359060200190919050506112e5565b6040518082815260200191505060405180910390f35b34156104b057600080fd5b6104b86114a4565b6040518082815260200191505060405180910390f35b34156104d957600080fd5b6104e16114aa565b604051808215151515815260200191505060405180910390f35b341561050657600080fd5b61050e6114b6565b604051808215151515815260200191505060405180910390f35b341561053357600080fd5b61053b6114c9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561058857600080fd5b6105906114ee565b6040518082815260200191505060405180910390f35b34156105b157600080fd5b6105c760048080359060200190919050506114f4565b604051808381526020018281526020019250505060405180910390f35b34156105ef57600080fd5b6105f7611527565b604051808215151515815260200191505060405180910390f35b341561061c57600080fd5b610624611533565b6040518082815260200191505060405180910390f35b341561064557600080fd5b61064d611539565b6040518082815260200191505060405180910390f35b341561066e57600080fd5b610684600480803590602001909190505061153f565b604051808381526020018281526020019250505060405180910390f35b34156106ac57600080fd5b6106b4611572565b005b34156106c157600080fd5b6106f6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611673565b005b341561070357600080fd5b61070b6117bb565b6040518082815260200191505060405180910390f35b341561072c57600080fd5b610758600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506117c1565b005b341561076557600080fd5b61076d6118a2565b6040518082815260200191505060405180910390f35b6107af600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108bd565b005b34156107bc57600080fd5b6107e8600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118a8565b005b34156107f557600080fd5b6107fd6119fd565b6040518082815260200191505060405180910390f35b341561081e57600080fd5b610826611a03565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561087357600080fd5b61087b611a29565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060008060008573ffffffffffffffffffffffffffffffffffffffff16141515156108e957600080fd5b600034141515156108f957600080fd5b600260149054906101000a900460ff1615151561091557600080fd5b349350610920611a4f565b61094d655af3107a400061093f600b5487611a8b90919063ffffffff16565b611abe90919063ffffffff16565b9250610958426112e5565b91506109648383611ad9565b90506109708185611b20565b61098581600c54611ba590919063ffffffff16565b600c81905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515610a5857600080fd5b6102c65a03f11515610a6957600080fd5b50505060405180519050508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad188684604051808381526020018281526020019250505060405180910390a3610ae9611bc3565b5050505050565b60105481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b5157600080fd5b600260149054906101000a900460ff16151515610b6d57600080fd5b600081111515610b7c57600080fd5b8060018190555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610be157600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2fde38b826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1515610c9d57600080fd5b6102c65a03f11515610cae57600080fd5b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d1157600080fd5b600260149054906101000a900460ff16151515610d2d57600080fd5b610d3561120e565b15610dd857600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166343d726d66040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1515610dbf57600080fd5b6102c65a03f11515610dd057600080fd5b505050610e72565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c52dc416040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1515610e5d57600080fd5b6102c65a03f11515610e6e57600080fd5b5050505b6001600260146101000a81548160ff0219169083151502179055506001905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610eef57600080fd5b600260149054906101000a900460ff16151515610f0b57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638456cb596040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1515610f9057600080fd5b6102c65a03f11515610fa157600080fd5b505050565b600b5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561100757600080fd5b600260149054906101000a900460ff1615151561102357600080fd5b828410151561103157600080fd5b60008211151561104057600080fd5b8360068190555082600781905550816009819055508060108190555050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110bd57600080fd5b600260149054906101000a900460ff161515156110d957600080fd5b6000811115156110e857600080fd5b80600b8190555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561114d57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f4ba83a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b15156111d257600080fd5b6102c65a03f115156111e357600080fd5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600154600c541015905090565b60055481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561127e57600080fd5b600260149054906101000a900460ff1615151561129a57600080fd5b82841015156112a857600080fd5b6000821115156112b757600080fd5b83600481905550826005819055508160088190555080600f8190555050505050565b600c5481565b60115481565b60008060008060008060009450600454871015801561130657506005548711155b93506000925083156113d55761132760045488611c9690919063ffffffff16565b9150600094505b600d805490508510156113d05782600d8681548110151561134b57fe5b906000526020600020906002020160000154018211151561138e57600d8581548110151561137557fe5b906000526020600020906002020160010154955061149a565b6113c1600d868154811015156113a057fe5b90600052602060002090600202016000015484611ba590919063ffffffff16565b9250848060010195505061132e565b611494565b6113ea60065488611c9690919063ffffffff16565b9050600094505b600e805490508510156114935782600e8681548110151561140e57fe5b906000526020600020906002020160000154018111151561145157600e8581548110151561143857fe5b906000526020600020906002020160010154955061149a565b611484600e8681548110151561146357fe5b90600052602060002090600202016000015484611ba590919063ffffffff16565b925084806001019550506113f1565b5b60115495505b5050505050919050565b60075481565b60006005544211905090565b600260149054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b600d8181548110151561150357fe5b90600052602060002090600202016000915090508060000154908060010154905082565b60006007544211905090565b600f5481565b60065481565b600e8181548110151561154e57fe5b90600052602060002090600202016000915090508060000154908060010154905082565b600260149054906101000a900460ff16151561158d57600080fd5b61159561120e565b1515156115a157600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fa89401a336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b151561165d57600080fd5b6102c65a03f1151561166e57600080fd5b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116ce57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561179b57600080fd5b6102c65a03f115156117ac57600080fd5b50505060405180519050505050565b60085481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561181c57600080fd5b600260149054906101000a900460ff1615151561183857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561185e57600080fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561190357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561193f57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60015481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6004544210158015611a6357506005544211155b80611a7e57506006544210158015611a7d57506007544211155b5b1515611a8957600080fd5b565b60008082840290506000841480611aac5750828482811515611aa957fe5b04145b1515611ab457fe5b8091505092915050565b6000808284811515611acc57fe5b0490508091505092915050565b600080611b026064611af48587611a8b90919063ffffffff16565b611abe90919063ffffffff16565b9050611b178185611ba590919063ffffffff16565b91505092915050565b6000611b3783600c54611ba590919063ffffffff16565b90506004544210158015611b4d57506005544211155b15611b7557600f548210151515611b6357600080fd5b6008548111151515611b7457600080fd5b5b6006544210158015611b8957506007544211155b15611ba0576009548111151515611b9f57600080fd5b5b505050565b6000808284019050838110151515611bb957fe5b8091505092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f340fa0134336040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b1515611c7f57600080fd5b6125ee5a03f11515611c9057600080fd5b50505050565b6000828211151515611ca457fe5b8183039050929150505600a165627a7a72305820571e21cf8cbdc77f8649a245db9d991c6607d38904e8ceffe6800f9f8ca922b7002960606040526000600360146101000a81548160ff0219169083151502179055506502ba7def3000600455341561003457600080fd5b33600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600454600081905550600454600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117c3806100d36000396000f3006060604052600436106100f1576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100f6578063095ea7b31461018457806318160ddd146101de57806323b872dd146102075780632ff2e9dc14610280578063313ce567146102a95780633f4ba83a146102d85780635c975abb146102ed578063661884631461031a57806370a08231146103745780638456cb59146103c15780638da5cb5b146103d657806395d89b411461042b578063a9059cbb146104b9578063d73dd62314610513578063dd62ed3e1461056d578063f2fde38b146105d9575b600080fd5b341561010157600080fd5b610109610612565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561014957808201518184015260208101905061012e565b50505050905090810190601f1680156101765780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561018f57600080fd5b6101c4600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061064b565b604051808215151515815260200191505060405180910390f35b34156101e957600080fd5b6101f161067b565b6040518082815260200191505060405180910390f35b341561021257600080fd5b610266600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610681565b604051808215151515815260200191505060405180910390f35b341561028b57600080fd5b6102936106b3565b6040518082815260200191505060405180910390f35b34156102b457600080fd5b6102bc6106b9565b604051808260ff1660ff16815260200191505060405180910390f35b34156102e357600080fd5b6102eb6106be565b005b34156102f857600080fd5b61030061077e565b604051808215151515815260200191505060405180910390f35b341561032557600080fd5b61035a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610791565b604051808215151515815260200191505060405180910390f35b341561037f57600080fd5b6103ab600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506107c1565b6040518082815260200191505060405180910390f35b34156103cc57600080fd5b6103d461080a565b005b34156103e157600080fd5b6103e96108cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561043657600080fd5b61043e6108f1565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561047e578082015181840152602081019050610463565b50505050905090810190601f1680156104ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156104c457600080fd5b6104f9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061092a565b604051808215151515815260200191505060405180910390f35b341561051e57600080fd5b610553600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061095a565b604051808215151515815260200191505060405180910390f35b341561057857600080fd5b6105c3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061098a565b6040518082815260200191505060405180910390f35b34156105e457600080fd5b610610600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610a11565b005b6040805190810160405280600c81526020017f4170706c6175736543617368000000000000000000000000000000000000000081525081565b6000600360149054906101000a900460ff1615151561066957600080fd5b6106738383610b69565b905092915050565b60005481565b6000600360149054906101000a900460ff1615151561069f57600080fd5b6106aa848484610cf0565b90509392505050565b60045481565b600481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561071a57600080fd5b600360149054906101000a900460ff16151561073557600080fd5b6000600360146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b600360149054906101000a900460ff1681565b6000600360149054906101000a900460ff161515156107af57600080fd5b6107b983836110af565b905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561086657600080fd5b600360149054906101000a900460ff1615151561088257600080fd5b6001600360146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600481526020017f41504c430000000000000000000000000000000000000000000000000000000081525081565b6000600360149054906101000a900460ff1615151561094857600080fd5b6109528383611340565b905092915050565b6000600360149054906101000a900460ff1615151561097857600080fd5b6109828383611564565b905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a6d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610aa957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080821480610bf557506000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b1515610c0057600080fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610d2d57600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d7b57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610e0657600080fd5b610e5882600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461176090919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610eed82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461177990919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fbf82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461176090919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808311156111c0576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611254565b6111d3838261176090919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561137d57600080fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156113cb57600080fd5b61141d82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461176090919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114b282600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461177990919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60006115f582600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461177990919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600082821115151561176e57fe5b818303905092915050565b600080828401905083811015151561178d57fe5b80915050929150505600a165627a7a723058201beb6c4bcf81857b2b9a8a8befdd96be9f395533ad9ec483238181b74bd0b5c400296060604052341561000f57600080fd5b604051602080610a6183398101604052808051906020019091905050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008173ffffffffffffffffffffffffffffffffffffffff161415151561009157600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260146101000a81548160ff021916908360028111156100f157fe5b02179055505061095b806101066000396000f300606060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806343d726d61461009e578063521eb273146100b35780638c52dc41146101085780638da5cb5b1461011d578063c19d93fb14610172578063cb13cddb146101a9578063f2fde38b146101f6578063f340fa011461022f578063fa89401a1461025d575b600080fd5b34156100a957600080fd5b6100b1610296565b005b34156100be57600080fd5b6100c66103ef565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561011357600080fd5b61011b610415565b005b341561012857600080fd5b6101306104f6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561017d57600080fd5b61018561051b565b6040518082600281111561019557fe5b60ff16815260200191505060405180910390f35b34156101b457600080fd5b6101e0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061052e565b6040518082815260200191505060405180910390f35b341561020157600080fd5b61022d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610546565b005b61025b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061069b565b005b341561026857600080fd5b610294600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506107c2565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156102f157600080fd5b600060028111156102fe57fe5b600260149054906101000a900460ff16600281111561031957fe5b14151561032557600080fd5b60028060146101000a81548160ff0219169083600281111561034357fe5b02179055507f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015156103ed57600080fd5b565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561047057600080fd5b6000600281111561047d57fe5b600260149054906101000a900460ff16600281111561049857fe5b1415156104a457600080fd5b6001600260146101000a81548160ff021916908360028111156104c357fe5b02179055507f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8960405160405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260149054906101000a900460ff1681565b60016020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105a157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156105dd57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106f657600080fd5b6000600281111561070357fe5b600260149054906101000a900460ff16600281111561071e57fe5b14151561072a57600080fd5b61077c34600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461091190919063ffffffff16565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6000600160028111156107d157fe5b600260149054906101000a900460ff1660028111156107ec57fe5b1415156107f857600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015156108bf57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff167fd7dee2702d63ad89917b6a4da9981c90c4d24f8c2bdfd64c604ecae57d8d0651826040518082815260200191505060405180910390a25050565b600080828401905083811015151561092557fe5b80915050929150505600a165627a7a72305820e4b59a8a9504fbd901769041f7fa524c9c1f43beb810e64464bfe3ebd7331df50029000000000000000000000000000000000000000000000000000000005a609a50000000000000000000000000000000000000000000000000000000005a69645000000000000000000000000000000000000000000000000000000006fc23ac00000000000000000000000000000000000000000000000000000000005a730f50000000000000000000000000000000000000000000000000000000005a9788d00000000000000000000000000000000000000000000000000000014f46b04000000000000000000000000000000000000000000000000000000000001dcd650000000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000ab188acbb8a401277dc2d83c242677ca3c96ff05

Deployed Bytecode

0x6060604052600436106101c2576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630890e86e146101cd578063101e5a32146101f657806321e6b53d146102195780632bdfbd39146102525780632c3496271461027f5780632c4e722e146102945780632ed44309146102bd57806334fcf437146102fb57806350669a031461031e578063521eb273146103335780636eb2192914610388578063716344f0146103b557806378bc254b146103de57806379c0d5ae1461041c5780637bd63411146104455780637c098bc31461046e5780637e1055b6146104a55780638b092580146104ce5780638d4e4083146104fb5780638da5cb5b14610528578063910f5b811461057d57806398738f97146105a65780639fac9abf146105e4578063a10e057c14610611578063a7c3d71b1461063a578063ad1ac3d014610663578063b5545a3c146106a1578063bec3fa17146106b6578063da547dcf146106f8578063deaa59df14610721578063df6abd341461075a578063ec8ac4d814610783578063f2fde38b146107b1578063f89be593146107ea578063fbfa77cf14610813578063fc0c546a14610868575b6101cb336108bd565b005b34156101d857600080fd5b6101e0610af0565b6040518082815260200191505060405180910390f35b341561020157600080fd5b6102176004808035906020019091905050610af6565b005b341561022457600080fd5b610250600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b86565b005b341561025d57600080fd5b610265610cb4565b604051808215151515815260200191505060405180910390f35b341561028a57600080fd5b610292610e94565b005b341561029f57600080fd5b6102a7610fa6565b6040518082815260200191505060405180910390f35b34156102c857600080fd5b6102f96004808035906020019091908035906020019091908035906020019091908035906020019091905050610fac565b005b341561030657600080fd5b61031c6004808035906020019091905050611062565b005b341561032957600080fd5b6103316110f2565b005b341561033e57600080fd5b6103466111e8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561039357600080fd5b61039b61120e565b604051808215151515815260200191505060405180910390f35b34156103c057600080fd5b6103c861121d565b6040518082815260200191505060405180910390f35b34156103e957600080fd5b61041a6004808035906020019091908035906020019091908035906020019091908035906020019091905050611223565b005b341561042757600080fd5b61042f6112d9565b6040518082815260200191505060405180910390f35b341561045057600080fd5b6104586112df565b6040518082815260200191505060405180910390f35b341561047957600080fd5b61048f60048080359060200190919050506112e5565b6040518082815260200191505060405180910390f35b34156104b057600080fd5b6104b86114a4565b6040518082815260200191505060405180910390f35b34156104d957600080fd5b6104e16114aa565b604051808215151515815260200191505060405180910390f35b341561050657600080fd5b61050e6114b6565b604051808215151515815260200191505060405180910390f35b341561053357600080fd5b61053b6114c9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561058857600080fd5b6105906114ee565b6040518082815260200191505060405180910390f35b34156105b157600080fd5b6105c760048080359060200190919050506114f4565b604051808381526020018281526020019250505060405180910390f35b34156105ef57600080fd5b6105f7611527565b604051808215151515815260200191505060405180910390f35b341561061c57600080fd5b610624611533565b6040518082815260200191505060405180910390f35b341561064557600080fd5b61064d611539565b6040518082815260200191505060405180910390f35b341561066e57600080fd5b610684600480803590602001909190505061153f565b604051808381526020018281526020019250505060405180910390f35b34156106ac57600080fd5b6106b4611572565b005b34156106c157600080fd5b6106f6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611673565b005b341561070357600080fd5b61070b6117bb565b6040518082815260200191505060405180910390f35b341561072c57600080fd5b610758600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506117c1565b005b341561076557600080fd5b61076d6118a2565b6040518082815260200191505060405180910390f35b6107af600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108bd565b005b34156107bc57600080fd5b6107e8600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118a8565b005b34156107f557600080fd5b6107fd6119fd565b6040518082815260200191505060405180910390f35b341561081e57600080fd5b610826611a03565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561087357600080fd5b61087b611a29565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060008060008573ffffffffffffffffffffffffffffffffffffffff16141515156108e957600080fd5b600034141515156108f957600080fd5b600260149054906101000a900460ff1615151561091557600080fd5b349350610920611a4f565b61094d655af3107a400061093f600b5487611a8b90919063ffffffff16565b611abe90919063ffffffff16565b9250610958426112e5565b91506109648383611ad9565b90506109708185611b20565b61098581600c54611ba590919063ffffffff16565b600c81905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515610a5857600080fd5b6102c65a03f11515610a6957600080fd5b50505060405180519050508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad188684604051808381526020018281526020019250505060405180910390a3610ae9611bc3565b5050505050565b60105481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b5157600080fd5b600260149054906101000a900460ff16151515610b6d57600080fd5b600081111515610b7c57600080fd5b8060018190555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610be157600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2fde38b826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1515610c9d57600080fd5b6102c65a03f11515610cae57600080fd5b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d1157600080fd5b600260149054906101000a900460ff16151515610d2d57600080fd5b610d3561120e565b15610dd857600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166343d726d66040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1515610dbf57600080fd5b6102c65a03f11515610dd057600080fd5b505050610e72565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c52dc416040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1515610e5d57600080fd5b6102c65a03f11515610e6e57600080fd5b5050505b6001600260146101000a81548160ff0219169083151502179055506001905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610eef57600080fd5b600260149054906101000a900460ff16151515610f0b57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638456cb596040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1515610f9057600080fd5b6102c65a03f11515610fa157600080fd5b505050565b600b5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561100757600080fd5b600260149054906101000a900460ff1615151561102357600080fd5b828410151561103157600080fd5b60008211151561104057600080fd5b8360068190555082600781905550816009819055508060108190555050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110bd57600080fd5b600260149054906101000a900460ff161515156110d957600080fd5b6000811115156110e857600080fd5b80600b8190555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561114d57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f4ba83a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b15156111d257600080fd5b6102c65a03f115156111e357600080fd5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600154600c541015905090565b60055481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561127e57600080fd5b600260149054906101000a900460ff1615151561129a57600080fd5b82841015156112a857600080fd5b6000821115156112b757600080fd5b83600481905550826005819055508160088190555080600f8190555050505050565b600c5481565b60115481565b60008060008060008060009450600454871015801561130657506005548711155b93506000925083156113d55761132760045488611c9690919063ffffffff16565b9150600094505b600d805490508510156113d05782600d8681548110151561134b57fe5b906000526020600020906002020160000154018211151561138e57600d8581548110151561137557fe5b906000526020600020906002020160010154955061149a565b6113c1600d868154811015156113a057fe5b90600052602060002090600202016000015484611ba590919063ffffffff16565b9250848060010195505061132e565b611494565b6113ea60065488611c9690919063ffffffff16565b9050600094505b600e805490508510156114935782600e8681548110151561140e57fe5b906000526020600020906002020160000154018111151561145157600e8581548110151561143857fe5b906000526020600020906002020160010154955061149a565b611484600e8681548110151561146357fe5b90600052602060002090600202016000015484611ba590919063ffffffff16565b925084806001019550506113f1565b5b60115495505b5050505050919050565b60075481565b60006005544211905090565b600260149054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b600d8181548110151561150357fe5b90600052602060002090600202016000915090508060000154908060010154905082565b60006007544211905090565b600f5481565b60065481565b600e8181548110151561154e57fe5b90600052602060002090600202016000915090508060000154908060010154905082565b600260149054906101000a900460ff16151561158d57600080fd5b61159561120e565b1515156115a157600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fa89401a336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b151561165d57600080fd5b6102c65a03f1151561166e57600080fd5b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116ce57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561179b57600080fd5b6102c65a03f115156117ac57600080fd5b50505060405180519050505050565b60085481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561181c57600080fd5b600260149054906101000a900460ff1615151561183857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561185e57600080fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561190357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561193f57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60015481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6004544210158015611a6357506005544211155b80611a7e57506006544210158015611a7d57506007544211155b5b1515611a8957600080fd5b565b60008082840290506000841480611aac5750828482811515611aa957fe5b04145b1515611ab457fe5b8091505092915050565b6000808284811515611acc57fe5b0490508091505092915050565b600080611b026064611af48587611a8b90919063ffffffff16565b611abe90919063ffffffff16565b9050611b178185611ba590919063ffffffff16565b91505092915050565b6000611b3783600c54611ba590919063ffffffff16565b90506004544210158015611b4d57506005544211155b15611b7557600f548210151515611b6357600080fd5b6008548111151515611b7457600080fd5b5b6006544210158015611b8957506007544211155b15611ba0576009548111151515611b9f57600080fd5b5b505050565b6000808284019050838110151515611bb957fe5b8091505092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f340fa0134336040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b1515611c7f57600080fd5b6125ee5a03f11515611c9057600080fd5b50505050565b6000828211151515611ca457fe5b8183039050929150505600a165627a7a72305820571e21cf8cbdc77f8649a245db9d991c6607d38904e8ceffe6800f9f8ca922b70029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000005a609a50000000000000000000000000000000000000000000000000000000005a69645000000000000000000000000000000000000000000000000000000006fc23ac00000000000000000000000000000000000000000000000000000000005a730f50000000000000000000000000000000000000000000000000000000005a9788d00000000000000000000000000000000000000000000000000000014f46b04000000000000000000000000000000000000000000000000000000000001dcd650000000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000ab188acbb8a401277dc2d83c242677ca3c96ff05

-----Decoded View---------------
Arg [0] : _preIcoStartTime (uint256): 1516280400
Arg [1] : _preIcoEndTime (uint256): 1516856400
Arg [2] : _preIcoHardcap (uint256): 30000000000
Arg [3] : _icoStartTime (uint256): 1517490000
Arg [4] : _icoEndTime (uint256): 1519880400
Arg [5] : _icoHardcap (uint256): 1440000000000
Arg [6] : _softcap (uint256): 500000000
Arg [7] : _rate (uint256): 500
Arg [8] : _wallet (address): 0xaB188aCBB8a401277DC2D83C242677ca3C96fF05

-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000005a609a50
Arg [1] : 000000000000000000000000000000000000000000000000000000005a696450
Arg [2] : 00000000000000000000000000000000000000000000000000000006fc23ac00
Arg [3] : 000000000000000000000000000000000000000000000000000000005a730f50
Arg [4] : 000000000000000000000000000000000000000000000000000000005a9788d0
Arg [5] : 0000000000000000000000000000000000000000000000000000014f46b04000
Arg [6] : 000000000000000000000000000000000000000000000000000000001dcd6500
Arg [7] : 00000000000000000000000000000000000000000000000000000000000001f4
Arg [8] : 000000000000000000000000ab188acbb8a401277dc2d83c242677ca3c96ff05


Swarm Source

bzzr://e4b59a8a9504fbd901769041f7fa524c9c1f43beb810e64464bfe3ebd7331df5

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.