Contract 0x26e75307fc0c021472feb8f727839531f112f317

 

Contract Overview

Crypto20
Balance:
618.49001782209761861 Ether

EtherValue:
$76,674.21 (@ $123.97/ETH)
TxHash Block Age From To Value [TxFee]
0x0c069931070afd769c1b347595c24cc771cd9c827771d1271d9e31442460cf97(pending)8 days 3 hrs ago0xeb76758c432f324adec5a5157c59bdeb4c12ad1b  IN  0x26e75307fc0c021472feb8f727839531f112f3170 Ether(Pending)
0x257c1addce64568e83c07941d9d56015256282625064f6df316da8981ef56248723022254 mins ago0x15756c7f329e3e00ab15d71f09655bd8df14b7fa  IN   Crypto200 Ether0.002188373753
0x0c243c8f6ec73f657b2cd6197d01e9fd0eca0564cef328d60d9b6c3e6a371e3772300411 hr 54 mins ago0x15756c7f329e3e00ab15d71f09655bd8df14b7fa  IN   Crypto200 Ether0.002172958239
0x7ab6b5b29441ae2bb283c49403740fb087a9380310da45433db0ea65dca953ba72298772 hrs 55 mins ago0x15756c7f329e3e00ab15d71f09655bd8df14b7fa  IN   Crypto200 Ether0.002188373753
0xfc1c86021ace1449f598ae32fe52416782a7e07af981247933c8f212b3716cba72298243 hrs 16 mins ago0x303380902822c5068b0f2e0ed1aac746c38f655a  IN   Crypto200 Ether0.00019002
0x1e6b84fccc96a6ec7eb0b9247d8bca94dd29ee38596670846c1a24d62c2438f272297093 hrs 54 mins ago0x15756c7f329e3e00ab15d71f09655bd8df14b7fa  IN   Crypto200 Ether0.002188373753
0xde89e2e1c49097e461137d095bf838df4f8671e479ebf7f15598ceeb4228fa5e72295154 hrs 55 mins ago0x15756c7f329e3e00ab15d71f09655bd8df14b7fa  IN   Crypto200 Ether0.002172958239
0xc1279b421d97a2e85ec1086d224ea8afa1d8af9cf04dc824f8a4af561a64c50072293375 hrs 54 mins ago0x15756c7f329e3e00ab15d71f09655bd8df14b7fa  IN   Crypto200 Ether0.002188373753
0x194ce5702388f5782f3abfce1f2f2370876d72e65ff4a40be9136d218df9510d72293026 hrs 7 mins ago0xc877c5752c0009a2d37834ff1d576ab3736b53af  IN   Crypto200 Ether0.00155554
0xfefecf2907cf165f350dbde49e8f325d911924531d62df960fa120df9dd3fedf72291666 hrs 55 mins ago0x15756c7f329e3e00ab15d71f09655bd8df14b7fa  IN   Crypto200 Ether0.002188373753
0x94cb68989bfb57e7a6b7c5c8b576c7985818178b0eda6223beef64990f83b0b072289947 hrs 55 mins ago0x15756c7f329e3e00ab15d71f09655bd8df14b7fa  IN   Crypto200 Ether0.002172958239
0xfe7b539da6d63ee346be3118916f433a3edc3ade4fbddea7efb649cde2fcdfe272287958 hrs 54 mins ago0x15756c7f329e3e00ab15d71f09655bd8df14b7fa  IN   Crypto200 Ether0.002188373753
0x149a8bce08237260f26e6b08cc004e147e0a6f3a932582b8533a822bc92f788072287589 hrs 8 mins ago0x303380902822c5068b0f2e0ed1aac746c38f655a  IN   Crypto200 Ether0.00026502
0xd8644752482efe5f6e4653c705587c327cc2446db450ad326fb7bc0cb55b983372286449 hrs 54 mins ago0x15756c7f329e3e00ab15d71f09655bd8df14b7fa  IN   Crypto200 Ether0.002172958239
0xb3defbdc106caf2504c953bf9261b72aea3caadb61b77816e4be96322575e91c722846510 hrs 54 mins ago0x15756c7f329e3e00ab15d71f09655bd8df14b7fa  IN   Crypto200 Ether0.002188373753
0x7ceb52c6c0a94074afaf9f57cf88034b5707725e1c2dc354f85bcdc32b47d837722843411 hrs 7 mins ago0x2f74a2689fc516906b4ca845e6aae2f848513cdc  IN   Crypto200 Ether0.00052876
0x4aa9a4f88f382cd049dbc65a7760908ffc2280854a7f88371725e313e69423ee722831011 hrs 44 mins agoHitBTC_2  IN   Crypto200 Ether0.000583748
0x7b1697c30251588224f2826aead36f859e4525762e2f5cb2d0d76107631e96f0722830811 hrs 45 mins agoHitBTC_3  IN   Crypto200 Ether0.000247442
0x090448671814fb32a5d49bc87001c9b7d640941912ca64967d0e08ee8728e2bc722828611 hrs 53 mins ago0xd3e9d1162498c085cb12cad70026b2becfe692f5  IN   Crypto200 Ether0.000117756
0x173a79cda8955509faa2aee905b15272377f99f9c59bced4630e182a7db36092722827911 hrs 54 mins ago0x15756c7f329e3e00ab15d71f09655bd8df14b7fa  IN   Crypto200 Ether0.002172958239
0xd3c73211acea6337e2c528c23fe0f110f604ac0173cf8b4e7ddaa09b065abbd2722821912 hrs 16 mins ago0xd3e9d1162498c085cb12cad70026b2becfe692f5  IN   Crypto200 Ether0.000208695
0x7cf4129ce159113038fc1744d983f2b17cc06bc6dd2d28af512cab292a2709fb722819412 hrs 25 mins ago0xa4ea18c7cdef2063fb95bcef0bf0e6b16feeb97f  IN   Crypto200 Ether0.002167916
0x637707de922e14997acc0e862637d6d133f3cfd31c3ddcd98e44fa748b45b751722816412 hrs 34 mins ago0x5d0d13ce6322ccf43cf7bfcc0b99cfaa589436ec  IN   Crypto200 Ether0.00155554
0x451522521e8aae2aab318b27bd93772ebdfffe81ac8a32a536c0f57fca9c57ae722810512 hrs 54 mins ago0x15756c7f329e3e00ab15d71f09655bd8df14b7fa  IN   Crypto200 Ether0.002188373753
0x0655c18b386f617dd41558606274a8569e970f9e7c9bceeb07e37c5aaf5895ce722792813 hrs 54 mins ago0x15756c7f329e3e00ab15d71f09655bd8df14b7fa  IN   Crypto200 Ether0.002172958239
[ Download CSV Export 

Latest 25 Internal Transaction, Click here to view more Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0x090448671814fb32a5d49bc87001c9b7d640941912ca64967d0e08ee8728e2bc722828611 hrs 53 mins ago0x26e75307fc0c021472feb8f727839531f112f3170xd3e9d1162498c085cb12cad70026b2becfe692f54.47844953830841884 Ether
0x16b350a61614f98e95aca9fbaf5ba63cc0cdc9f5d85248ae784a7fdabb9c222c72149313 days 16 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170xcbbbfa13b998e815c817636e2337bfd83a45d86c5.769229149408738819 Ether
0x0a958c4eab5d64472f57e911540b2467ff261931254db5c34f50e070c4b3175672116354 days 11 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170x9b83f5a3f198b03b207a5394d78d79b53522ed980.339477304724558428 Ether
0xd217686ebcff33e6f467265c8b2c84c5ef8f28903694a17355d9fe14adf2aa6c72082135 days 6 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170xd3e9d1162498c085cb12cad70026b2becfe692f510.557312192617286755 Ether
0x3f562aecff3687c61c79e26210aef12b6b92c5f5edb40fe4d6f80f17f9d3f05372057355 days 20 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170x0c6b93e6333216ca9c80af116510fa23482e6ed12.94667695736231748 Ether
0x97c37b13a053fd5974667e094e3983e369910ea94cc71349b88aafe6293f782572034846 days 9 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170x67976fae8c826cba2b11ea9b323efef437a264171.639681503451104764 Ether
0x25d9e15256dc84e7fdb48b38adfd828c2d2808f7177f8a0f12b29d7640eb207772029036 days 13 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170x16e17bfc1b7b990983b33fabfa8ce22477594eb513.390957187940836827 Ether
0xec2dab403cfc09ff2c06c42aa8fb4a27f601c7f7c08b3ec3ee4e477bb524c4e971877489 days 16 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170xcafd96a3475aa9afcc66bc5f9ff589c74ce6a4bc233.946777940504472319 Ether
0x7ce003fc53622d1f6246c70d8d7dfd6b659114d740f9ec21abde46252f6c2a4d718569610 days 2 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170xd2494d275674096c6dd94541c7f28a7ef64c52486.682424060377830015 Ether
0x0081659f50c15e2fa5d2912a843399c41c78c0a2065d9e3e19a02bbdc40dc092718347110 days 13 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170xf9795004d5e24f7416dfa094df32ceaff397eaf312.272891343673350608 Ether
0xfbcd285acde7c82a4d39d07ad0e6197c1fb1e6c05b8e378f202ef080bee8a5c3717817211 days 15 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170xcafd96a3475aa9afcc66bc5f9ff589c74ce6a4bc169.288590213835310763 Ether
0x635d20a7e85c3d0adb64838df2a9faca6058951fea7bb6c7b2730d3179ef387c717734211 days 19 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170xf9795004d5e24f7416dfa094df32ceaff397eaf312.991147397915209938 Ether
0xa560be414997d77ac54d75443f4af24895d31794d1bd15b1cf01d1de5492b103717469212 days 8 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170xf9795004d5e24f7416dfa094df32ceaff397eaf33.031368253107172163 Ether
0x1d337306b987428e44ea9017b744f2828b27abc6e5faf3dae80199c71be47104717304212 days 16 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170xf9795004d5e24f7416dfa094df32ceaff397eaf36.074234097008095308 Ether
0x45c5c55df79691bbeeed99836400dd61aeb4915bf19d1014882481ecdce59845717199912 days 21 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170xe645a93d9ef590744f899f56d36070e23394c1f17.349015176780846559 Ether
0xc9ad55042beda514383a994e30991b83933d8c4aff441d7a498ab4ba152b76d6716950613 days 9 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170xc2b77c3b25a61525952898157420e4421da1130c21.16386784995504613 Ether
0xdedccf8406304de15460e2c42588688b8f3945b7ac305c4c79b0938823ad119c716836313 days 15 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170xf64c3979c21ef652e034d9af1ac3b090384d7b2110.576579384583838979 Ether
0x9bc0eaee134133ab1d1edb532e26b82142d4f853be2f4b807f2edb0c475104e7715306716 days 18 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170xfa6ba0fe3dd59b366940c0514d820eb57496f96967.936060145449469785 Ether
0xc04deb41e0f6e1326e75786067d2502b8c6aab6201cfa765f065b4986b827773714962817 days 11 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170x8f9238d2a04ba2912769142109398a5d205a87332.551472010091576402 Ether
0x840ad736a96f683f556b538bc7cde3be4cb397641a007e0e49320441a5504369714890117 days 14 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170xcbbbfa13b998e815c817636e2337bfd83a45d86c6.114829346899261607 Ether
0x4251831e02d13884cceafd74bc75f78038354f060d99add07feabcbaec66add8714667318 days 1 hr ago0x26e75307fc0c021472feb8f727839531f112f3170xf173dc94526fec5d8bf0de6816cfed41b242cd8b11.027785673110719528 Ether
0x91a906c4a82d56d0ef4ce90de35b908ea6ce2c4346f426af2f4f8010c0cb614c714421318 days 13 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170x04448ecb1475731719dcda1ecea1ff664ba82c8e32.53655041946762901 Ether
0xf9f7d992b27e45f77b12b290ae6b0df3a6f0fdbfc91c62e18a94adfb6bf36f4c714341818 days 17 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170xf9795004d5e24f7416dfa094df32ceaff397eaf36.103508546956641102 Ether
0x90c35b9c6a824723e98228074be60715d938a9938d576f048328d6e657aa215a714268518 days 21 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170x3db5e84e0ebbea945a0a82e879dcb7e1d1a587b40.125704600731053194 Ether
0xc5941d469cf5dbb1cc82ec9870a95a61340cc372f01e826d311af526155abfc9714094119 days 6 hrs ago0x26e75307fc0c021472feb8f727839531f112f3170x3db5e84e0ebbea945a0a82e879dcb7e1d1a587b40.030671912941971031 Ether
[ Download CSV Export 
Contract Name: C20
Compiler Version: v0.4.11+commit.68ef5810
Optimization Enabled: No
Runs (Optimizer):  200


Contract Source Code
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 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"}]

Contract Creation Code
6060604052604060405190810160405280600881526020017f43727970746f32300000000000000000000000000000000000000000000000008152506003908051906020019062000052929190620003d4565b50604060405190810160405280600381526020017f433230000000000000000000000000000000000000000000000000000000000081525060049080519060200190620000a1929190620003d4565b506012600555604060405190810160405280600381526020017f392e30000000000000000000000000000000000000000000000000000000000081525060069080519060200190620000f5929190620003d4565b506a474f05324221d718c000006007556000600a60146101000a81548160ff021916908315150217905550614650600d556000600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600f55668e1bc9bf04000060125534156200017557fe5b60405160808062003e71833981016040528080519060200190919080519060200190919080519060200190919080519060200190919050505b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515620001ec5760006000fd5b600083111515620001fd5760006000fd5b81811115156200020d5760006000fd5b33600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160156000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160156000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506040604051908101604052808481526020016103e881525060106000820151816000015560208201518160010155905050816008819055508060098190555042600f819055505b5050505062000483565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200041757805160ff191683800117855562000448565b8280016001018555821562000448579182015b82811115620004475782518255916020019190600101906200042a565b5b5090506200045791906200045b565b5090565b6200048091905b808211156200047c57600081600090555060010162000462565b5090565b90565b6139de80620004936000396000f30060606040523615610244576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461029157806306fe22121461032a578063095ea7b31461034a57806318160ddd146103a157806323b872dd146103c7578063276605bc1461043d578063313ce5671461045d578063347820eb146104835780633ccfd60b146104a957806354fd4d50146104bb5780635a8cf571146105545780635e6f60451461058a5780635ed7ca5b146105dc578063643a7695146105ee578063664a1ad6146106245780636fb4adff1461067657806370a08231146106ac57806374991569146106f65780637a9262a21461072c578063823e569e1461077d5780638a8c523c146107cf5780638d6cc56d146107e15780638f11e5f9146108015780638fee76871461083557806391b43d13146108745780639281cd651461089a57806395d89b41146108fa5780639b19251a146109935780639b2cb5d8146109e15780639c8f9f2314610a075780639d1b464a14610a275780639ee679e814610a54578063a6f2ae3a14610a74578063a9059cbb14610a7e578063b9b8af0b14610ad5578063bc31c1c114610aff578063cb3e64fd14610b3a578063ccca123b14610b4c578063d648a64714610b72578063dbb2455414610b98578063dcf72c1014610bb8578063dd54291b14610be6578063dd62ed3e14610c0c578063df8de3e714610c75578063e28b0d9a14610cab578063e8078d9414610ccb578063f5ac9db614610cd5578063fa0d80fc14610cff575b61028f5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161415156102835760006000fd5b61028c33610d25565b5b565b005b341561029957fe5b6102a1610f13565b60405180806020018281038252838181518152602001915080519060200190808383600083146102f0575b8051825260208311156102f0576020820191506020810190506020830392506102cc565b505050905090810190601f16801561031c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561033257fe5b6103486004808035906020019091905050610fb1565b005b341561035257fe5b610387600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061101a565b604051808215151515815260200191505060405180910390f35b34156103a957fe5b6103b16111be565b6040518082815260200191505060405180910390f35b34156103cf57fe5b610423600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506111c4565b604051808215151515815260200191505060405180910390f35b341561044557fe5b61045b60048080359060200190919050506112a8565b005b341561046557fe5b61046d611331565b6040518082815260200191505060405180910390f35b341561048b57fe5b610493611337565b6040518082815260200191505060405180910390f35b34156104b157fe5b6104b961133d565b005b34156104c357fe5b6104cb6114b8565b604051808060200182810382528381815181526020019150805190602001908083836000831461051a575b80518252602083111561051a576020820191506020810190506020830392506104f6565b505050905090810190601f1680156105465780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561055c57fe5b610588600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611556565b005b341561059257fe5b61059a611636565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105e457fe5b6105ec61165c565b005b34156105f657fe5b610622600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506116d8565b005b341561062c57fe5b610634611830565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561067e57fe5b6106aa600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611856565b005b34156106b457fe5b6106e0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611936565b6040518082815260200191505060405180910390f35b34156106fe57fe5b61072a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611980565b005b341561073457fe5b610760600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611af5565b604051808381526020018281526020019250505060405180910390f35b341561078557fe5b61078d611b19565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156107d757fe5b6107df611b3f565b005b34156107e957fe5b6107ff6004808035906020019091905050611bcc565b005b341561080957fe5b61081f6004808035906020019091905050611d22565b6040518082815260200191505060405180910390f35b341561083d57fe5b610872600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611da0565b005b341561087c57fe5b610884611f47565b6040518082815260200191505060405180910390f35b34156108a257fe5b6108e0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091908035906020019091905050611f4d565b604051808215151515815260200191505060405180910390f35b341561090257fe5b61090a6120e6565b6040518080602001828103825283818151815260200191508051906020019080838360008314610959575b80518252602083111561095957602082019150602081019050602083039250610935565b505050905090810190601f1680156109855780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561099b57fe5b6109c7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612184565b604051808215151515815260200191505060405180910390f35b34156109e957fe5b6109f16121a4565b6040518082815260200191505060405180910390f35b3415610a0f57fe5b610a2560048080359060200190919050506121aa565b005b3415610a2f57fe5b610a37612324565b604051808381526020018281526020019250505060405180910390f35b3415610a5c57fe5b610a726004808035906020019091905050612336565b005b610a7c61263a565b005b3415610a8657fe5b610abb600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612646565b604051808215151515815260200191505060405180910390f35b3415610add57fe5b610ae5612728565b604051808215151515815260200191505060405180910390f35b3415610b0757fe5b610b1d600480803590602001909190505061273b565b604051808381526020018281526020019250505060405180910390f35b3415610b4257fe5b610b4a61275f565b005b3415610b5457fe5b610b5c6127db565b6040518082815260200191505060405180910390f35b3415610b7a57fe5b610b826127e1565b6040518082815260200191505060405180910390f35b3415610ba057fe5b610bb660048080359060200190919050506127e7565b005b610be4600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d25565b005b3415610bee57fe5b610bf66128ed565b6040518082815260200191505060405180910390f35b3415610c1457fe5b610c5f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506128f3565b6040518082815260200191505060405180910390f35b3415610c7d57fe5b610ca9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061297b565b005b3415610cb357fe5b610cc96004808035906020019091905050612bc0565b005b610cd3612c49565b005b3415610cdd57fe5b610ce5612d49565b604051808215151515815260200191505060405180910390f35b3415610d0757fe5b610d0f612d5c565b6040518082815260200191505060405180910390f35b60006000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610d825760006000fd5b600e60009054906101000a900460ff16151515610d9f5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610ddc5760006000fd5b6012543410151515610dee5760006000fd5b6008544310158015610e01575060095443105b1515610e0d5760006000fd5b610e15612d5c565b915081610e2734601060000154612de5565b811515610e3057fe5b049050610e3d8382612e1a565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051809050600060405180830381858888f193505050501515610e9f57fe5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f89f5adc174562e07c9c9b1cae7109bbecb21cf9d1b2847e550042b8653c54a0e3484604051808381526020018281526020019250505060405180910390a35b5b505050565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fa95780601f10610f7e57610100808354040283529160200191610fa9565b820191906000526020600020905b815481529060010190602001808311610f8c57829003601f168201915b505050505081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561100e5760006000fd5b80600d819055505b5b50565b600060026004602082020160003690501015151561103457fe5b60008314806110bf57506000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15156110cb5760006000fd5b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a3600191505b5b5092915050565b60005481565b6000600e60019054906101000a900460ff168061122e5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806112865750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156112925760006000fd5b61129d848484612ffe565b90505b5b9392505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113055760006000fd5b600854431015156113165760006000fd5b80431015156113255760006000fd5b806008819055505b5b50565b60055481565b600f5481565b60006000600060006000339450601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154935060008411151561139f5760006000fd5b601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015492506014600084815260200190815260200160002091506000826000015411151561140d5760006000fd5b8160000154611420858460010154612de5565b81151561142957fe5b0490506000601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550803073ffffffffffffffffffffffffffffffffffffffff16311015156114a45761149f8582866133c9565b6114b0565b6114af858286613558565b5b5b5050505050565b60068054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561154e5780601f106115235761010080835404028352916020019161154e565b820191906000526020600020905b81548152906001019060200180831161153157829003601f168201915b505050505081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115b35760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156115f05760006000fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b50565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116b95760006000fd5b6001600e60006101000a81548160ff0219169083151502179055505b5b565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806117815750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561178d5760006000fd5b6001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e60405180905060405180910390a25b5b50565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118b35760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156118f05760006000fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119dd5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611a1a5760006000fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160156000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60146101000a81548160ff0219169083151502179055505b5b50565b60136020528060005260406000206000915090508060000154908060010154905082565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b9c5760006000fd5b60095443111515611bad5760006000fd5b6001600e60016101000a81548160ff0219169083151502179055505b5b565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611c755750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611c815760006000fd5b600081111515611c915760006000fd5b611c9a81613663565b80601060000181905550601060146000600f548152602001908152602001600020600082015481600001556001820154816001015590505042600f819055507f92664190cca12aca9cd5309d87194bdda75bb51362d71c06e1a6f75c7c76571181601060010154604051808381526020018281526020019250505060405180910390a15b5b50565b60006000600083111515611d365760006000fd5b82611d4033611936565b10151515611d4e5760006000fd5b601060000154611d6384601060010154612de5565b811515611d6c57fe5b049050803073ffffffffffffffffffffffffffffffffffffffff163110151515611d965760006000fd5b8091505b50919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611dfd5760006000fd5b60095443101515611e0e5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611e4b5760006000fd5b6001601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611ead8282612e1a565b8173ffffffffffffffffffffffffffffffffffffffff167feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e60405180905060405180910390a28173ffffffffffffffffffffffffffffffffffffffff167f69488271d7ab6c5d1d852b2fedbeafcee0ad158162b8c58145130bacd56bff76826040518082815260200191505060405180910390a25b5b5050565b60095481565b6000600360046020820201600036905010151515611f6757fe5b83600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141515611ff25760006000fd5b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a3600191505b5b509392505050565b60048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561217c5780601f106121515761010080835404028352916020019161217c565b820191906000526020600020905b81548152906001019060200180831161215f57829003601f168201915b505050505081565b60156020528060005260406000206000915054906101000a900460ff1681565b60125481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806122535750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561225f5760006000fd5b3073ffffffffffffffffffffffffffffffffffffffff163181111515156122865760006000fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051809050600060405180830381858888f1935050505015156122e857fe5b7f9a5a8a32afd899e7f95003c6e21c9fab2d50e11992439d14472229180c60c7aa816040518082815260200191505060405180910390a15b5b50565b60108060000154908060010154905082565b6000600e60019054906101000a900460ff16806123a05750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806123f85750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156124045760006000fd5b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561245d5760006000fd5b6009544311151561246e5760006000fd5b60008211151561247e5760006000fd5b3390508161248b82611936565b101515156124995760006000fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415156124eb5760006000fd5b612534600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613730565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550604060405190810160405280838152602001600f54815250601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101559050508073ffffffffffffffffffffffffffffffffffffffff167f17040713250ec5f668a1c39e7939900e78558350dbaff0ebef34268dfa8ea4ac836040518082815260200191505060405180910390a25b5b5b5050565b61264333610d25565b5b565b6000600e60019054906101000a900460ff16806126b05750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806127085750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156127145760006000fd5b61271e838361374a565b90505b5b92915050565b600e60009054906101000a900460ff1681565b60146020528060005260406000206000915090508060000154908060010154905082565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156127bc5760006000fd5b6000600e60006101000a81548160ff0219169083151502179055505b5b565b600d5481565b60085481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156128445760006000fd5b600954431115156128555760006000fd5b6000811115156128655760006000fd5b80601060010181905550601060146000600f548152602001908152602001600020600082015481600001556001820154816001015590505042600f819055507f92664190cca12aca9cd5309d87194bdda75bb51362d71c06e1a6f75c7c76571160106000015482604051808381526020018281526020019250505060405180910390a15b5b50565b60075481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b92915050565b60006000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129dc5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612a195760006000fd5b8291508173ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515612abc57fe5b6102c65a03f11515612aca57fe5b5050506040518051905090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515612ba057fe5b6102c65a03f11515612bae57fe5b50505060405180519050505b5b505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c1d5760006000fd5b60095443101515612c2e5760006000fd5b8043101515612c3d5760006000fd5b806009819055505b5b50565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612cf25750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612cfe5760006000fd5b600034111515612d0e5760006000fd5b7ff53d9d58a7ff16a2e1360446f1c4b5e81a427d3efd25615be081f4003662400a346040518082815260200191505060405180910390a15b5b565b600e60019054906101000a900460ff1681565b600060006000612d6e43600854613730565b9150610b40821015612d87576010600101549250612de0565b62013b00821015612db8576064612da46010600101546069612de5565b811515612dad57fe5b049050809250612de0565b6064612dca601060010154606e612de5565b811515612dd357fe5b049050809250612de0565b5b5b505090565b6000600082840290506000841480612e075750828482811515612e0457fe5b04145b1515612e0f57fe5b8091505b5092915050565b60006000600a60149054906101000a900460ff161515612e3a5760006000fd5b67016345785d8a0000612e54846635162695555b39612de5565b811515612e5d57fe5b049150612e6a8383613986565b9050600754612e7b60005483613986565b11151515612e895760006000fd5b612e9560005482613986565b600081905550612ee4600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613986565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f9260016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613986565b60016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50505050565b600060036004602082020160003690501015151561301857fe5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156130555760006000fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015613120575082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b801561312c5750600083115b15156131385760006000fd5b613181600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613730565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061320d600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613986565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132d6600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613730565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505b5b509392505050565b813073ffffffffffffffffffffffffffffffffffffffff1631101515156133ec57fe5b61345760016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613986565b60016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051809050600060405180830381858888f1935050505015156134fc57fe5b8273ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5688284604051808381526020018281526020019250505060405180910390a25b505050565b813073ffffffffffffffffffffffffffffffffffffffff163110151561357a57fe5b6135c3600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613986565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568826000604051808381526020018281526020019250505060405180910390a25b505050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561372b57600f546136ca42600d54613730565b101515156136d85760006000fd5b8160106000015481111561372757600091506010600001546136fb846064612de5565b81151561370457fe5b049150613712826064613730565b9150601482111515156137255760006000fd5b5b5b5b505b5b5b5050565b600082821115151561373e57fe5b81830390505b92915050565b600060026004602082020160003690501015151561376457fe5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156137a15760006000fd5b82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156137f05750600083115b15156137fc5760006000fd5b613845600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613730565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138d1600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613986565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505b5b5092915050565b60006000828401905083811015801561399f5750828110155b15156139a757fe5b8091505b50929150505600a165627a7a72305820a1845868b1371865b636a79c2503060ea66461cd206d79eb74da145b034d97af002900000000000000000000000015756c7f329e3e00ab15d71f09655bd8df14b7fa0000000000000000000000000000000000000000000000000000000000053020000000000000000000000000000000000000000000000000000000000042af90000000000000000000000000000000000000000000000000000000000044ab60


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

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


   Swarm Source:
bzzr://a1845868b1371865b636a79c2503060ea66461cd206d79eb74da145b034d97af
Block Age transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.