ETH Price: $3,310.26 (-0.46%)
Gas: 10 Gwei

Contract

0x714c1Ef3854591D4118bd6887D4740bC4D5f5412
 

Overview

ETH Balance

2.0718840066 ETH

Eth Value

$6,858.47 (@ $3,310.26/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Update Exchange ...94557022020-02-10 14:40:201632 days ago1581345620IN
0x714c1Ef3...C4D5f5412
0 ETH0.000112494
Update Exchange ...94542972020-02-10 9:30:571632 days ago1581327057IN
0x714c1Ef3...C4D5f5412
0 ETH0.000112494
Update Exchange ...94529432020-02-10 4:31:291632 days ago1581309089IN
0x714c1Ef3...C4D5f5412
0 ETH0.000112494
Update Exchange ...94460742020-02-09 3:10:481633 days ago1581217848IN
0x714c1Ef3...C4D5f5412
0 ETH0.000112494
Update Exchange ...94447552020-02-08 22:20:281633 days ago1581200428IN
0x714c1Ef3...C4D5f5412
0 ETH0.000112494
Update Exchange ...94415312020-02-08 10:30:181634 days ago1581157818IN
0x714c1Ef3...C4D5f5412
0 ETH0.000112494
Update Exchange ...94409782020-02-08 8:20:321634 days ago1581150032IN
0x714c1Ef3...C4D5f5412
0 ETH0.000112494
Update Exchange ...94395182020-02-08 2:55:391634 days ago1581130539IN
0x714c1Ef3...C4D5f5412
0 ETH0.000140625
Update Exchange ...94349992020-02-07 10:20:131635 days ago1581070813IN
0x714c1Ef3...C4D5f5412
0 ETH0.000112494
Update Exchange ...94324342020-02-07 0:41:151635 days ago1581036075IN
0x714c1Ef3...C4D5f5412
0 ETH0.000112494
Update Exchange ...94289802020-02-06 12:11:211636 days ago1580991081IN
0x714c1Ef3...C4D5f5412
0 ETH0.000140625
Update Exchange ...94275812020-02-06 6:50:251636 days ago1580971825IN
0x714c1Ef3...C4D5f5412
0 ETH0.000112494
Update Exchange ...94241472020-02-05 18:12:021636 days ago1580926322IN
0x714c1Ef3...C4D5f5412
0 ETH0.000140625
Update Exchange ...94225682020-02-05 12:15:031637 days ago1580904903IN
0x714c1Ef3...C4D5f5412
0 ETH0.000168746
Update Exchange ...94221222020-02-05 10:40:151637 days ago1580899215IN
0x714c1Ef3...C4D5f5412
0 ETH0.000213767.60076
Update Exchange ...94172202020-02-04 16:30:141637 days ago1580833814IN
0x714c1Ef3...C4D5f5412
0 ETH0.000112494
Update Exchange ...94153162020-02-04 9:30:501638 days ago1580808650IN
0x714c1Ef3...C4D5f5412
0 ETH0.000112494
Update Exchange ...94069672020-02-03 3:00:421639 days ago1580698842IN
0x714c1Ef3...C4D5f5412
0 ETH0.000112494
Update Exchange ...94066292020-02-03 1:40:531639 days ago1580694053IN
0x714c1Ef3...C4D5f5412
0 ETH0.000112494
Update Exchange ...94024172020-02-02 10:10:211640 days ago1580638221IN
0x714c1Ef3...C4D5f5412
0 ETH0.000112494
Update Exchange ...94015522020-02-02 6:50:191640 days ago1580626219IN
0x714c1Ef3...C4D5f5412
0 ETH0.000112494
Update Exchange ...93935172020-02-01 1:20:371641 days ago1580520037IN
0x714c1Ef3...C4D5f5412
0 ETH0.000112494
Update Exchange ...93847122020-01-30 16:50:201642 days ago1580403020IN
0x714c1Ef3...C4D5f5412
0 ETH0.000112494
Update Exchange ...93643162020-01-27 13:39:451646 days ago1580132385IN
0x714c1Ef3...C4D5f5412
0 ETH0.000112494
Update Exchange ...93589522020-01-26 17:50:061646 days ago1580061006IN
0x714c1Ef3...C4D5f5412
0 ETH0.000112494
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
91960762020-01-01 13:44:581672 days ago1577886298
0x714c1Ef3...C4D5f5412
2.071884 ETH
90354382019-12-02 1:25:111702 days ago1575249911
0x714c1Ef3...C4D5f5412
2.071884 ETH
89201972019-11-12 11:34:091722 days ago1573558449
0x714c1Ef3...C4D5f5412
2.071884 ETH
89190352019-11-12 7:07:301722 days ago1573542450
0x714c1Ef3...C4D5f5412
2.071884 ETH
84133432019-08-24 13:48:531802 days ago1566654533
0x714c1Ef3...C4D5f5412
2.071884 ETH
79701462019-06-16 14:43:211871 days ago1560696201
0x714c1Ef3...C4D5f5412
2.071884 ETH
79613622019-06-15 5:45:401872 days ago1560577540
0x714c1Ef3...C4D5f5412
2.071884 ETH
78886592019-06-03 20:55:221883 days ago1559595322
0x714c1Ef3...C4D5f5412
2.071884 ETH
78886342019-06-03 20:51:531883 days ago1559595113
0x714c1Ef3...C4D5f5412
2.071884 ETH
78886262019-06-03 20:49:121883 days ago1559594952
0x714c1Ef3...C4D5f5412
2.071884 ETH
78886242019-06-03 20:48:451883 days ago1559594925
0x714c1Ef3...C4D5f5412
2.071884 ETH
78886172019-06-03 20:47:451883 days ago1559594865
0x714c1Ef3...C4D5f5412
2.071884 ETH
78886122019-06-03 20:46:541883 days ago1559594814
0x714c1Ef3...C4D5f5412
2.071884 ETH
78886052019-06-03 20:46:051883 days ago1559594765
0x714c1Ef3...C4D5f5412
2.071884 ETH
78886022019-06-03 20:45:431883 days ago1559594743
0x714c1Ef3...C4D5f5412
2.071884 ETH
78885942019-06-03 20:44:211883 days ago1559594661
0x714c1Ef3...C4D5f5412
2.071884 ETH
78885882019-06-03 20:43:411883 days ago1559594621
0x714c1Ef3...C4D5f5412
2.071884 ETH
78885842019-06-03 20:42:481883 days ago1559594568
0x714c1Ef3...C4D5f5412
2.071884 ETH
78885752019-06-03 20:41:221883 days ago1559594482
0x714c1Ef3...C4D5f5412
2.071884 ETH
78885752019-06-03 20:41:221883 days ago1559594482
0x714c1Ef3...C4D5f5412
2.071884 ETH
78885752019-06-03 20:41:221883 days ago1559594482
0x714c1Ef3...C4D5f5412
2.071884 ETH
78885752019-06-03 20:41:221883 days ago1559594482
0x714c1Ef3...C4D5f5412
2.071884 ETH
78885742019-06-03 20:41:141883 days ago1559594474
0x714c1Ef3...C4D5f5412
2.071884 ETH
78885712019-06-03 20:40:201883 days ago1559594420
0x714c1Ef3...C4D5f5412
2.071884 ETH
78885642019-06-03 20:38:131883 days ago1559594293
0x714c1Ef3...C4D5f5412
2.071884 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
KaasyToken

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-09-02
*/

pragma solidity ^0.4.24;

// ----------------------------------------------------------------------------
// 'Kaasy' CROWDSALE token contract
//
// Deployed to : 0x714c1ef3854591d4118bd6887d4740bc4d5f5412
// Symbol      : KAAS
// Name        : KAASY.AI Token
// Total supply: 500000000
// Decimals    : 18
//
// Enjoy.
//
// (c) by KAASY AI LTD. The MIT Licence.
// ----------------------------------------------------------------------------


// ----------------------------------------------------------------------------
// Safe maths
// ----------------------------------------------------------------------------
contract SafeMath {
    function safeAdd(uint a, uint b) internal pure returns (uint c) {
        c = a + b;
        require(c >= a);
    }
    function safeSub(uint a, uint b) internal pure returns (uint c) {
        require(b <= a);
        c = a - b;
    }
    function safeMul(uint a, uint b) internal pure returns (uint c) {
        c = a * b;
        require(a == 0 || c / a == b);
    }
    function safeDiv(uint a, uint b) internal pure returns (uint c) {
        require(b > 0);
        c = a / b;
    }
}


// ----------------------------------------------------------------------------
// ERC Token Standard #20 Interface
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
// ----------------------------------------------------------------------------
contract ERC20Interface {
    function totalSupply() public constant returns (uint);
    function balanceOf(address tokenOwner) public constant returns (uint balance);
    function allowance(address tokenOwner, address spender) public constant returns (uint remaining);
    function transfer(address to, uint tokens) public returns (bool success);
    function approve(address spender, uint tokens) public returns (bool success);
    function transferFrom(address from, address to, uint tokens) public returns (bool success);

    event Transfer(address indexed from, address indexed to, uint tokens);
    event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
}


// ----------------------------------------------------------------------------
// Contract function to receive approval and execute function in one call
//
// Borrowed from MiniMeToken
// ----------------------------------------------------------------------------
contract ApproveAndCallFallBack {
    function receiveApproval(address from, uint256 tokens, address token, bytes data) public;
}


// ----------------------------------------------------------------------------
// Owned contract
// ----------------------------------------------------------------------------
contract Owned {
    address public owner;
    address public newOwner;
    
    address public ownerAPI;
    address public newOwnerAPI;

    event OwnershipTransferred(address indexed _from, address indexed _to);
    event OwnershipAPITransferred(address indexed _from, address indexed _to);

    constructor() public {
        owner = msg.sender;
        ownerAPI = msg.sender;
    }

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

    modifier onlyOwnerAPI {
        require(msg.sender == ownerAPI);
        _;
    }

    modifier onlyOwnerOrOwnerAPI {
        require(msg.sender == owner || msg.sender == ownerAPI);
        _;
    }

    function transferOwnership(address _newOwner) public onlyOwner {
        newOwner = _newOwner;
    }

    function transferAPIOwnership(address _newOwnerAPI) public onlyOwner {
        newOwnerAPI = _newOwnerAPI;
    }
    function acceptOwnership() public {
        require(msg.sender == newOwner);
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
        newOwner = address(0);
    }
    function acceptOwnershipAPI() public {
        require(msg.sender == newOwnerAPI);
        emit OwnershipAPITransferred(ownerAPI, newOwnerAPI);
        ownerAPI = newOwnerAPI;
        newOwnerAPI = address(0);
    }
}

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Owned {
  event Pause();
  event Unpause();

  bool public isPaused = false;

  function paused() public view returns (bool currentlyPaused) {
      return isPaused;
  }

  /**
   * @dev Modifier to make a function callable only when the contract is not paused.
   */
  modifier whenNotPaused() {
    require(!isPaused);
    _;
  }

  /**
   * @dev Modifier to make a function callable only when the contract is paused.
   */
  modifier whenPaused() {
    require(isPaused);
    _;
  }

  /**
   * @dev called by the owner to pause, triggers stopped state
   */
  function pause() public onlyOwner whenNotPaused {
    isPaused = true;
    emit Pause();
  }

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


// ----------------------------------------------------------------------------
// ERC20 Token, with the addition of symbol, name and decimals and assisted
// token transfers
// ----------------------------------------------------------------------------
contract KaasyToken is ERC20Interface, Pausable, SafeMath {
    string public symbol = "KAAS";
    string public  name  = "KAASY.AI Token";
    uint8 public decimals = 18;
    uint public _totalSupply;
    uint public startDate;
    uint public bonusEnd20;
    uint public bonusEnd10;
    uint public bonusEnd05;
    uint public endDate;
    uint public tradingDate;
    uint public exchangeRate = 25000; // IN Euro cents = 300E
    uint256 public maxSupply;
    uint256 public soldSupply;
    uint256 public maxSellable;
    uint8 private teamWOVestingPercentage = 5;
    
    uint256 public minAmountETH;
    uint256 public maxAmountETH;
    
    address public currentRunningAddress;

    mapping(address => uint256) balances; //keeps ERC20 balances, in Symbol
    mapping(address => uint256) ethDeposits; //keeps balances, in ETH
    mapping(address => bool) kycAddressState; //keeps list of addresses which can send ETH without direct fail
    mapping(address => mapping(address => uint256)) allowed;
    mapping(address => uint256) burnedBalances; //keeps ERC20 balances, in Symbol

    //event KYCStateUpdate(address indexed addr, bool state);
    
    event MintingFinished(uint indexed moment);
    bool isMintingFinished = false;
    
    event OwnBlockchainLaunched(uint indexed moment);
    event TokensBurned(address indexed exOwner, uint256 indexed amount, uint indexed moment);
    bool isOwnBlockchainLaunched = false;
    uint momentOwnBlockchainLaunched = 0;
    
    uint8 public versionIndex = 1;
    
    address addrUniversity;
    address addrEarlySkills;
    address addrHackathons;
    address addrLegal;
    address addrMarketing;

    // ------------------------------------------------------------------------
    // Constructor
    // ------------------------------------------------------------------------
    constructor() public {
        maxSupply = 500000000 * (10 ** 18);
        maxSellable = maxSupply * 60 / 100;
        
        currentRunningAddress = address(this);
        
        soldSupply = 0;
        
        startDate = 1535760000;  // September 1st
        bonusEnd20 = 1536969600; // September 15th
        bonusEnd10 = 1538179200; // September 29th
        bonusEnd05 = 1539388800; // October 13th
        endDate = 1542240000;    // November 15th
        tradingDate = 1543536000;// November 30th
        
        minAmountETH = safeDiv(1 ether, 10);
        maxAmountETH = safeMul(1 ether, 5000);
        
        uint256 teamAmount = maxSupply * 150 / 1000;
        
        balances[address(this)] = teamAmount * (100 - teamWOVestingPercentage) / 100; //team with vesting
        emit Transfer(address(0), address(this), balances[address(this)]);
        
        balances[owner] = teamAmount * teamWOVestingPercentage / 100; //team without vesting
        kycAddressState[owner] = true;
        emit Transfer(address(0), owner, balances[owner]);
        
        addrUniversity = 0x20D9846AB6c348AfF24e762150aBfa15D99e4Af5;
        balances[addrUniversity] =  maxSupply * 50 / 1000; //univ
        kycAddressState[addrUniversity] = true;
        emit Transfer(address(0), addrUniversity, balances[addrUniversity]);
        
        addrEarlySkills = 0x3CF15B214734bB3C9040f18033440a35d18746Ca;
        balances[addrEarlySkills] = maxSupply * 50 / 1000; //skills
        kycAddressState[addrEarlySkills] = true;
        emit Transfer(address(0), addrEarlySkills, balances[addrEarlySkills]);
        
        addrHackathons = 0x3ACEB78ff4B064aEE870dcb844cCa43FC6DcBe7d;
        balances[addrHackathons] =  maxSupply * 45 / 1000; //hackathons and bug bounties
        kycAddressState[addrHackathons] = true;
        emit Transfer(address(0), addrHackathons, balances[addrHackathons]);
        
        addrLegal = 0x65e1af8d76af6d1d3E47F14014F3105286FFBcF2;
        balances[addrLegal] =       maxSupply * 30 / 1000; //legal fees & backup
        kycAddressState[addrLegal] = true;
        emit Transfer(address(0), addrLegal, balances[addrLegal]);
        
        addrMarketing = 0x3d7Db960837aF96C457bdB481C3De7cE80366b2c;
        balances[addrMarketing] =   maxSupply * 75 / 1000; //marketing
        kycAddressState[addrMarketing] = true;
        emit Transfer(address(0), addrMarketing, balances[addrMarketing]);
        
        _totalSupply = maxSupply * 40 / 100;
        
        
    }

    // ------------------------------------------------------------------------
    // token minter function
    // ------------------------------------------------------------------------
    function () public payable whenNotPaused {
        if(now > endDate && isMintingFinished == false) {
            finishMinting();
            msg.sender.transfer(msg.value); //return this transfer, as it is too late.
        } else {
            require(now >= startDate && now <= endDate && isMintingFinished == false);
            
            require(msg.value >= minAmountETH && msg.value <= maxAmountETH);
            require(msg.value + ethDeposits[msg.sender] <= maxAmountETH);
            
            require(kycAddressState[msg.sender] == true);
            
            uint tokens = getAmountToIssue(msg.value);
            require(safeAdd(soldSupply, tokens) <= maxSellable);
            
            soldSupply = safeAdd(soldSupply, tokens);
            _totalSupply = safeAdd(_totalSupply, tokens);
            balances[msg.sender] = safeAdd(balances[msg.sender], tokens);
            ethDeposits[msg.sender] = safeAdd(ethDeposits[msg.sender], msg.value);
            emit Transfer(address(0), msg.sender, tokens);
            
            ownerAPI.transfer(msg.value * 15 / 100);   //transfer 15% of the ETH now, the other 85% at the end of the ICO process
        }
    }
    
    // ------------------------------------------------------------------------
    // Burns tokens of `msg.sender` and sets them as redeemable on KAASY blokchain
    // ------------------------------------------------------------------------
    function BurnMyTokensAndSetAmountForNewBlockchain() public  {
        require(isOwnBlockchainLaunched);
        
        uint senderBalance = balances[msg.sender];
        burnedBalances[msg.sender] = safeAdd(burnedBalances[msg.sender], senderBalance);
        balances[msg.sender] = 0;
        emit TokensBurned(msg.sender, senderBalance, now);
        emit Transfer(msg.sender, address(0), senderBalance);
    }
    
    // ------------------------------------------------------------------------
    // Burns tokens of `exOwner` and sets them as redeemable on KAASY blokchain
    // ------------------------------------------------------------------------
    function BurnTokensAndSetAmountForNewBlockchain(address exOwner) onlyOwnerOrOwnerAPI public {
        require(isOwnBlockchainLaunched);
        
        uint exBalance = balances[exOwner];
        burnedBalances[exOwner] = safeAdd(burnedBalances[exOwner], exBalance);
        balances[exOwner] = 0;
        emit TokensBurned(exOwner, exBalance, now);
        emit Transfer(exOwner, address(0), exBalance);
    }
    
    // ------------------------------------------------------------------------
    // Enables the burning of tokens to move to the new KAASY blockchain
    // ------------------------------------------------------------------------
    function SetNewBlockchainEnabled() onlyOwner public {
        require(isMintingFinished && isOwnBlockchainLaunched == false);
        isOwnBlockchainLaunched = true;
        momentOwnBlockchainLaunched = now;
        emit OwnBlockchainLaunched(now);
    }

    // ------------------------------------------------------------------------
    // Evaluates conditions for finishing the ICO and does that if conditions are met
    // ------------------------------------------------------------------------
    function finishMinting() public returns (bool finished) {
        if(now > endDate && isMintingFinished == false) {
            internalFinishMinting();
            return true;
        } else if (_totalSupply >= maxSupply) {
            internalFinishMinting();
            return true;
        }
        if(now > endDate && address(this).balance > 0) {
            owner.transfer(address(this).balance);
        }
        return false;
    }
    
    // ------------------------------------------------------------------------
    // Actually executes the finish of the ICO, 
    //  no longer minting tokens, 
    //  releasing the 85% of ETH kept by contract and
    //  enables trading 15 days after this moment
    // ------------------------------------------------------------------------
    function internalFinishMinting() internal {
        tradingDate = now + 3600;// * 24 * 15; // 2 weeks after ICO end moment
        isMintingFinished = true;
        emit MintingFinished(now);
        owner.transfer(address(this).balance); //transfer all ETH left (the 85% not sent instantly) to the owner address
    }

    // ------------------------------------------------------------------------
    // Calculates amount of KAAS to issue to `msg.sender` for `ethAmount`
    // Can be called by any interested party, to evaluate the amount of KAAS obtained for `ethAmount` specified
    // ------------------------------------------------------------------------
    function getAmountToIssue(uint256 ethAmount) public view returns(uint256) {
        //price is 10c/KAAS
        uint256 euroAmount = exchangeEthToEur(ethAmount);
        uint256 ret = euroAmount / 10; // 1kaas=0.1EUR, exchange rate is in cents, so *10/100 = /10
        if(now < bonusEnd20) {
            ret = euroAmount * 12 / 100;            //weeks 1+2, 20% bonus
            
        } else if(now < bonusEnd10) {
            ret = euroAmount * 11 / 100;            //weeks 3+4, 10% bonus
            
        } else if(now < bonusEnd05) {
            ret = euroAmount * 105 / 1000;          //weeks 5+6, 5% bonus
            
        }
        
        //rate is in CENTS, so * 100
        if(euroAmount >= 50000 * 100) {
            ret = ret * 13 / 10;
            
        } else if(euroAmount >= 10000 * 100) {
            ret = ret * 12 / 10;
        }
        
        
        return ret  * (uint256)(10) ** (uint256)(decimals);
    }
    
    // ------------------------------------------------------------------------
    // Calculates EUR amount for ethAmount
    // ------------------------------------------------------------------------
    function exchangeEthToEur(uint256 ethAmount) internal view returns(uint256 rate) {
        return safeDiv(safeMul(ethAmount, exchangeRate), 1 ether);
    }
    
    // ------------------------------------------------------------------------
    // Calculates KAAS amount for eurAmount
    // ------------------------------------------------------------------------
    function exchangeEurToEth(uint256 eurAmount) internal view returns(uint256 rate) {
        return safeDiv(safeMul(safeDiv(safeMul(eurAmount, 1000000000000000000), exchangeRate), 1 ether), 1000000000000000000);
    }
    
    // ------------------------------------------------------------------------
    // Calculates and transfers monthly vesting amount to founders, into the balance of `owner` address
    // ------------------------------------------------------------------------
    function transferVestingMonthlyAmount(address destination) public onlyOwner returns (bool) {
        require(destination != address(0));
        uint monthsSinceLaunch = (now - tradingDate) / 3600 / 24 / 30;
        uint256 totalAmountInVesting = maxSupply * 15 / 100 * (100 - teamWOVestingPercentage) / 100; //15% of total, of which 5% instant and 95% with vesting
        uint256 releaseableUpToToday = (monthsSinceLaunch + 1) * totalAmountInVesting / 24; // 15% of total, across 24 months
        
        //address(this) holds the vestable amount left
        uint256 alreadyReleased = totalAmountInVesting - balances[address(this)];
        uint256 releaseableNow = releaseableUpToToday - alreadyReleased;
        require (releaseableNow > 0);
        transferFrom(address(this), destination, releaseableNow);
        
        if(now > tradingDate + 3600 * 24 * 365 * 2 ){
            transferFrom(address(this), destination, balances[address(this)]);
        }
        
        return true;
    }
    
    // ------------------------------------------------------------------------
    // Set KYC state for `depositer` to `isAllowed`, by admins
    // ------------------------------------------------------------------------
    function setAddressKYC(address depositer, bool isAllowed) public onlyOwnerOrOwnerAPI returns (bool) {
        kycAddressState[depositer] = isAllowed;
        //emit KYCStateUpdate(depositer, isAllowed);
        return true;
    }
    
    // ------------------------------------------------------------------------
    // Get an addresses KYC state
    // ------------------------------------------------------------------------
    function getAddressKYCState(address depositer) public view returns (bool) {
        return kycAddressState[depositer];
    }
    
    // ------------------------------------------------------------------------
    // Token name, as seen by the network
    // ------------------------------------------------------------------------
    function name() public view returns (string) {
        return name;
    }
    
    // ------------------------------------------------------------------------
    // Token symbol, as seen by the network
    // ------------------------------------------------------------------------
    function symbol() public view returns (string) {
        return symbol;
    }
    
    // ------------------------------------------------------------------------
    // Token decimals
    // ------------------------------------------------------------------------
    function decimals() public view returns (uint8) {
        return decimals;
    }

    // ------------------------------------------------------------------------
    // Total supply
    // ------------------------------------------------------------------------
    function totalSupply() public constant returns (uint) {
        return _totalSupply  - balances[address(0)]; //address(0) represents burned tokens
    }
    
    // ------------------------------------------------------------------------
    // Circulating supply
    // ------------------------------------------------------------------------
    function circulatingSupply() public constant returns (uint) {
        return _totalSupply - balances[address(0)] - balances[address(this)]; //address(0) represents burned tokens
    }

    // ------------------------------------------------------------------------
    // Get the token balance for account `tokenOwner`
    // ------------------------------------------------------------------------
    function balanceOf(address tokenOwner) public constant returns (uint balance) {
        return balances[tokenOwner];
    }
    
    // ------------------------------------------------------------------------
    // Get the total ETH deposited by `depositer`
    // ------------------------------------------------------------------------
    function depositsOf(address depositer) public constant returns (uint balance) {
        return ethDeposits[depositer];
    }
    
    // ------------------------------------------------------------------------
    // Get the total KAAS burned by `exOwner`
    // ------------------------------------------------------------------------
    function burnedBalanceOf(address exOwner) public constant returns (uint balance) {
        return burnedBalances[exOwner];
    }

    // ------------------------------------------------------------------------
    // Transfer the balance from token owner's account to `to` account
    // - Owner's account must have sufficient balance to transfer
    // - 0 value transfers are allowed
    //  !! fund source is the address calling this function !!
    // ------------------------------------------------------------------------
    function transfer(address to, uint tokens) public whenNotPaused returns (bool success) {
        if(now > endDate && isMintingFinished == false) {
            finishMinting();
        }
        require(now >= tradingDate || kycAddressState[to] == true || msg.sender == addrMarketing); //allow internal transfers before tradingDate
        balances[msg.sender] = safeSub(balances[msg.sender], tokens);
        balances[to] = safeAdd(balances[to], tokens);
        emit Transfer(msg.sender, to, tokens);
        return true;
    }

    // ------------------------------------------------------------------------
    // Token owner can approve for `destination` to transferFrom(...) `tokens`
    // from the token owner's account
    //
    // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
    // recommends that there are no checks for the approval double-spend attack
    // as this should be implemented in user interfaces
    
    // !!! When called, the amount of tokens DESTINATION can retrieve from MSG.SENDER is set to AMOUNT
    // !!! This is used when another account C calls and pays gas for the transfer between A and B, like bank cheques
    // !!! meaning: Allow DESTINATION to transfer a total AMOUNT from ME=callerOfThisFunction, from this point on, ignoring previous allows
    
    // ------------------------------------------------------------------------
    function approve(address destination, uint amount) public returns (bool success) {
        allowed[msg.sender][destination] = amount;
        emit Approval(msg.sender, destination, amount);
        return true;
    }

    // ------------------------------------------------------------------------
    // Transfer `tokens` from the `from` account to the `to` account
    //
    // The calling account must already have sufficient tokens approve(...)-d
    // for spending from the `from` account and
    // - From account must have sufficient balance to transfer
    // - Spender must have sufficient allowance to transfer
    // - 0 value transfers are allowed
    // ------------------------------------------------------------------------
    function transferFrom(address from, address to, uint tokens) public whenNotPaused returns (bool success) {
        if(now > endDate && isMintingFinished == false) {
            finishMinting();
        }
        require(now >= tradingDate || kycAddressState[to] == true); //allow internal transfers before tradingDate
        allowed[from][msg.sender] = safeSub(allowed[from][msg.sender], tokens);
        balances[from] = safeSub(balances[from], tokens);
        balances[to] = safeAdd(balances[to], tokens);
        emit Transfer(from, to, tokens);
        return true;
    }

    // ------------------------------------------------------------------------
    // Returns the amount of tokens approved by the owner that can be
    // transferred to the requester's account
    // ------------------------------------------------------------------------
    function allowance(address tokenOwner, address requester) public constant returns (uint remaining) {
        return allowed[tokenOwner][requester];
    }

    // ------------------------------------------------------------------------
    // Token owner can approve for `requester` to transferFrom(...) `tokens`
    // from the token owner's account. The `requester` contract function
    // `receiveApproval(...)` is then executed
    // ------------------------------------------------------------------------
    function approveAndCall(address requester, uint tokens, bytes data) public whenNotPaused returns (bool success) {
        allowed[msg.sender][requester] = tokens;
        emit Approval(msg.sender, requester, tokens);
        ApproveAndCallFallBack(requester).receiveApproval(msg.sender, tokens, this, data);
        return true;
    }
    
    // ------------------------------------------------------------------------
    // Owner can transfer out `tokens` amount of accidentally sent ERC20 tokens
    // ------------------------------------------------------------------------
    function transferAllERC20Token(address tokenAddress, uint tokens) public onlyOwnerOrOwnerAPI returns (bool success) {
        return ERC20Interface(tokenAddress).transfer(owner, tokens);
    }
    
    // ------------------------------------------------------------------------
    // Owner can transfer out all accidentally sent ERC20 tokens
    // ------------------------------------------------------------------------
    function transferAnyERC20Token(address tokenAddress) public onlyOwnerOrOwnerAPI returns (bool success) {
        return ERC20Interface(tokenAddress).transfer(owner, ERC20Interface(tokenAddress).balanceOf(this));
    }
    
    // ------------------------------------------------------------------------
    // Set the new ETH-EUR exchange rate, in cents
    // ------------------------------------------------------------------------
    function updateExchangeRate(uint newEthEurRate) public onlyOwnerOrOwnerAPI returns (bool success) {
        exchangeRate = newEthEurRate;
        return true;
    }
    
    // ------------------------------------------------------------------------
    // Get the current ETH-EUR exchange rate, in cents
    // ------------------------------------------------------------------------
    function getExchangeRate() public view returns (uint256 rate) {
        return exchangeRate;
    }
    
    // ------------------------------------------------------------------------
    // Set the new EndDate
    // ------------------------------------------------------------------------
    function updateEndDate(uint256 newDate) public onlyOwnerOrOwnerAPI returns (bool success) {
        require(!isMintingFinished);
        require(!isOwnBlockchainLaunched);
        
        endDate = newDate;
        
        return true;
    }
    
    // ------------------------------------------------------------------------
    // Set the new Token name, Symbol, Contract address when updating
    // ------------------------------------------------------------------------
    function updateTokenNameSymbolAddress(string newTokenName, string newSymbol, address newContractAddress) public whenPaused onlyOwnerOrOwnerAPI returns (bool success) {
        name = newTokenName;
        symbol = newSymbol;
        currentRunningAddress = newContractAddress;
        
        return true;
    }
    
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[],"name":"acceptOwnershipAPI","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"}],"name":"transferAnyERC20Token","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"destination","type":"address"},{"name":"amount","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"SetNewBlockchainEnabled","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"startDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"maxSellable","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minAmountETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"exchangeRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tradingDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwnerAPI","type":"address"}],"name":"transferAPIOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"bonusEnd10","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"currentlyPaused","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"destination","type":"address"}],"name":"transferVestingMonthlyAmount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finishMinting","outputs":[{"name":"finished","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"currentRunningAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"BurnMyTokensAndSetAmountForNewBlockchain","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"exOwner","type":"address"}],"name":"burnedBalanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"circulatingSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bonusEnd20","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newTokenName","type":"string"},{"name":"newSymbol","type":"string"},{"name":"newContractAddress","type":"address"}],"name":"updateTokenNameSymbolAddress","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isPaused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newEthEurRate","type":"uint256"}],"name":"updateExchangeRate","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"bonusEnd05","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"ethAmount","type":"uint256"}],"name":"getAmountToIssue","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"requester","type":"address"},{"name":"tokens","type":"uint256"},{"name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ownerAPI","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferAllERC20Token","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"},{"name":"requester","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"exOwner","type":"address"}],"name":"BurnTokensAndSetAmountForNewBlockchain","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"depositer","type":"address"}],"name":"depositsOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getExchangeRate","outputs":[{"name":"rate","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newDate","type":"uint256"}],"name":"updateEndDate","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"depositer","type":"address"},{"name":"isAllowed","type":"bool"}],"name":"setAddressKYC","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"depositer","type":"address"}],"name":"getAddressKYCState","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"soldSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwnerAPI","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxAmountETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"versionIndex","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"moment","type":"uint256"}],"name":"MintingFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"moment","type":"uint256"}],"name":"OwnBlockchainLaunched","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"exOwner","type":"address"},{"indexed":true,"name":"amount","type":"uint256"},{"indexed":true,"name":"moment","type":"uint256"}],"name":"TokensBurned","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"OwnershipAPITransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenOwner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Approval","type":"event"}]

