ETH Price: $2,545.00 (+2.40%)
Gas: 1.97 Gwei

Contract

0x26E75307Fc0C021472fEb8F727839531F112f317
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

TokenTracker

Crypto20 (C20) (@$0.0032)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
0x6680738f09880311fd320705b4fa0ba32c84e977232d4ce20ba303e1fa872aa4 Request Withdraw...(pending)2024-09-01 22:42:1723 hrs ago1725230537IN
Crypto20: C20 Token
0 ETH(Pending)(Pending)
Approve206391762024-08-30 5:02:593 days ago1724994179IN
Crypto20: C20 Token
0 ETH0.000018110.74835412
Approve205599992024-08-19 3:30:3514 days ago1724038235IN
Crypto20: C20 Token
0 ETH0.000055291.19122806
Approve205599972024-08-19 3:30:1114 days ago1724038211IN
Crypto20: C20 Token
0 ETH0.000025661.06013293
Approve205328732024-08-15 8:35:3518 days ago1723710935IN
Crypto20: C20 Token
0 ETH0.0000753.09861738
Approve204539432024-08-04 8:18:1129 days ago1722759491IN
Crypto20: C20 Token
0 ETH0.00003061.26420701
Approve204528002024-08-04 4:28:5929 days ago1722745739IN
Crypto20: C20 Token
0 ETH0.00004641
Approve204162522024-07-30 1:58:1134 days ago1722304691IN
Crypto20: C20 Token
0 ETH0.000152263.26188329
Approve204101082024-07-29 5:24:4735 days ago1722230687IN
Crypto20: C20 Token
0 ETH0.000043711.80616141
Approve203893212024-07-26 7:46:2338 days ago1721979983IN
Crypto20: C20 Token
0 ETH0.000135622.90553742
Approve203845532024-07-25 15:47:1139 days ago1721922431IN
Crypto20: C20 Token
0 ETH0.000191057.8610028
Approve203845512024-07-25 15:46:4739 days ago1721922407IN
Crypto20: C20 Token
0 ETH0.000329077.08991989
Approve203190182024-07-16 12:17:3548 days ago1721132255IN
Crypto20: C20 Token
0 ETH0.0004870710.4346632
Approve203181992024-07-16 9:32:5948 days ago1721122379IN
Crypto20: C20 Token
0 ETH0.000378778.11437297
Transfer203132972024-07-15 17:07:1149 days ago1721063231IN
Crypto20: C20 Token
0 ETH0.0013283826.55291642
Approve203117952024-07-15 12:04:4749 days ago1721045087IN
Crypto20: C20 Token
0 ETH0.000259775.56503455
Approve203023882024-07-14 4:34:5950 days ago1720931699IN
Crypto20: C20 Token
0 ETH0.000098072.10378033
Transfer202973732024-07-13 11:45:1151 days ago1720871111IN
Crypto20: C20 Token
0 ETH0.000057381.74137539
Transfer202973712024-07-13 11:44:4751 days ago1720871087IN
Crypto20: C20 Token
0 ETH0.000084241.68351409
Transfer202779282024-07-10 18:35:4754 days ago1720636547IN
Crypto20: C20 Token
0 ETH0.000472719.44897716
Approve202540782024-07-07 10:36:3557 days ago1720348595IN
Crypto20: C20 Token
0 ETH0.000064331.38
Approve202528052024-07-07 6:20:2357 days ago1720333223IN
Crypto20: C20 Token
0 ETH0.0010202642
Approve202528052024-07-07 6:20:2357 days ago1720333223IN
Crypto20: C20 Token
0 ETH0.003328137
Approve202528052024-07-07 6:20:2357 days ago1720333223IN
Crypto20: C20 Token
0 ETH0.0023806198
Approve202528052024-07-07 6:20:2357 days ago1720333223IN
Crypto20: C20 Token
0 ETH0.0011440447.09548472
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
144877572022-03-30 13:18:43887 days ago1648646323
Crypto20: C20 Token
99.29316541 ETH
144874962022-03-30 12:13:15887 days ago1648642395
Crypto20: C20 Token
1.14537475 ETH
144869462022-03-30 10:00:14887 days ago1648634414
Crypto20: C20 Token
1.76448923 ETH
144866412022-03-30 8:53:22887 days ago1648630402
Crypto20: C20 Token
0.06822236 ETH
144863222022-03-30 7:47:32887 days ago1648626452
Crypto20: C20 Token
0.72514945 ETH
144862812022-03-30 7:39:49887 days ago1648625989
Crypto20: C20 Token
9.21942853 ETH
144861442022-03-30 7:08:27887 days ago1648624107
Crypto20: C20 Token
0.05464396 ETH
144858552022-03-30 6:06:39887 days ago1648620399
Crypto20: C20 Token
0.43442934 ETH
144858352022-03-30 6:01:41887 days ago1648620101
Crypto20: C20 Token
1.14119299 ETH
144856462022-03-30 5:16:36887 days ago1648617396
Crypto20: C20 Token
1.14218306 ETH
144856362022-03-30 5:15:00887 days ago1648617300
Crypto20: C20 Token
5.64968344 ETH
144850422022-03-30 3:01:35887 days ago1648609295
Crypto20: C20 Token
3.41439828 ETH
144845202022-03-30 1:07:18887 days ago1648602438
Crypto20: C20 Token
0.46253353 ETH
144845042022-03-30 1:01:48887 days ago1648602108
Crypto20: C20 Token
2.14272838 ETH
144845032022-03-30 1:01:00887 days ago1648602060
Crypto20: C20 Token
4.34925871 ETH
144843642022-03-30 0:28:16887 days ago1648600096
Crypto20: C20 Token
0.03450536 ETH
144842352022-03-30 0:02:05887 days ago1648598525
Crypto20: C20 Token
1.17047082 ETH
144838762022-03-29 22:40:35887 days ago1648593635
Crypto20: C20 Token
1.05850636 ETH
144838532022-03-29 22:36:34887 days ago1648593394
Crypto20: C20 Token
9.11726786 ETH
144838162022-03-29 22:30:39887 days ago1648593039
Crypto20: C20 Token
4.15862761 ETH
144835132022-03-29 21:22:35888 days ago1648588955
Crypto20: C20 Token
2.56927819 ETH
144834332022-03-29 21:05:02888 days ago1648587902
Crypto20: C20 Token
2.23398495 ETH
144834152022-03-29 21:01:13888 days ago1648587673
Crypto20: C20 Token
0.50327909 ETH
144818112022-03-29 15:06:17888 days ago1648566377
Crypto20: C20 Token
2.10716606 ETH
144799692022-03-29 8:08:37888 days ago1648541317
Crypto20: C20 Token
0.12245073 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
C20

Compiler Version
v0.4.11+commit.68ef5810

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2017-10-13
*/

pragma solidity 0.4.11;

contract SafeMath {

  function safeMul(uint a, uint b) internal returns (uint) {
    uint c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }
  function safeSub(uint a, uint b) internal returns (uint) {
    assert(b <= a);
    return a - b;
  }
  function safeAdd(uint a, uint b) internal returns (uint) {
    uint c = a + b;
    assert(c>=a && c>=b);
    return c;
  }

  // mitigate short address attack
  // thanks to https://github.com/numerai/contract/blob/c182465f82e50ced8dacb3977ec374a892f5fa8c/contracts/Safe.sol#L30-L34.
  // TODO: doublecheck implication of >= compared to ==
  modifier onlyPayloadSize(uint numWords) {
     assert(msg.data.length >= numWords * 32 + 4);
     _;
  }

}


contract Token { // ERC20 standard

    function balanceOf(address _owner) constant returns (uint256 balance);
    function transfer(address _to, uint256 _value) returns (bool success);
    function transferFrom(address _from, address _to, uint256 _value) returns (bool success);
    function approve(address _spender, uint256 _value) returns (bool success);
    function allowance(address _owner, address _spender) constant returns (uint256 remaining);
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);

}


contract StandardToken is Token, SafeMath {

    uint256 public totalSupply;

    // TODO: update tests to expect throw
    function transfer(address _to, uint256 _value) onlyPayloadSize(2) returns (bool success) {
        require(_to != address(0));
        require(balances[msg.sender] >= _value && _value > 0);
        balances[msg.sender] = safeSub(balances[msg.sender], _value);
        balances[_to] = safeAdd(balances[_to], _value);
        Transfer(msg.sender, _to, _value);

        return true;
    }

    // TODO: update tests to expect throw
    function transferFrom(address _from, address _to, uint256 _value) onlyPayloadSize(3) returns (bool success) {
        require(_to != address(0));
        require(balances[_from] >= _value && allowed[_from][msg.sender] >= _value && _value > 0);
        balances[_from] = safeSub(balances[_from], _value);
        balances[_to] = safeAdd(balances[_to], _value);
        allowed[_from][msg.sender] = safeSub(allowed[_from][msg.sender], _value);
        Transfer(_from, _to, _value);

        return true;
    }

    function balanceOf(address _owner) constant returns (uint256 balance) {
        return balances[_owner];
    }

    // 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
    function approve(address _spender, uint256 _value) onlyPayloadSize(2) returns (bool success) {
        require((_value == 0) || (allowed[msg.sender][_spender] == 0));
        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);

        return true;
    }

    function changeApproval(address _spender, uint256 _oldValue, uint256 _newValue) onlyPayloadSize(3) returns (bool success) {
        require(allowed[msg.sender][_spender] == _oldValue);
        allowed[msg.sender][_spender] = _newValue;
        Approval(msg.sender, _spender, _newValue);

        return true;
    }

    function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
      return allowed[_owner][_spender];
    }

    mapping (address => uint256) balances;
    mapping (address => mapping (address => uint256)) allowed;

}