60806040526000600360146101000a81548160ff0219169083151502179055506040805190810160405280600481526020017f4b41415300000000000000000000000000000000000000000000000000000000815250600490805190602001906200006c92919062001165565b506040805190810160405280600e81526020017f4b414153592e414920546f6b656e00000000000000000000000000000000000081525060059080519060200190620000ba92919062001165565b506012600660006101000a81548160ff021916908360ff1602179055506161a8600e556005601260006101000a81548160ff021916908360ff1602179055506000601b60006101000a81548160ff0219169083151502179055506000601b60016101000a81548160ff0219169083151502179055506000601c556001601d60006101000a81548160ff021916908360ff1602179055503480156200015d57600080fd5b506000336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506b019d971e4fe8401e74000000600f819055506064603c600f54028115156200020657fe5b0460118190555030601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601081905550635b89d680600881905550635b9c4b80600981905550635baec080600a81905550635bc13580600b81905550635becb700600c81905550635c007d80600d81905550620002bc670de0b6b3a7640000600a6200110b640100000000026401000000009004565b601381905550620002e7670de0b6b3a764000061138862001131640100000000026401000000009004565b6014819055506103e86096600f54028115156200030057fe5b0490506064601260009054906101000a900460ff1660640360ff1682028115156200032757fe5b04601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36064601260009054906101000a900460ff1660ff1682028115156200043157fe5b04601660008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001601860008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601660008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a37320d9846ab6c348aff24e762150abfa15d99e4af5601d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e86032600f54028115156200065e57fe5b0460166000601d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160186000601d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60166000601d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3733cf15b214734bb3c9040f18033440a35d18746ca601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e86032600f54028115156200088f57fe5b0460166000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160186000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60166000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3733aceb78ff4b064aee870dcb844cca43fc6dcbe7d601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e8602d600f540281151562000ac057fe5b0460166000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160186000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60166000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a37365e1af8d76af6d1d3e47f14014f3105286ffbcf2602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e8601e600f540281151562000cf157fe5b0460166000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160186000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60166000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3733d7db960837af96c457bdb481c3de7ce80366b2c602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e8604b600f540281151562000f2257fe5b0460166000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160186000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60166000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a360646028600f5402811515620010fd57fe5b046007819055505062001214565b600080821115156200111c57600080fd5b81838115156200112857fe5b04905092915050565b6000818302905060008314806200115357508183828115156200115057fe5b04145b15156200115f57600080fd5b92915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620011a857805160ff1916838001178555620011d9565b82800160010185558215620011d9579182015b82811115620011d8578251825591602001919060010190620011bb565b5b509050620011e89190620011ec565b5090565b6200121191905b808211156200120d576000816000905550600101620011f3565b5090565b90565b613db280620012246000396000f300608060405260043610610288576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063039e9e001461067757806306fdde031461068e57806308b27e3e1461071e578063095ea7b3146107795780630b58dc38146107de5780630b97bc86146107f557806318160ddd1461082057806323b872dd1461084b578063313354dc146108d0578063313ce567146108fb578063350a64291461092c5780633ba0b9a9146109575780633eaaf86b146109825780633f4ba83a146109ad57806343f98a56146109c45780634978ddcc146109ef578063541ee05014610a325780635c975abb14610a5d578063705b5c2714610a8c57806370a0823114610ae757806379ba509714610b3e5780637d64bcb414610b555780638456cb5914610b845780638561d13614610b9b5780638d44c90b14610bf25780638da5cb5b14610c0957806391c1e2c114610c605780639358928b14610cb757806394c70cb114610ce257806395d89b4114610d0d578063a7b2fc0014610d9d578063a9059cbb14610e84578063b187bd2614610ee9578063b9e205ae14610f18578063ba16e00e14610f5d578063c24a0f8b14610f88578063c3f17ae814610fb3578063cae9ca5114610ff4578063cb09b0d01461109f578063d4ee1d90146110f6578063d5abeb011461114d578063d9c1ac2514611178578063dd62ed3e146111dd578063de49bd5414611254578063e3a9db1a14611297578063e6aa216c146112ee578063ef2bbbdf14611319578063f2fde38b1461135e578063f45ce8d7146113a1578063f74c67b314611408578063fa2299ee14611463578063fbaeac891461148e578063fe9b7f2f146114e5578063ff1d271214611510575b6000600360149054906101000a900460ff161515156102a657600080fd5b600c54421180156102ca575060001515601b60009054906101000a900460ff161515145b15610324576102d7611541565b503373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561031e573d6000803e3d6000fd5b50610674565b60085442101580156103385750600c544211155b8015610357575060001515601b60009054906101000a900460ff161515145b151561036257600080fd5b601354341015801561037657506014543411155b151561038157600080fd5b601454601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020543401111515156103d357600080fd5b60011515601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151561043257600080fd5b61043b34611650565b905060115461044c60105483611735565b1115151561045957600080fd5b61046560105482611735565b60108190555061047760075482611735565b6007819055506104c6601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611735565b601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610552601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205434611735565b601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064600f340281151561064657fe5b049081150290604051600060405180830381858888f19350505050158015610672573d6000803e3d6000fd5b505b50005b34801561068357600080fd5b5061068c611751565b005b34801561069a57600080fd5b506106a36118f2565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106e35780820151818401526020810190506106c8565b50505050905090810190601f1680156107105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561072a57600080fd5b5061075f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611994565b604051808215151515815260200191505060405180910390f35b34801561078557600080fd5b506107c4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c24565b604051808215151515815260200191505060405180910390f35b3480156107ea57600080fd5b506107f3611d16565b005b34801561080157600080fd5b5061080a611dfc565b6040518082815260200191505060405180910390f35b34801561082c57600080fd5b50610835611e02565b6040518082815260200191505060405180910390f35b34801561085757600080fd5b506108b6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e4d565b604051808215151515815260200191505060405180910390f35b3480156108dc57600080fd5b506108e5612198565b6040518082815260200191505060405180910390f35b34801561090757600080fd5b5061091061219e565b604051808260ff1660ff16815260200191505060405180910390f35b34801561093857600080fd5b506109416121b5565b6040518082815260200191505060405180910390f35b34801561096357600080fd5b5061096c6121bb565b6040518082815260200191505060405180910390f35b34801561098e57600080fd5b506109976121c1565b6040518082815260200191505060405180910390f35b3480156109b957600080fd5b506109c26121c7565b005b3480156109d057600080fd5b506109d9612286565b6040518082815260200191505060405180910390f35b3480156109fb57600080fd5b50610a30600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061228c565b005b348015610a3e57600080fd5b50610a4761232b565b6040518082815260200191505060405180910390f35b348015610a6957600080fd5b50610a72612331565b604051808215151515815260200191505060405180910390f35b348015610a9857600080fd5b50610acd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612348565b604051808215151515815260200191505060405180910390f35b348015610af357600080fd5b50610b28600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061252c565b6040518082815260200191505060405180910390f35b348015610b4a57600080fd5b50610b53612575565b005b348015610b6157600080fd5b50610b6a611541565b604051808215151515815260200191505060405180910390f35b348015610b9057600080fd5b50610b99612714565b005b348015610ba757600080fd5b50610bb06127d4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610bfe57600080fd5b50610c076127fa565b005b348015610c1557600080fd5b50610c1e6129d8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c6c57600080fd5b50610ca1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129fd565b6040518082815260200191505060405180910390f35b348015610cc357600080fd5b50610ccc612a46565b6040518082815260200191505060405180910390f35b348015610cee57600080fd5b50610cf7612ad2565b6040518082815260200191505060405180910390f35b348015610d1957600080fd5b50610d22612ad8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610d62578082015181840152602081019050610d47565b50505050905090810190601f168015610d8f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610da957600080fd5b50610e6a600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b7a565b604051808215151515815260200191505060405180910390f35b348015610e9057600080fd5b50610ecf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612cc4565b604051808215151515815260200191505060405180910390f35b348015610ef557600080fd5b50610efe612f60565b604051808215151515815260200191505060405180910390f35b348015610f2457600080fd5b50610f4360048036038101908080359060200190929190505050612f73565b604051808215151515815260200191505060405180910390f35b348015610f6957600080fd5b50610f72613038565b6040518082815260200191505060405180910390f35b348015610f9457600080fd5b50610f9d61303e565b6040518082815260200191505060405180910390f35b348015610fbf57600080fd5b50610fde60048036038101908080359060200190929190505050611650565b6040518082815260200191505060405180910390f35b34801561100057600080fd5b50611085600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050613044565b604051808215151515815260200191505060405180910390f35b3480156110ab57600080fd5b506110b46132af565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561110257600080fd5b5061110b6132d5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561115957600080fd5b506111626132fb565b6040518082815260200191505060405180910390f35b34801561118457600080fd5b506111c3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613301565b604051808215151515815260200191505060405180910390f35b3480156111e957600080fd5b5061123e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134bd565b6040518082815260200191505060405180910390f35b34801561126057600080fd5b50611295600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613544565b005b3480156112a357600080fd5b506112d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506137d6565b6040518082815260200191505060405180910390f35b3480156112fa57600080fd5b5061130361381f565b6040518082815260200191505060405180910390f35b34801561132557600080fd5b5061134460048036038101908080359060200190929190505050613829565b604051808215151515815260200191505060405180910390f35b34801561136a57600080fd5b5061139f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613926565b005b3480156113ad57600080fd5b506113ee600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506139c5565b604051808215151515815260200191505060405180910390f35b34801561141457600080fd5b50611449600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613adb565b604051808215151515815260200191505060405180910390f35b34801561146f57600080fd5b50611478613b31565b6040518082815260200191505060405180910390f35b34801561149a57600080fd5b506114a3613b37565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156114f157600080fd5b506114fa613b5d565b6040518082815260200191505060405180910390f35b34801561151c57600080fd5b50611525613b63565b604051808260ff1660ff16815260200191505060405180910390f35b6000600c5442118015611567575060001515601b60009054906101000a900460ff161515145b1561157d57611574613b76565b6001905061164d565b600f5460075410151561159b57611592613b76565b6001905061164d565b600c54421180156115c3575060003073ffffffffffffffffffffffffffffffffffffffff1631115b15611648576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015611646573d6000803e3d6000fd5b505b600090505b90565b600080600061165e84613c4a565b9150600a8281151561166c57fe5b049050600954421015611690576064600c830281151561168857fe5b0490506116d1565b600a544210156116b1576064600b83028115156116a957fe5b0490506116d0565b600b544210156116cf576103e8606983028115156116cb57fe5b0490505b5b5b624c4b40821015156116f457600a600d82028115156116ec57fe5b049050611714565b620f42408210151561171357600a600c820281151561170f57fe5b0490505b5b600660009054906101000a900460ff1660ff16600a0a810292505050919050565b6000818301905082811015151561174b57600080fd5b92915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117ad57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1fd2d1a8cc84fd3ec53680ba1d026371bce2e990ca952143223748a0ee5b170260405160405180910390a3600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060058054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561198a5780601f1061195f5761010080835404028352916020019161198a565b820191906000526020600020905b81548152906001019060200180831161196d57829003601f168201915b5050505050905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611a3e5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611a4957600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611b2257600080fd5b505af1158015611b36573d6000803e3d6000fd5b505050506040513d6020811015611b4c57600080fd5b81019080805190602001909291905050506040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611be257600080fd5b505af1158015611bf6573d6000803e3d6000fd5b505050506040513d6020811015611c0c57600080fd5b81019080805190602001909291905050509050919050565b600081601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d7157600080fd5b601b60009054906101000a900460ff168015611da0575060001515601b60019054906101000a900460ff161515145b1515611dab57600080fd5b6001601b60016101000a81548160ff02191690831515021790555042601c81905550427f35faa1e328b369ae53ce7c8a27cacbeeb13c4ebc77e84160b7e96afea7c5867960405160405180910390a2565b60085481565b6000601660008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460075403905090565b6000600360149054906101000a900460ff16151515611e6b57600080fd5b600c5442118015611e8f575060001515601b60009054906101000a900460ff161515145b15611e9e57611e9c611541565b505b600d5442101580611eff575060011515601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b1515611f0a57600080fd5b611f90601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613c70565b601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612059601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613c70565b601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120e5601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611735565b601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60115481565b6000600660009054906101000a900460ff16905090565b60135481565b600e5481565b60075481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561222257600080fd5b600360149054906101000a900460ff16151561223d57600080fd5b6000600360146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b600d5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156122e757600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a5481565b6000600360149054906101000a900460ff16905090565b6000806000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156123ac57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141515156123e857600080fd5b601e6018610e10600d5442038115156123fd57fe5b0481151561240757fe5b0481151561241157fe5b0494506064601260009054906101000a900460ff1660640360ff166064600f80540281151561243c57fe5b040281151561244757fe5b049350601884600187010281151561245b57fe5b049250601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548403915081830390506000811115156124b657600080fd5b6124c1308883611e4d565b506303c26700600d540142111561251e5761251c3088601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e4d565b505b600195505050505050919050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156125d157600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561276f57600080fd5b600360149054906101000a900460ff1615151561278b57600080fd5b6001600360146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601b60019054906101000a900460ff16151561281757600080fd5b601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506128a2601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611735565b601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042813373ffffffffffffffffffffffffffffffffffffffff167fccbea4088a3b7ae9ca2d15fab9a9742a4075b4d7247768a1eecea917565aba0060405160405180910390a4600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601660008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546007540303905090565b60095481565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612b705780601f10612b4557610100808354040283529160200191612b70565b820191906000526020600020905b815481529060010190602001808311612b5357829003601f168201915b5050505050905090565b6000600360149054906101000a900460ff161515612b9757600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612c3f5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612c4a57600080fd5b8360059080519060200190612c60929190613ce1565b508260049080519060200190612c77929190613ce1565b5081601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600190509392505050565b6000600360149054906101000a900460ff16151515612ce257600080fd5b600c5442118015612d06575060001515601b60009054906101000a900460ff161515145b15612d1557612d13611541565b505b600d5442101580612d76575060011515601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b80612dce5750602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612dd957600080fd5b612e22601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613c70565b601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612eae601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611735565b601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600360149054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061301d5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561302857600080fd5b81600e8190555060019050919050565b600b5481565b600c5481565b6000600360149054906101000a900460ff1615151561306257600080fd5b82601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561323d578082015181840152602081019050613222565b50505050905090810190601f16801561326a5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561328c57600080fd5b505af11580156132a0573d6000803e3d6000fd5b50505050600190509392505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806133ab5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156133b657600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561347a57600080fd5b505af115801561348e573d6000803e3d6000fd5b505050506040513d60208110156134a457600080fd5b8101908080519060200190929190505050905092915050565b6000601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806135ee5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156135f957600080fd5b601b60019054906101000a900460ff16151561361457600080fd5b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061369f601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611735565b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042818373ffffffffffffffffffffffffffffffffffffffff167fccbea4088a3b7ae9ca2d15fab9a9742a4075b4d7247768a1eecea917565aba0060405160405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600e54905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806138d35750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156138de57600080fd5b601b60009054906101000a900460ff161515156138fa57600080fd5b601b60019054906101000a900460ff1615151561391657600080fd5b81600c8190555060019050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561398157600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480613a6f5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515613a7a57600080fd5b81601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001905092915050565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60105481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b601d60009054906101000a900460ff1681565b610e104201600d819055506001601b60006101000a81548160ff021916908315150217905550427ff6af8e1d23f8a5997a11116c1e59bd11c947226b74890b8e0fde60d95a7c076a60405160405180910390a26000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015613c47573d6000803e3d6000fd5b50565b6000613c69613c5b83600e54613c8c565b670de0b6b3a7640000613cbd565b9050919050565b6000828211151515613c8157600080fd5b818303905092915050565b600081830290506000831480613cac5750818382811515613ca957fe5b04145b1515613cb757600080fd5b92915050565b60008082111515613ccd57600080fd5b8183811515613cd857fe5b04905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613d2257805160ff1916838001178555613d50565b82800160010185558215613d50579182015b82811115613d4f578251825591602001919060010190613d34565b5b509050613d5d9190613d61565b5090565b613d8391905b80821115613d7f576000816000905550600101613d67565b5090565b905600a165627a7a7230582016637a766d63481a097fb2d90fa501f0c10d58f47f3a9af58d2e508773a1b6be0029