contract C20 is StandardToken {

    // FIELDS

    string public name = "Crypto20";
    string public symbol = "C20";
    uint256 public decimals = 18;
    string public version = "9.0";

    uint256 public tokenCap = 86206896 * 10**18;

    // crowdsale parameters
    uint256 public fundingStartBlock;
    uint256 public fundingEndBlock;

    // vesting fields
    address public vestingContract;
    bool private vestingSet = false;

    // root control
    address public fundWallet;
    // control of liquidity and limited control of updatePrice
    address public controlWallet;
    // time to wait between controlWallet price updates
    uint256 public waitTime = 5 hours;

    // fundWallet controlled state variables
    // halted: halt buying due to emergency, tradeable: signal that assets have been acquired
    bool public halted = false;
    bool public tradeable = false;

    // -- totalSupply defined in StandardToken
    // -- mapping to token balances done in StandardToken

    uint256 public previousUpdateTime = 0;
    Price public currentPrice;
    uint256 public minAmount = 0.04 ether;

    // map participant address to a withdrawal request
    mapping (address => Withdrawal) public withdrawals;
    // maps previousUpdateTime to the next price
    mapping (uint256 => Price) public prices;
    // maps addresses
    mapping (address => bool) public whitelist;

    // TYPES

    struct Price { // tokensPerEth
        uint256 numerator;
        uint256 denominator;
    }

    struct Withdrawal {
        uint256 tokens;
        uint256 time; // time for each withdrawal is set to the previousUpdateTime
    }

    // EVENTS

    event Buy(address indexed participant, address indexed beneficiary, uint256 ethValue, uint256 amountTokens);
    event AllocatePresale(address indexed participant, uint256 amountTokens);
    event Whitelist(address indexed participant);
    event PriceUpdate(uint256 numerator, uint256 denominator);
    event AddLiquidity(uint256 ethAmount);
    event RemoveLiquidity(uint256 ethAmount);
    event WithdrawRequest(address indexed participant, uint256 amountTokens);
    event Withdraw(address indexed participant, uint256 amountTokens, uint256 etherAmount);

    // MODIFIERS

    modifier isTradeable { // exempt vestingContract and fundWallet to allow dev allocations
        require(tradeable || msg.sender == fundWallet || msg.sender == vestingContract);
        _;
    }

    modifier onlyWhitelist {
        require(whitelist[msg.sender]);
        _;
    }

    modifier onlyFundWallet {
        require(msg.sender == fundWallet);
        _;
    }

    modifier onlyManagingWallets {
        require(msg.sender == controlWallet || msg.sender == fundWallet);
        _;
    }

    modifier only_if_controlWallet {
        if (msg.sender == controlWallet) _;
    }
    modifier require_waited {
        require(safeSub(now, waitTime) >= previousUpdateTime);
        _;
    }
    modifier only_if_increase (uint256 newNumerator) {
        if (newNumerator > currentPrice.numerator) _;
    }

    // CONSTRUCTOR

    function C20(address controlWalletInput, uint256 priceNumeratorInput, uint256 startBlockInput, uint256 endBlockInput) {
        require(controlWalletInput != address(0));
        require(priceNumeratorInput > 0);
        require(endBlockInput > startBlockInput);
        fundWallet = msg.sender;
        controlWallet = controlWalletInput;
        whitelist[fundWallet] = true;
        whitelist[controlWallet] = true;
        currentPrice = Price(priceNumeratorInput, 1000); // 1 token = 1 usd at ICO start
        fundingStartBlock = startBlockInput;
        fundingEndBlock = endBlockInput;
        previousUpdateTime = now;
    }

    // METHODS

    function setVestingContract(address vestingContractInput) external onlyFundWallet {
        require(vestingContractInput != address(0));
        vestingContract = vestingContractInput;
        whitelist[vestingContract] = true;
        vestingSet = true;
    }

    // allows controlWallet to update the price within a time contstraint, allows fundWallet complete control
    function updatePrice(uint256 newNumerator) external onlyManagingWallets {
        require(newNumerator > 0);
        require_limited_change(newNumerator);
        // either controlWallet command is compliant or transaction came from fundWallet
        currentPrice.numerator = newNumerator;
        // maps time to new Price (if not during ICO)
        prices[previousUpdateTime] = currentPrice;
        previousUpdateTime = now;
        PriceUpdate(newNumerator, currentPrice.denominator);
    }

    function require_limited_change (uint256 newNumerator)
        private
        only_if_controlWallet
        require_waited
        only_if_increase(newNumerator)
    {
        uint256 percentage_diff = 0;
        percentage_diff = safeMul(newNumerator, 100) / currentPrice.numerator;
        percentage_diff = safeSub(percentage_diff, 100);
        // controlWallet can only increase price by max 20% and only every waitTime
        require(percentage_diff <= 20);
    }

    function updatePriceDenominator(uint256 newDenominator) external onlyFundWallet {
        require(block.number > fundingEndBlock);
        require(newDenominator > 0);
        currentPrice.denominator = newDenominator;
        // maps time to new Price
        prices[previousUpdateTime] = currentPrice;
        previousUpdateTime = now;
        PriceUpdate(currentPrice.numerator, newDenominator);
    }

    function allocateTokens(address participant, uint256 amountTokens) private {
        require(vestingSet);
        // 13% of total allocated for PR, Marketing, Team, Advisors
        uint256 developmentAllocation = safeMul(amountTokens, 14942528735632185) / 100000000000000000;
        // check that token cap is not exceeded
        uint256 newTokens = safeAdd(amountTokens, developmentAllocation);
        require(safeAdd(totalSupply, newTokens) <= tokenCap);
        // increase token supply, assign tokens to participant
        totalSupply = safeAdd(totalSupply, newTokens);
        balances[participant] = safeAdd(balances[participant], amountTokens);
        balances[vestingContract] = safeAdd(balances[vestingContract], developmentAllocation);
    }

    function allocatePresaleTokens(address participant, uint amountTokens) external onlyFundWallet {
        require(block.number < fundingEndBlock);
        require(participant != address(0));
        whitelist[participant] = true; // automatically whitelist accepted presale
        allocateTokens(participant, amountTokens);
        Whitelist(participant);
        AllocatePresale(participant, amountTokens);
    }

    function verifyParticipant(address participant) external onlyManagingWallets {
        whitelist[participant] = true;
        Whitelist(participant);
    }

    function buy() external payable {
        buyTo(msg.sender);
    }

    function buyTo(address participant) public payable onlyWhitelist {
        require(!halted);
        require(participant != address(0));
        require(msg.value >= minAmount);
        require(block.number >= fundingStartBlock && block.number < fundingEndBlock);
        uint256 icoDenominator = icoDenominatorPrice();
        uint256 tokensToBuy = safeMul(msg.value, currentPrice.numerator) / icoDenominator;
        allocateTokens(participant, tokensToBuy);
        // send ether to fundWallet
        fundWallet.transfer(msg.value);
        Buy(msg.sender, participant, msg.value, tokensToBuy);
    }

    // time based on blocknumbers, assuming a blocktime of 30s
    function icoDenominatorPrice() public constant returns (uint256) {
        uint256 icoDuration = safeSub(block.number, fundingStartBlock);
        uint256 denominator;
        if (icoDuration < 2880) { // #blocks = 24*60*60/30 = 2880
            return currentPrice.denominator;
        } else if (icoDuration < 80640 ) { // #blocks = 4*7*24*60*60/30 = 80640
            denominator = safeMul(currentPrice.denominator, 105) / 100;
            return denominator;
        } else {
            denominator = safeMul(currentPrice.denominator, 110) / 100;
            return denominator;
        }
    }

    function requestWithdrawal(uint256 amountTokensToWithdraw) external isTradeable onlyWhitelist {
        require(block.number > fundingEndBlock);
        require(amountTokensToWithdraw > 0);
        address participant = msg.sender;
        require(balanceOf(participant) >= amountTokensToWithdraw);
        require(withdrawals[participant].tokens == 0); // participant cannot have outstanding withdrawals
        balances[participant] = safeSub(balances[participant], amountTokensToWithdraw);
        withdrawals[participant] = Withdrawal({tokens: amountTokensToWithdraw, time: previousUpdateTime});
        WithdrawRequest(participant, amountTokensToWithdraw);
    }

    function withdraw() external {
        address participant = msg.sender;
        uint256 tokens = withdrawals[participant].tokens;
        require(tokens > 0); // participant must have requested a withdrawal
        uint256 requestTime = withdrawals[participant].time;
        // obtain the next price that was set after the request
        Price price = prices[requestTime];
        require(price.numerator > 0); // price must have been set
        uint256 withdrawValue = safeMul(tokens, price.denominator) / price.numerator;
        // if contract ethbal > then send + transfer tokens to fundWallet, otherwise give tokens back
        withdrawals[participant].tokens = 0;
        if (this.balance >= withdrawValue)
            enact_withdrawal_greater_equal(participant, withdrawValue, tokens);
        else
            enact_withdrawal_less(participant, withdrawValue, tokens);
    }

    function enact_withdrawal_greater_equal(address participant, uint256 withdrawValue, uint256 tokens)
        private
    {
        assert(this.balance >= withdrawValue);
        balances[fundWallet] = safeAdd(balances[fundWallet], tokens);
        participant.transfer(withdrawValue);
        Withdraw(participant, tokens, withdrawValue);
    }
    function enact_withdrawal_less(address participant, uint256 withdrawValue, uint256 tokens)
        private
    {
        assert(this.balance < withdrawValue);
        balances[participant] = safeAdd(balances[participant], tokens);
        Withdraw(participant, tokens, 0); // indicate a failed withdrawal
    }


    function checkWithdrawValue(uint256 amountTokensToWithdraw) constant returns (uint256 etherValue) {
        require(amountTokensToWithdraw > 0);
        require(balanceOf(msg.sender) >= amountTokensToWithdraw);
        uint256 withdrawValue = safeMul(amountTokensToWithdraw, currentPrice.denominator) / currentPrice.numerator;
        require(this.balance >= withdrawValue);
        return withdrawValue;
    }

    // allow fundWallet or controlWallet to add ether to contract
    function addLiquidity() external onlyManagingWallets payable {
        require(msg.value > 0);
        AddLiquidity(msg.value);
    }

    // allow fundWallet to remove ether from contract
    function removeLiquidity(uint256 amount) external onlyManagingWallets {
        require(amount <= this.balance);
        fundWallet.transfer(amount);
        RemoveLiquidity(amount);
    }

    function changeFundWallet(address newFundWallet) external onlyFundWallet {
        require(newFundWallet != address(0));
        fundWallet = newFundWallet;
    }

    function changeControlWallet(address newControlWallet) external onlyFundWallet {
        require(newControlWallet != address(0));
        controlWallet = newControlWallet;
    }

    function changeWaitTime(uint256 newWaitTime) external onlyFundWallet {
        waitTime = newWaitTime;
    }

    function updateFundingStartBlock(uint256 newFundingStartBlock) external onlyFundWallet {
        require(block.number < fundingStartBlock);
        require(block.number < newFundingStartBlock);
        fundingStartBlock = newFundingStartBlock;
    }

    function updateFundingEndBlock(uint256 newFundingEndBlock) external onlyFundWallet {
        require(block.number < fundingEndBlock);
        require(block.number < newFundingEndBlock);
        fundingEndBlock = newFundingEndBlock;
    }

    function halt() external onlyFundWallet {
        halted = true;
    }
    function unhalt() external onlyFundWallet {
        halted = false;
    }

    function enableTrading() external onlyFundWallet {
        require(block.number > fundingEndBlock);
        tradeable = true;
    }

    // fallback function
    function() payable {
        require(tx.origin == msg.sender);
        buyTo(msg.sender);
    }

    function claimTokens(address _token) external onlyFundWallet {
        require(_token != address(0));
        Token token = Token(_token);
        uint256 balance = token.balanceOf(this);
        token.transfer(fundWallet, balance);
     }

    // prevent transfers until trading allowed
    function transfer(address _to, uint256 _value) isTradeable returns (bool success) {
        return super.transfer(_to, _value);
    }
    function transferFrom(address _from, address _to, uint256 _value) isTradeable returns (bool success) {
        return super.transferFrom(_from, _to, _value);
    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newWaitTime","type":"uint256"}],"name":"changeWaitTime","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newFundingStartBlock","type":"uint256"}],"name":"updateFundingStartBlock","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"previousUpdateTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newControlWallet","type":"address"}],"name":"changeControlWallet","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"vestingContract","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"halt","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"participant","type":"address"}],"name":"verifyParticipant","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"fundWallet","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newFundWallet","type":"address"}],"name":"changeFundWallet","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"vestingContractInput","type":"address"}],"name":"setVestingContract","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"withdrawals","outputs":[{"name":"tokens","type":"uint256"},{"name":"time","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"controlWallet","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"enableTrading","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newNumerator","type":"uint256"}],"name":"updatePrice","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"amountTokensToWithdraw","type":"uint256"}],"name":"checkWithdrawValue","outputs":[{"name":"etherValue","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"participant","type":"address"},{"name":"amountTokens","type":"uint256"}],"name":"allocatePresaleTokens","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"fundingEndBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_oldValue","type":"uint256"},{"name":"_newValue","type":"uint256"}],"name":"changeApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"minAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"removeLiquidity","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"currentPrice","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"amountTokensToWithdraw","type":"uint256"}],"name":"requestWithdrawal","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"halted","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"prices","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"unhalt","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"waitTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"fundingStartBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newDenominator","type":"uint256"}],"name":"updatePriceDenominator","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"participant","type":"address"}],"name":"buyTo","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"tokenCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"claimTokens","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newFundingEndBlock","type":"uint256"}],"name":"updateFundingEndBlock","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"addLiquidity","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"tradeable","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"icoDenominatorPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[{"name":"controlWalletInput","type":"address"},{"name":"priceNumeratorInput","type":"uint256"},{"name":"startBlockInput","type":"uint256"},{"name":"endBlockInput","type":"uint256"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"ethValue","type":"uint256"},{"indexed":false,"name":"amountTokens","type":"uint256"}],"name":"Buy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"},{"indexed":false,"name":"amountTokens","type":"uint256"}],"name":"AllocatePresale","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"}],"name":"Whitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"numerator","type":"uint256"},{"indexed":false,"name":"denominator","type":"uint256"}],"name":"PriceUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"ethAmount","type":"uint256"}],"name":"AddLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"ethAmount","type":"uint256"}],"name":"RemoveLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"},{"indexed":false,"name":"amountTokens","type":"uint256"}],"name":"WithdrawRequest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"},{"indexed":false,"name":"amountTokens","type":"uint256"},{"indexed":false,"name":"etherAmount","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"}]

6060604052604060405190810160405280600881526020017f43727970746f32300000000000000000000000000000000000000000000000008152506003908051906020019062000052929190620003d4565b50604060405190810160405280600381526020017f433230000000000000000000000000000000000000000000000000000000000081525060049080519060200190620000a1929190620003d4565b506012600555604060405190810160405280600381526020017f392e30000000000000000000000000000000000000000000000000000000000081525060069080519060200190620000f5929190620003d4565b506a474f05324221d718c000006007556000600a60146101000a81548160ff021916908315150217905550614650600d556000600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600f55668e1bc9bf04000060125534156200017557fe5b60405160808062003e71833981016040528080519060200190919080519060200190919080519060200190919080519060200190919050505b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515620001ec5760006000fd5b600083111515620001fd5760006000fd5b81811115156200020d5760006000fd5b33600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160156000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160156000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506040604051908101604052808481526020016103e881525060106000820151816000015560208201518160010155905050816008819055508060098190555042600f819055505b5050505062000483565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200041757805160ff191683800117855562000448565b8280016001018555821562000448579182015b82811115620004475782518255916020019190600101906200042a565b5b5090506200045791906200045b565b5090565b6200048091905b808211156200047c57600081600090555060010162000462565b5090565b90565b6139de80620004936000396000f30060606040523615610244576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461029157806306fe22121461032a578063095ea7b31461034a57806318160ddd146103a157806323b872dd146103c7578063276605bc1461043d578063313ce5671461045d578063347820eb146104835780633ccfd60b146104a957806354fd4d50146104bb5780635a8cf571146105545780635e6f60451461058a5780635ed7ca5b146105dc578063643a7695146105ee578063664a1ad6146106245780636fb4adff1461067657806370a08231146106ac57806374991569146106f65780637a9262a21461072c578063823e569e1461077d5780638a8c523c146107cf5780638d6cc56d146107e15780638f11e5f9146108015780638fee76871461083557806391b43d13146108745780639281cd651461089a57806395d89b41146108fa5780639b19251a146109935780639b2cb5d8146109e15780639c8f9f2314610a075780639d1b464a14610a275780639ee679e814610a54578063a6f2ae3a14610a74578063a9059cbb14610a7e578063b9b8af0b14610ad5578063bc31c1c114610aff578063cb3e64fd14610b3a578063ccca123b14610b4c578063d648a64714610b72578063dbb2455414610b98578063dcf72c1014610bb8578063dd54291b14610be6578063dd62ed3e14610c0c578063df8de3e714610c75578063e28b0d9a14610cab578063e8078d9414610ccb578063f5ac9db614610cd5578063fa0d80fc14610cff575b61028f5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161415156102835760006000fd5b61028c33610d25565b5b565b005b341561029957fe5b6102a1610f13565b60405180806020018281038252838181518152602001915080519060200190808383600083146102f0575b8051825260208311156102f0576020820191506020810190506020830392506102cc565b505050905090810190601f16801561031c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561033257fe5b6103486004808035906020019091905050610fb1565b005b341561035257fe5b610387600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061101a565b604051808215151515815260200191505060405180910390f35b34156103a957fe5b6103b16111be565b6040518082815260200191505060405180910390f35b34156103cf57fe5b610423600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506111c4565b604051808215151515815260200191505060405180910390f35b341561044557fe5b61045b60048080359060200190919050506112a8565b005b341561046557fe5b61046d611331565b6040518082815260200191505060405180910390f35b341561048b57fe5b610493611337565b6040518082815260200191505060405180910390f35b34156104b157fe5b6104b961133d565b005b34156104c357fe5b6104cb6114b8565b604051808060200182810382528381815181526020019150805190602001908083836000831461051a575b80518252602083111561051a576020820191506020810190506020830392506104f6565b505050905090810190601f1680156105465780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561055c57fe5b610588600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611556565b005b341561059257fe5b61059a611636565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105e457fe5b6105ec61165c565b005b34156105f657fe5b610622600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506116d8565b005b341561062c57fe5b610634611830565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561067e57fe5b6106aa600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611856565b005b34156106b457fe5b6106e0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611936565b6040518082815260200191505060405180910390f35b34156106fe57fe5b61072a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611980565b005b341561073457fe5b610760600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611af5565b604051808381526020018281526020019250505060405180910390f35b341561078557fe5b61078d611b19565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156107d757fe5b6107df611b3f565b005b34156107e957fe5b6107ff6004808035906020019091905050611bcc565b005b341561080957fe5b61081f6004808035906020019091905050611d22565b6040518082815260200191505060405180910390f35b341561083d57fe5b610872600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611da0565b005b341561087c57fe5b610884611f47565b6040518082815260200191505060405180910390f35b34156108a257fe5b6108e0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091908035906020019091905050611f4d565b604051808215151515815260200191505060405180910390f35b341561090257fe5b61090a6120e6565b6040518080602001828103825283818151815260200191508051906020019080838360008314610959575b80518252602083111561095957602082019150602081019050602083039250610935565b505050905090810190601f1680156109855780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561099b57fe5b6109c7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612184565b604051808215151515815260200191505060405180910390f35b34156109e957fe5b6109f16121a4565b6040518082815260200191505060405180910390f35b3415610a0f57fe5b610a2560048080359060200190919050506121aa565b005b3415610a2f57fe5b610a37612324565b604051808381526020018281526020019250505060405180910390f35b3415610a5c57fe5b610a726004808035906020019091905050612336565b005b610a7c61263a565b005b3415610a8657fe5b610abb600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612646565b604051808215151515815260200191505060405180910390f35b3415610add57fe5b610ae5612728565b604051808215151515815260200191505060405180910390f35b3415610b0757fe5b610b1d600480803590602001909190505061273b565b604051808381526020018281526020019250505060405180910390f35b3415610b4257fe5b610b4a61275f565b005b3415610b5457fe5b610b5c6127db565b6040518082815260200191505060405180910390f35b3415610b7a57fe5b610b826127e1565b6040518082815260200191505060405180910390f35b3415610ba057fe5b610bb660048080359060200190919050506127e7565b005b610be4600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d25565b005b3415610bee57fe5b610bf66128ed565b6040518082815260200191505060405180910390f35b3415610c1457fe5b610c5f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506128f3565b6040518082815260200191505060405180910390f35b3415610c7d57fe5b610ca9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061297b565b005b3415610cb357fe5b610cc96004808035906020019091905050612bc0565b005b610cd3612c49565b005b3415610cdd57fe5b610ce5612d49565b604051808215151515815260200191505060405180910390f35b3415610d0757fe5b610d0f612d5c565b6040518082815260200191505060405180910390f35b60006000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610d825760006000fd5b600e60009054906101000a900460ff16151515610d9f5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610ddc5760006000fd5b6012543410151515610dee5760006000fd5b6008544310158015610e01575060095443105b1515610e0d5760006000fd5b610e15612d5c565b915081610e2734601060000154612de5565b811515610e3057fe5b049050610e3d8382612e1a565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051809050600060405180830381858888f193505050501515610e9f57fe5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f89f5adc174562e07c9c9b1cae7109bbecb21cf9d1b2847e550042b8653c54a0e3484604051808381526020018281526020019250505060405180910390a35b5b505050565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fa95780601f10610f7e57610100808354040283529160200191610fa9565b820191906000526020600020905b815481529060010190602001808311610f8c57829003601f168201915b505050505081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561100e5760006000fd5b80600d819055505b5b50565b600060026004602082020160003690501015151561103457fe5b60008314806110bf57506000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15156110cb5760006000fd5b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a3600191505b5b5092915050565b60005481565b6000600e60019054906101000a900460ff168061122e5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806112865750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156112925760006000fd5b61129d848484612ffe565b90505b5b9392505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113055760006000fd5b600854431015156113165760006000fd5b80431015156113255760006000fd5b806008819055505b5b50565b60055481565b600f5481565b60006000600060006000339450601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154935060008411151561139f5760006000fd5b601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015492506014600084815260200190815260200160002091506000826000015411151561140d5760006000fd5b8160000154611420858460010154612de5565b81151561142957fe5b0490506000601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550803073ffffffffffffffffffffffffffffffffffffffff16311015156114a45761149f8582866133c9565b6114b0565b6114af858286613558565b5b5b5050505050565b60068054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561154e5780601f106115235761010080835404028352916020019161154e565b820191906000526020600020905b81548152906001019060200180831161153157829003601f168201915b505050505081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115b35760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156115f05760006000fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b50565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116b95760006000fd5b6001600e60006101000a81548160ff0219169083151502179055505b5b565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806117815750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561178d5760006000fd5b6001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e60405180905060405180910390a25b5b50565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118b35760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156118f05760006000fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119dd5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611a1a5760006000fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160156000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60146101000a81548160ff0219169083151502179055505b5b50565b60136020528060005260406000206000915090508060000154908060010154905082565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b9c5760006000fd5b60095443111515611bad5760006000fd5b6001600e60016101000a81548160ff0219169083151502179055505b5b565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611c755750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611c815760006000fd5b600081111515611c915760006000fd5b611c9a81613663565b80601060000181905550601060146000600f548152602001908152602001600020600082015481600001556001820154816001015590505042600f819055507f92664190cca12aca9cd5309d87194bdda75bb51362d71c06e1a6f75c7c76571181601060010154604051808381526020018281526020019250505060405180910390a15b5b50565b60006000600083111515611d365760006000fd5b82611d4033611936565b10151515611d4e5760006000fd5b601060000154611d6384601060010154612de5565b811515611d6c57fe5b049050803073ffffffffffffffffffffffffffffffffffffffff163110151515611d965760006000fd5b8091505b50919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611dfd5760006000fd5b60095443101515611e0e5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611e4b5760006000fd5b6001601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611ead8282612e1a565b8173ffffffffffffffffffffffffffffffffffffffff167feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e60405180905060405180910390a28173ffffffffffffffffffffffffffffffffffffffff167f69488271d7ab6c5d1d852b2fedbeafcee0ad158162b8c58145130bacd56bff76826040518082815260200191505060405180910390a25b5b5050565b60095481565b6000600360046020820201600036905010151515611f6757fe5b83600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141515611ff25760006000fd5b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a3600191505b5b509392505050565b60048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561217c5780601f106121515761010080835404028352916020019161217c565b820191906000526020600020905b81548152906001019060200180831161215f57829003601f168201915b505050505081565b60156020528060005260406000206000915054906101000a900460ff1681565b60125481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806122535750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561225f5760006000fd5b3073ffffffffffffffffffffffffffffffffffffffff163181111515156122865760006000fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051809050600060405180830381858888f1935050505015156122e857fe5b7f9a5a8a32afd899e7f95003c6e21c9fab2d50e11992439d14472229180c60c7aa816040518082815260200191505060405180910390a15b5b50565b60108060000154908060010154905082565b6000600e60019054906101000a900460ff16806123a05750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806123f85750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156124045760006000fd5b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561245d5760006000fd5b6009544311151561246e5760006000fd5b60008211151561247e5760006000fd5b3390508161248b82611936565b101515156124995760006000fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415156124eb5760006000fd5b612534600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613730565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550604060405190810160405280838152602001600f54815250601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101559050508073ffffffffffffffffffffffffffffffffffffffff167f17040713250ec5f668a1c39e7939900e78558350dbaff0ebef34268dfa8ea4ac836040518082815260200191505060405180910390a25b5b5b5050565b61264333610d25565b5b565b6000600e60019054906101000a900460ff16806126b05750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806127085750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156127145760006000fd5b61271e838361374a565b90505b5b92915050565b600e60009054906101000a900460ff1681565b60146020528060005260406000206000915090508060000154908060010154905082565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156127bc5760006000fd5b6000600e60006101000a81548160ff0219169083151502179055505b5b565b600d5481565b60085481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156128445760006000fd5b600954431115156128555760006000fd5b6000811115156128655760006000fd5b80601060010181905550601060146000600f548152602001908152602001600020600082015481600001556001820154816001015590505042600f819055507f92664190cca12aca9cd5309d87194bdda75bb51362d71c06e1a6f75c7c76571160106000015482604051808381526020018281526020019250505060405180910390a15b5b50565b60075481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b92915050565b60006000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129dc5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612a195760006000fd5b8291508173ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515612abc57fe5b6102c65a03f11515612aca57fe5b5050506040518051905090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515612ba057fe5b6102c65a03f11515612bae57fe5b50505060405180519050505b5b505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c1d5760006000fd5b60095443101515612c2e5760006000fd5b8043101515612c3d5760006000fd5b806009819055505b5b50565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612cf25750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612cfe5760006000fd5b600034111515612d0e5760006000fd5b7ff53d9d58a7ff16a2e1360446f1c4b5e81a427d3efd25615be081f4003662400a346040518082815260200191505060405180910390a15b5b565b600e60019054906101000a900460ff1681565b600060006000612d6e43600854613730565b9150610b40821015612d87576010600101549250612de0565b62013b00821015612db8576064612da46010600101546069612de5565b811515612dad57fe5b049050809250612de0565b6064612dca601060010154606e612de5565b811515612dd357fe5b049050809250612de0565b5b5b505090565b6000600082840290506000841480612e075750828482811515612e0457fe5b04145b1515612e0f57fe5b8091505b5092915050565b60006000600a60149054906101000a900460ff161515612e3a5760006000fd5b67016345785d8a0000612e54846635162695555b39612de5565b811515612e5d57fe5b049150612e6a8383613986565b9050600754612e7b60005483613986565b11151515612e895760006000fd5b612e9560005482613986565b600081905550612ee4600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613986565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f9260016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613986565b60016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50505050565b600060036004602082020160003690501015151561301857fe5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156130555760006000fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015613120575082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b801561312c5750600083115b15156131385760006000fd5b613181600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613730565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061320d600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613986565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132d6600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613730565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505b5b509392505050565b813073ffffffffffffffffffffffffffffffffffffffff1631101515156133ec57fe5b61345760016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613986565b60016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051809050600060405180830381858888f1935050505015156134fc57fe5b8273ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5688284604051808381526020018281526020019250505060405180910390a25b505050565b813073ffffffffffffffffffffffffffffffffffffffff163110151561357a57fe5b6135c3600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613986565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568826000604051808381526020018281526020019250505060405180910390a25b505050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561372b57600f546136ca42600d54613730565b101515156136d85760006000fd5b8160106000015481111561372757600091506010600001546136fb846064612de5565b81151561370457fe5b049150613712826064613730565b9150601482111515156137255760006000fd5b5b5b5b505b5b5b5050565b600082821115151561373e57fe5b81830390505b92915050565b600060026004602082020160003690501015151561376457fe5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156137a15760006000fd5b82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156137f05750600083115b15156137fc5760006000fd5b613845600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613730565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138d1600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613986565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505b5b5092915050565b60006000828401905083811015801561399f5750828110155b15156139a757fe5b8091505b50929150505600a165627a7a72305820a1845868b1371865b636a79c2503060ea66461cd206d79eb74da145b034d97af002900000000000000000000000015756c7f329e3e00ab15d71f09655bd8df14b7fa0000000000000000000000000000000000000000000000000000000000053020000000000000000000000000000000000000000000000000000000000042af90000000000000000000000000000000000000000000000000000000000044ab60