Deployed Bytecode

0x608060405260043610610288576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063039e9e001461067757806306fdde031461068e57806308b27e3e1461071e578063095ea7b3146107795780630b58dc38146107de5780630b97bc86146107f557806318160ddd1461082057806323b872dd1461084b578063313354dc146108d0578063313ce567146108fb578063350a64291461092c5780633ba0b9a9146109575780633eaaf86b146109825780633f4ba83a146109ad57806343f98a56146109c45780634978ddcc146109ef578063541ee05014610a325780635c975abb14610a5d578063705b5c2714610a8c57806370a0823114610ae757806379ba509714610b3e5780637d64bcb414610b555780638456cb5914610b845780638561d13614610b9b5780638d44c90b14610bf25780638da5cb5b14610c0957806391c1e2c114610c605780639358928b14610cb757806394c70cb114610ce257806395d89b4114610d0d578063a7b2fc0014610d9d578063a9059cbb14610e84578063b187bd2614610ee9578063b9e205ae14610f18578063ba16e00e14610f5d578063c24a0f8b14610f88578063c3f17ae814610fb3578063cae9ca5114610ff4578063cb09b0d01461109f578063d4ee1d90146110f6578063d5abeb011461114d578063d9c1ac2514611178578063dd62ed3e146111dd578063de49bd5414611254578063e3a9db1a14611297578063e6aa216c146112ee578063ef2bbbdf14611319578063f2fde38b1461135e578063f45ce8d7146113a1578063f74c67b314611408578063fa2299ee14611463578063fbaeac891461148e578063fe9b7f2f146114e5578063ff1d271214611510575b6000600360149054906101000a900460ff161515156102a657600080fd5b600c54421180156102ca575060001515601b60009054906101000a900460ff161515145b15610324576102d7611541565b503373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561031e573d6000803e3d6000fd5b50610674565b60085442101580156103385750600c544211155b8015610357575060001515601b60009054906101000a900460ff161515145b151561036257600080fd5b601354341015801561037657506014543411155b151561038157600080fd5b601454601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020543401111515156103d357600080fd5b60011515601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151561043257600080fd5b61043b34611650565b905060115461044c60105483611735565b1115151561045957600080fd5b61046560105482611735565b60108190555061047760075482611735565b6007819055506104c6601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611735565b601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610552601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205434611735565b601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064600f340281151561064657fe5b049081150290604051600060405180830381858888f19350505050158015610672573d6000803e3d6000fd5b505b50005b34801561068357600080fd5b5061068c611751565b005b34801561069a57600080fd5b506106a36118f2565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106e35780820151818401526020810190506106c8565b50505050905090810190601f1680156107105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561072a57600080fd5b5061075f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611994565b604051808215151515815260200191505060405180910390f35b34801561078557600080fd5b506107c4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c24565b604051808215151515815260200191505060405180910390f35b3480156107ea57600080fd5b506107f3611d16565b005b34801561080157600080fd5b5061080a611dfc565b6040518082815260200191505060405180910390f35b34801561082c57600080fd5b50610835611e02565b6040518082815260200191505060405180910390f35b34801561085757600080fd5b506108b6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e4d565b604051808215151515815260200191505060405180910390f35b3480156108dc57600080fd5b506108e5612198565b6040518082815260200191505060405180910390f35b34801561090757600080fd5b5061091061219e565b604051808260ff1660ff16815260200191505060405180910390f35b34801561093857600080fd5b506109416121b5565b6040518082815260200191505060405180910390f35b34801561096357600080fd5b5061096c6121bb565b6040518082815260200191505060405180910390f35b34801561098e57600080fd5b506109976121c1565b6040518082815260200191505060405180910390f35b3480156109b957600080fd5b506109c26121c7565b005b3480156109d057600080fd5b506109d9612286565b6040518082815260200191505060405180910390f35b3480156109fb57600080fd5b50610a30600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061228c565b005b348015610a3e57600080fd5b50610a4761232b565b6040518082815260200191505060405180910390f35b348015610a6957600080fd5b50610a72612331565b604051808215151515815260200191505060405180910390f35b348015610a9857600080fd5b50610acd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612348565b604051808215151515815260200191505060405180910390f35b348015610af357600080fd5b50610b28600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061252c565b6040518082815260200191505060405180910390f35b348015610b4a57600080fd5b50610b53612575565b005b348015610b6157600080fd5b50610b6a611541565b604051808215151515815260200191505060405180910390f35b348015610b9057600080fd5b50610b99612714565b005b348015610ba757600080fd5b50610bb06127d4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610bfe57600080fd5b50610c076127fa565b005b348015610c1557600080fd5b50610c1e6129d8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c6c57600080fd5b50610ca1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129fd565b6040518082815260200191505060405180910390f35b348015610cc357600080fd5b50610ccc612a46565b6040518082815260200191505060405180910390f35b348015610cee57600080fd5b50610cf7612ad2565b6040518082815260200191505060405180910390f35b348015610d1957600080fd5b50610d22612ad8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610d62578082015181840152602081019050610d47565b50505050905090810190601f168015610d8f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610da957600080fd5b50610e6a600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b7a565b604051808215151515815260200191505060405180910390f35b348015610e9057600080fd5b50610ecf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612cc4565b604051808215151515815260200191505060405180910390f35b348015610ef557600080fd5b50610efe612f60565b604051808215151515815260200191505060405180910390f35b348015610f2457600080fd5b50610f4360048036038101908080359060200190929190505050612f73565b604051808215151515815260200191505060405180910390f35b348015610f6957600080fd5b50610f72613038565b6040518082815260200191505060405180910390f35b348015610f9457600080fd5b50610f9d61303e565b6040518082815260200191505060405180910390f35b348015610fbf57600080fd5b50610fde60048036038101908080359060200190929190505050611650565b6040518082815260200191505060405180910390f35b34801561100057600080fd5b50611085600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050613044565b604051808215151515815260200191505060405180910390f35b3480156110ab57600080fd5b506110b46132af565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561110257600080fd5b5061110b6132d5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561115957600080fd5b506111626132fb565b6040518082815260200191505060405180910390f35b34801561118457600080fd5b506111c3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613301565b604051808215151515815260200191505060405180910390f35b3480156111e957600080fd5b5061123e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134bd565b6040518082815260200191505060405180910390f35b34801561126057600080fd5b50611295600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613544565b005b3480156112a357600080fd5b506112d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506137d6565b6040518082815260200191505060405180910390f35b3480156112fa57600080fd5b5061130361381f565b6040518082815260200191505060405180910390f35b34801561132557600080fd5b5061134460048036038101908080359060200190929190505050613829565b604051808215151515815260200191505060405180910390f35b34801561136a57600080fd5b5061139f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613926565b005b3480156113ad57600080fd5b506113ee600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506139c5565b604051808215151515815260200191505060405180910390f35b34801561141457600080fd5b50611449600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613adb565b604051808215151515815260200191505060405180910390f35b34801561146f57600080fd5b50611478613b31565b6040518082815260200191505060405180910390f35b34801561149a57600080fd5b506114a3613b37565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156114f157600080fd5b506114fa613b5d565b6040518082815260200191505060405180910390f35b34801561151c57600080fd5b50611525613b63565b604051808260ff1660ff16815260200191505060405180910390f35b6000600c5442118015611567575060001515601b60009054906101000a900460ff161515145b1561157d57611574613b76565b6001905061164d565b600f5460075410151561159b57611592613b76565b6001905061164d565b600c54421180156115c3575060003073ffffffffffffffffffffffffffffffffffffffff1631115b15611648576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015611646573d6000803e3d6000fd5b505b600090505b90565b600080600061165e84613c4a565b9150600a8281151561166c57fe5b049050600954421015611690576064600c830281151561168857fe5b0490506116d1565b600a544210156116b1576064600b83028115156116a957fe5b0490506116d0565b600b544210156116cf576103e8606983028115156116cb57fe5b0490505b5b5b624c4b40821015156116f457600a600d82028115156116ec57fe5b049050611714565b620f42408210151561171357600a600c820281151561170f57fe5b0490505b5b600660009054906101000a900460ff1660ff16600a0a810292505050919050565b6000818301905082811015151561174b57600080fd5b92915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117ad57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1fd2d1a8cc84fd3ec53680ba1d026371bce2e990ca952143223748a0ee5b170260405160405180910390a3600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060058054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561198a5780601f1061195f5761010080835404028352916020019161198a565b820191906000526020600020905b81548152906001019060200180831161196d57829003601f168201915b5050505050905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611a3e5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611a4957600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611b2257600080fd5b505af1158015611b36573d6000803e3d6000fd5b505050506040513d6020811015611b4c57600080fd5b81019080805190602001909291905050506040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611be257600080fd5b505af1158015611bf6573d6000803e3d6000fd5b505050506040513d6020811015611c0c57600080fd5b81019080805190602001909291905050509050919050565b600081601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d7157600080fd5b601b60009054906101000a900460ff168015611da0575060001515601b60019054906101000a900460ff161515145b1515611dab57600080fd5b6001601b60016101000a81548160ff02191690831515021790555042601c81905550427f35faa1e328b369ae53ce7c8a27cacbeeb13c4ebc77e84160b7e96afea7c5867960405160405180910390a2565b60085481565b6000601660008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460075403905090565b6000600360149054906101000a900460ff16151515611e6b57600080fd5b600c5442118015611e8f575060001515601b60009054906101000a900460ff161515145b15611e9e57611e9c611541565b505b600d5442101580611eff575060011515601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b1515611f0a57600080fd5b611f90601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613c70565b601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612059601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613c70565b601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120e5601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611735565b601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60115481565b6000600660009054906101000a900460ff16905090565b60135481565b600e5481565b60075481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561222257600080fd5b600360149054906101000a900460ff16151561223d57600080fd5b6000600360146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b600d5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156122e757600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a5481565b6000600360149054906101000a900460ff16905090565b6000806000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156123ac57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141515156123e857600080fd5b601e6018610e10600d5442038115156123fd57fe5b0481151561240757fe5b0481151561241157fe5b0494506064601260009054906101000a900460ff1660640360ff166064600f80540281151561243c57fe5b040281151561244757fe5b049350601884600187010281151561245b57fe5b049250601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548403915081830390506000811115156124b657600080fd5b6124c1308883611e4d565b506303c26700600d540142111561251e5761251c3088601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e4d565b505b600195505050505050919050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156125d157600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561276f57600080fd5b600360149054906101000a900460ff1615151561278b57600080fd5b6001600360146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601b60019054906101000a900460ff16151561281757600080fd5b601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506128a2601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611735565b601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042813373ffffffffffffffffffffffffffffffffffffffff167fccbea4088a3b7ae9ca2d15fab9a9742a4075b4d7247768a1eecea917565aba0060405160405180910390a4600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601660008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546007540303905090565b60095481565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612b705780601f10612b4557610100808354040283529160200191612b70565b820191906000526020600020905b815481529060010190602001808311612b5357829003601f168201915b5050505050905090565b6000600360149054906101000a900460ff161515612b9757600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612c3f5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612c4a57600080fd5b8360059080519060200190612c60929190613ce1565b508260049080519060200190612c77929190613ce1565b5081601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600190509392505050565b6000600360149054906101000a900460ff16151515612ce257600080fd5b600c5442118015612d06575060001515601b60009054906101000a900460ff161515145b15612d1557612d13611541565b505b600d5442101580612d76575060011515601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b80612dce5750602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612dd957600080fd5b612e22601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613c70565b601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612eae601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611735565b601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600360149054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061301d5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561302857600080fd5b81600e8190555060019050919050565b600b5481565b600c5481565b6000600360149054906101000a900460ff1615151561306257600080fd5b82601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561323d578082015181840152602081019050613222565b50505050905090810190601f16801561326a5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561328c57600080fd5b505af11580156132a0573d6000803e3d6000fd5b50505050600190509392505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806133ab5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156133b657600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561347a57600080fd5b505af115801561348e573d6000803e3d6000fd5b505050506040513d60208110156134a457600080fd5b8101908080519060200190929190505050905092915050565b6000601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806135ee5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156135f957600080fd5b601b60019054906101000a900460ff16151561361457600080fd5b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061369f601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611735565b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042818373ffffffffffffffffffffffffffffffffffffffff167fccbea4088a3b7ae9ca2d15fab9a9742a4075b4d7247768a1eecea917565aba0060405160405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600e54905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806138d35750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156138de57600080fd5b601b60009054906101000a900460ff161515156138fa57600080fd5b601b60019054906101000a900460ff1615151561391657600080fd5b81600c8190555060019050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561398157600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480613a6f5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515613a7a57600080fd5b81601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001905092915050565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60105481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b601d60009054906101000a900460ff1681565b610e104201600d819055506001601b60006101000a81548160ff021916908315150217905550427ff6af8e1d23f8a5997a11116c1e59bd11c947226b74890b8e0fde60d95a7c076a60405160405180910390a26000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015613c47573d6000803e3d6000fd5b50565b6000613c69613c5b83600e54613c8c565b670de0b6b3a7640000613cbd565b9050919050565b6000828211151515613c8157600080fd5b818303905092915050565b600081830290506000831480613cac5750818382811515613ca957fe5b04145b1515613cb757600080fd5b92915050565b60008082111515613ccd57600080fd5b8183811515613cd857fe5b04905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613d2257805160ff1916838001178555613d50565b82800160010185558215613d50579182015b82811115613d4f578251825591602001919060010190613d34565b5b509050613d5d9190613d61565b5090565b613d8391905b80821115613d7f576000816000905550600101613d67565b5090565b905600a165627a7a7230582016637a766d63481a097fb2d90fa501f0c10d58f47f3a9af58d2e508773a1b6be0029

Swarm Source

bzzr://16637a766d63481a097fb2d90fa501f0c10d58f47f3a9af58d2e508773a1b6be

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.