Deployed Bytecode

0x60606040523615610244576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461029157806306fe22121461032a578063095ea7b31461034a57806318160ddd146103a157806323b872dd146103c7578063276605bc1461043d578063313ce5671461045d578063347820eb146104835780633ccfd60b146104a957806354fd4d50146104bb5780635a8cf571146105545780635e6f60451461058a5780635ed7ca5b146105dc578063643a7695146105ee578063664a1ad6146106245780636fb4adff1461067657806370a08231146106ac57806374991569146106f65780637a9262a21461072c578063823e569e1461077d5780638a8c523c146107cf5780638d6cc56d146107e15780638f11e5f9146108015780638fee76871461083557806391b43d13146108745780639281cd651461089a57806395d89b41146108fa5780639b19251a146109935780639b2cb5d8146109e15780639c8f9f2314610a075780639d1b464a14610a275780639ee679e814610a54578063a6f2ae3a14610a74578063a9059cbb14610a7e578063b9b8af0b14610ad5578063bc31c1c114610aff578063cb3e64fd14610b3a578063ccca123b14610b4c578063d648a64714610b72578063dbb2455414610b98578063dcf72c1014610bb8578063dd54291b14610be6578063dd62ed3e14610c0c578063df8de3e714610c75578063e28b0d9a14610cab578063e8078d9414610ccb578063f5ac9db614610cd5578063fa0d80fc14610cff575b61028f5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161415156102835760006000fd5b61028c33610d25565b5b565b005b341561029957fe5b6102a1610f13565b60405180806020018281038252838181518152602001915080519060200190808383600083146102f0575b8051825260208311156102f0576020820191506020810190506020830392506102cc565b505050905090810190601f16801561031c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561033257fe5b6103486004808035906020019091905050610fb1565b005b341561035257fe5b610387600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061101a565b604051808215151515815260200191505060405180910390f35b34156103a957fe5b6103b16111be565b6040518082815260200191505060405180910390f35b34156103cf57fe5b610423600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506111c4565b604051808215151515815260200191505060405180910390f35b341561044557fe5b61045b60048080359060200190919050506112a8565b005b341561046557fe5b61046d611331565b6040518082815260200191505060405180910390f35b341561048b57fe5b610493611337565b6040518082815260200191505060405180910390f35b34156104b157fe5b6104b961133d565b005b34156104c357fe5b6104cb6114b8565b604051808060200182810382528381815181526020019150805190602001908083836000831461051a575b80518252602083111561051a576020820191506020810190506020830392506104f6565b505050905090810190601f1680156105465780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561055c57fe5b610588600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611556565b005b341561059257fe5b61059a611636565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105e457fe5b6105ec61165c565b005b34156105f657fe5b610622600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506116d8565b005b341561062c57fe5b610634611830565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561067e57fe5b6106aa600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611856565b005b34156106b457fe5b6106e0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611936565b6040518082815260200191505060405180910390f35b34156106fe57fe5b61072a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611980565b005b341561073457fe5b610760600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611af5565b604051808381526020018281526020019250505060405180910390f35b341561078557fe5b61078d611b19565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156107d757fe5b6107df611b3f565b005b34156107e957fe5b6107ff6004808035906020019091905050611bcc565b005b341561080957fe5b61081f6004808035906020019091905050611d22565b6040518082815260200191505060405180910390f35b341561083d57fe5b610872600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611da0565b005b341561087c57fe5b610884611f47565b6040518082815260200191505060405180910390f35b34156108a257fe5b6108e0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091908035906020019091905050611f4d565b604051808215151515815260200191505060405180910390f35b341561090257fe5b61090a6120e6565b6040518080602001828103825283818151815260200191508051906020019080838360008314610959575b80518252602083111561095957602082019150602081019050602083039250610935565b505050905090810190601f1680156109855780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561099b57fe5b6109c7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612184565b604051808215151515815260200191505060405180910390f35b34156109e957fe5b6109f16121a4565b6040518082815260200191505060405180910390f35b3415610a0f57fe5b610a2560048080359060200190919050506121aa565b005b3415610a2f57fe5b610a37612324565b604051808381526020018281526020019250505060405180910390f35b3415610a5c57fe5b610a726004808035906020019091905050612336565b005b610a7c61263a565b005b3415610a8657fe5b610abb600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612646565b604051808215151515815260200191505060405180910390f35b3415610add57fe5b610ae5612728565b604051808215151515815260200191505060405180910390f35b3415610b0757fe5b610b1d600480803590602001909190505061273b565b604051808381526020018281526020019250505060405180910390f35b3415610b4257fe5b610b4a61275f565b005b3415610b5457fe5b610b5c6127db565b6040518082815260200191505060405180910390f35b3415610b7a57fe5b610b826127e1565b6040518082815260200191505060405180910390f35b3415610ba057fe5b610bb660048080359060200190919050506127e7565b005b610be4600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d25565b005b3415610bee57fe5b610bf66128ed565b6040518082815260200191505060405180910390f35b3415610c1457fe5b610c5f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506128f3565b6040518082815260200191505060405180910390f35b3415610c7d57fe5b610ca9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061297b565b005b3415610cb357fe5b610cc96004808035906020019091905050612bc0565b005b610cd3612c49565b005b3415610cdd57fe5b610ce5612d49565b604051808215151515815260200191505060405180910390f35b3415610d0757fe5b610d0f612d5c565b6040518082815260200191505060405180910390f35b60006000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610d825760006000fd5b600e60009054906101000a900460ff16151515610d9f5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610ddc5760006000fd5b6012543410151515610dee5760006000fd5b6008544310158015610e01575060095443105b1515610e0d5760006000fd5b610e15612d5c565b915081610e2734601060000154612de5565b811515610e3057fe5b049050610e3d8382612e1a565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051809050600060405180830381858888f193505050501515610e9f57fe5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f89f5adc174562e07c9c9b1cae7109bbecb21cf9d1b2847e550042b8653c54a0e3484604051808381526020018281526020019250505060405180910390a35b5b505050565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fa95780601f10610f7e57610100808354040283529160200191610fa9565b820191906000526020600020905b815481529060010190602001808311610f8c57829003601f168201915b505050505081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561100e5760006000fd5b80600d819055505b5b50565b600060026004602082020160003690501015151561103457fe5b60008314806110bf57506000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15156110cb5760006000fd5b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a3600191505b5b5092915050565b60005481565b6000600e60019054906101000a900460ff168061122e5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806112865750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156112925760006000fd5b61129d848484612ffe565b90505b5b9392505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113055760006000fd5b600854431015156113165760006000fd5b80431015156113255760006000fd5b806008819055505b5b50565b60055481565b600f5481565b60006000600060006000339450601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154935060008411151561139f5760006000fd5b601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015492506014600084815260200190815260200160002091506000826000015411151561140d5760006000fd5b8160000154611420858460010154612de5565b81151561142957fe5b0490506000601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550803073ffffffffffffffffffffffffffffffffffffffff16311015156114a45761149f8582866133c9565b6114b0565b6114af858286613558565b5b5b5050505050565b60068054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561154e5780601f106115235761010080835404028352916020019161154e565b820191906000526020600020905b81548152906001019060200180831161153157829003601f168201915b505050505081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115b35760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156115f05760006000fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b50565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116b95760006000fd5b6001600e60006101000a81548160ff0219169083151502179055505b5b565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806117815750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561178d5760006000fd5b6001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e60405180905060405180910390a25b5b50565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118b35760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156118f05760006000fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119dd5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611a1a5760006000fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160156000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60146101000a81548160ff0219169083151502179055505b5b50565b60136020528060005260406000206000915090508060000154908060010154905082565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b9c5760006000fd5b60095443111515611bad5760006000fd5b6001600e60016101000a81548160ff0219169083151502179055505b5b565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611c755750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611c815760006000fd5b600081111515611c915760006000fd5b611c9a81613663565b80601060000181905550601060146000600f548152602001908152602001600020600082015481600001556001820154816001015590505042600f819055507f92664190cca12aca9cd5309d87194bdda75bb51362d71c06e1a6f75c7c76571181601060010154604051808381526020018281526020019250505060405180910390a15b5b50565b60006000600083111515611d365760006000fd5b82611d4033611936565b10151515611d4e5760006000fd5b601060000154611d6384601060010154612de5565b811515611d6c57fe5b049050803073ffffffffffffffffffffffffffffffffffffffff163110151515611d965760006000fd5b8091505b50919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611dfd5760006000fd5b60095443101515611e0e5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611e4b5760006000fd5b6001601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611ead8282612e1a565b8173ffffffffffffffffffffffffffffffffffffffff167feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e60405180905060405180910390a28173ffffffffffffffffffffffffffffffffffffffff167f69488271d7ab6c5d1d852b2fedbeafcee0ad158162b8c58145130bacd56bff76826040518082815260200191505060405180910390a25b5b5050565b60095481565b6000600360046020820201600036905010151515611f6757fe5b83600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141515611ff25760006000fd5b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a3600191505b5b509392505050565b60048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561217c5780601f106121515761010080835404028352916020019161217c565b820191906000526020600020905b81548152906001019060200180831161215f57829003601f168201915b505050505081565b60156020528060005260406000206000915054906101000a900460ff1681565b60125481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806122535750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561225f5760006000fd5b3073ffffffffffffffffffffffffffffffffffffffff163181111515156122865760006000fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051809050600060405180830381858888f1935050505015156122e857fe5b7f9a5a8a32afd899e7f95003c6e21c9fab2d50e11992439d14472229180c60c7aa816040518082815260200191505060405180910390a15b5b50565b60108060000154908060010154905082565b6000600e60019054906101000a900460ff16806123a05750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806123f85750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156124045760006000fd5b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561245d5760006000fd5b6009544311151561246e5760006000fd5b60008211151561247e5760006000fd5b3390508161248b82611936565b101515156124995760006000fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415156124eb5760006000fd5b612534600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613730565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550604060405190810160405280838152602001600f54815250601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101559050508073ffffffffffffffffffffffffffffffffffffffff167f17040713250ec5f668a1c39e7939900e78558350dbaff0ebef34268dfa8ea4ac836040518082815260200191505060405180910390a25b5b5b5050565b61264333610d25565b5b565b6000600e60019054906101000a900460ff16806126b05750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806127085750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156127145760006000fd5b61271e838361374a565b90505b5b92915050565b600e60009054906101000a900460ff1681565b60146020528060005260406000206000915090508060000154908060010154905082565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156127bc5760006000fd5b6000600e60006101000a81548160ff0219169083151502179055505b5b565b600d5481565b60085481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156128445760006000fd5b600954431115156128555760006000fd5b6000811115156128655760006000fd5b80601060010181905550601060146000600f548152602001908152602001600020600082015481600001556001820154816001015590505042600f819055507f92664190cca12aca9cd5309d87194bdda75bb51362d71c06e1a6f75c7c76571160106000015482604051808381526020018281526020019250505060405180910390a15b5b50565b60075481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b92915050565b60006000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129dc5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612a195760006000fd5b8291508173ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515612abc57fe5b6102c65a03f11515612aca57fe5b5050506040518051905090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515612ba057fe5b6102c65a03f11515612bae57fe5b50505060405180519050505b5b505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c1d5760006000fd5b60095443101515612c2e5760006000fd5b8043101515612c3d5760006000fd5b806009819055505b5b50565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612cf25750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612cfe5760006000fd5b600034111515612d0e5760006000fd5b7ff53d9d58a7ff16a2e1360446f1c4b5e81a427d3efd25615be081f4003662400a346040518082815260200191505060405180910390a15b5b565b600e60019054906101000a900460ff1681565b600060006000612d6e43600854613730565b9150610b40821015612d87576010600101549250612de0565b62013b00821015612db8576064612da46010600101546069612de5565b811515612dad57fe5b049050809250612de0565b6064612dca601060010154606e612de5565b811515612dd357fe5b049050809250612de0565b5b5b505090565b6000600082840290506000841480612e075750828482811515612e0457fe5b04145b1515612e0f57fe5b8091505b5092915050565b60006000600a60149054906101000a900460ff161515612e3a5760006000fd5b67016345785d8a0000612e54846635162695555b39612de5565b811515612e5d57fe5b049150612e6a8383613986565b9050600754612e7b60005483613986565b11151515612e895760006000fd5b612e9560005482613986565b600081905550612ee4600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613986565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f9260016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613986565b60016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50505050565b600060036004602082020160003690501015151561301857fe5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156130555760006000fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015613120575082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b801561312c5750600083115b15156131385760006000fd5b613181600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613730565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061320d600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613986565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132d6600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613730565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505b5b509392505050565b813073ffffffffffffffffffffffffffffffffffffffff1631101515156133ec57fe5b61345760016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613986565b60016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051809050600060405180830381858888f1935050505015156134fc57fe5b8273ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5688284604051808381526020018281526020019250505060405180910390a25b505050565b813073ffffffffffffffffffffffffffffffffffffffff163110151561357a57fe5b6135c3600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613986565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568826000604051808381526020018281526020019250505060405180910390a25b505050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561372b57600f546136ca42600d54613730565b101515156136d85760006000fd5b8160106000015481111561372757600091506010600001546136fb846064612de5565b81151561370457fe5b049150613712826064613730565b9150601482111515156137255760006000fd5b5b5b5b505b5b5b5050565b600082821115151561373e57fe5b81830390505b92915050565b600060026004602082020160003690501015151561376457fe5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156137a15760006000fd5b82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156137f05750600083115b15156137fc5760006000fd5b613845600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613730565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138d1600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613986565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505b5b5092915050565b60006000828401905083811015801561399f5750828110155b15156139a757fe5b8091505b50929150505600a165627a7a72305820a1845868b1371865b636a79c2503060ea66461cd206d79eb74da145b034d97af0029

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

00000000000000000000000015756c7f329e3e00ab15d71f09655bd8df14b7fa0000000000000000000000000000000000000000000000000000000000053020000000000000000000000000000000000000000000000000000000000042af90000000000000000000000000000000000000000000000000000000000044ab60

-----Decoded View---------------
Arg [0] : controlWalletInput (address): 0x15756c7F329e3E00AB15D71f09655bD8Df14b7fa
Arg [1] : priceNumeratorInput (uint256): 340000
Arg [2] : startBlockInput (uint256): 4370320
Arg [3] : endBlockInput (uint256): 4500320

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 00000000000000000000000015756c7f329e3e00ab15d71f09655bd8df14b7fa
Arg [1] : 0000000000000000000000000000000000000000000000000000000000053020
Arg [2] : 000000000000000000000000000000000000000000000000000000000042af90
Arg [3] : 000000000000000000000000000000000000000000000000000000000044ab60


Swarm Source

bzzr://a1845868b1371865b636a79c2503060ea66461cd206d79eb74da145b034d97af

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

OVERVIEW

Tokenized Crypto Index Fund.

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.