ETH Price: $3,199.39 (+1.39%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer85254102019-09-11 0:53:401966 days ago1568163220IN
ETH777
0 ETH0.000252518
Transfer81379902019-07-12 18:56:022026 days ago1562957762IN
ETH777
0 ETH0.0011783441
Transfer80334532019-06-26 11:59:132042 days ago1561550353IN
ETH777
0 ETH0.0004957617.25000089
Transfer79882632019-06-19 10:39:502049 days ago1560940790IN
ETH777
0 ETH0.0003305111.50000025
Transfer76698862019-04-30 16:37:452099 days ago1556642265IN
ETH777
0 ETH0.000129334.5
Transfer75718752019-04-15 10:06:232114 days ago1555322783IN
ETH777
0 ETH0.000175176.09499955
Transfer75553042019-04-12 20:29:572117 days ago1555100997IN
ETH777
0 ETH0.00019836.90000025
Transfer75552892019-04-12 20:27:212117 days ago1555100841IN
ETH777
0 ETH0.00019836.90000025
Transfer75123702019-04-06 4:19:182123 days ago1554524358IN
ETH777
0 ETH0.000086223
Transfer74915932019-04-02 22:16:122127 days ago1554243372IN
ETH777
0 ETH0.000114964
Transfer74448622019-03-26 14:55:452134 days ago1553612145IN
ETH777
0 ETH0.00086141
Transfer74148192019-03-21 22:28:002139 days ago1553207280IN
ETH777
0 ETH0.0001266
Transfer74111882019-03-21 8:56:592139 days ago1553158619IN
ETH777
0 ETH0.00014375
Transfer74088692019-03-21 0:07:262140 days ago1553126846IN
ETH777
0 ETH0.000172446
Transfer74032752019-03-20 3:19:242141 days ago1553051964IN
ETH777
0 ETH0.00014375
Transfer73913622019-03-18 6:41:332142 days ago1552891293IN
ETH777
0 ETH0.000028741
Transfer73882362019-03-17 18:54:372143 days ago1552848877IN
ETH777
0 ETH0.000114964
Transfer73866452019-03-17 13:05:502143 days ago1552827950IN
ETH777
0 ETH0.0006330
Transfer73864912019-03-17 12:35:112143 days ago1552826111IN
ETH777
0 ETH0.0005460619
Transfer73864712019-03-17 12:32:042143 days ago1552825924IN
ETH777
0 ETH0.0005460619
Transfer73675802019-03-14 14:11:302146 days ago1552572690IN
ETH777
0 ETH0.000172446
Transfer73655922019-03-14 6:41:202146 days ago1552545680IN
ETH777
0 ETH0.00143750
Transfer73642512019-03-14 1:40:512147 days ago1552527651IN
ETH777
0 ETH0.00086141
Transfer73640682019-03-14 0:59:282147 days ago1552525168IN
ETH777
0 ETH0.000137954.8
Transfer73618252019-03-13 16:42:192147 days ago1552495339IN
ETH777
0 ETH0.001745355
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
73618252019-03-13 16:42:192147 days ago1552495339
ETH777
0.02340274 ETH
73618252019-03-13 16:42:192147 days ago1552495339
ETH777
 Contract Creation0 ETH
73612752019-03-13 14:38:232147 days ago1552487903
ETH777
0.05473535 ETH
73606932019-03-13 12:21:452147 days ago1552479705
ETH777
 Contract Creation0 ETH
73602532019-03-13 10:43:252147 days ago1552473805
ETH777
0.00559917 ETH
73595342019-03-13 8:05:582147 days ago1552464358
ETH777
 Contract Creation0 ETH
73580892019-03-13 2:34:062148 days ago1552444446
ETH777
0.00396875 ETH
73579482019-03-13 2:00:562148 days ago1552442456
ETH777
0.0580013 ETH
73576202019-03-13 0:47:522148 days ago1552438072
ETH777
0.01364583 ETH
73570762019-03-12 22:45:022148 days ago1552430702
ETH777
0.00055 ETH
73570762019-03-12 22:45:022148 days ago1552430702
ETH777
0.00095 ETH
73561832019-03-12 19:29:592148 days ago1552418999
ETH777
0.02552083 ETH
73551842019-03-12 15:48:052148 days ago1552405685
ETH777
1.38544618 ETH
73551712019-03-12 15:45:202148 days ago1552405520
ETH777
0.7075 ETH
73551702019-03-12 15:45:022148 days ago1552405502
ETH777
0.67468158 ETH
73551602019-03-12 15:42:392148 days ago1552405359
ETH777
0.01475694 ETH
73548312019-03-12 14:28:592148 days ago1552400939
ETH777
0.00119097 ETH
73544902019-03-12 13:20:482148 days ago1552396848
ETH777
0.01039062 ETH
73544492019-03-12 13:10:292148 days ago1552396229
ETH777
0.00201388 ETH
73544262019-03-12 13:05:102148 days ago1552395910
ETH777
0.00201041 ETH
73543882019-03-12 12:55:402148 days ago1552395340
ETH777
0.00182291 ETH
73540982019-03-12 11:49:472148 days ago1552391387
ETH777
0.8027342 ETH
73531952019-03-12 8:23:432148 days ago1552379023
ETH777
0.0052782 ETH
73530662019-03-12 7:54:212148 days ago1552377261
ETH777
0.09858387 ETH
73530602019-03-12 7:53:352148 days ago1552377215
ETH777
0.00083333 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Revolution2

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-11-27
*/

pragma solidity 0.4.25;

/**
* Инновационный проект по распределению криптовалюты ETH с ежедневными выплатами до 12% в день!
* An innovative Blockchain Ethereum project with open source up to 12% per day! 
* ежедневные выплаты, навечно. инновационная надежность. до 12% в день, до 360% в месяц. 
* валюта вклада и выплаты — ETH, минимальный взнос — 0,01 ETH
* Daily payments forever. The innovative reliability. up to 12% per day, up to 360% per month. 
* Currency and payment — ETH. Minimal contribution 0.01 eth
* https://www.eth777.io/
*/ 


library Math {
  function min(uint a, uint b) internal pure returns(uint) {
    if (a > b) {
      return b;
    }
    return a;
  }
}


library Zero {
  function requireNotZero(address addr) internal pure {
    require(addr != address(0), "require not zero address");
  }

  function requireNotZero(uint val) internal pure {
    require(val != 0, "require not zero value");
  }

  function notZero(address addr) internal pure returns(bool) {
    return !(addr == address(0));
  }

  function isZero(address addr) internal pure returns(bool) {
    return addr == address(0);
  }

  function isZero(uint a) internal pure returns(bool) {
    return a == 0;
  }

  function notZero(uint a) internal pure returns(bool) {
    return a != 0;
  }
}


library Percent {
  struct percent {
    uint num;
    uint den;
  }
  
  function mul(percent storage p, uint a) internal view returns (uint) {
    if (a == 0) {
      return 0;
    }
    return a*p.num/p.den;
  }

  function div(percent storage p, uint a) internal view returns (uint) {
    return a/p.num*p.den;
  }

  function sub(percent storage p, uint a) internal view returns (uint) {
    uint b = mul(p, a);
    if (b >= a) {
      return 0;
    }
    return a - b;
  }

  function add(percent storage p, uint a) internal view returns (uint) {
    return a + mul(p, a);
  }

  function toMemory(percent storage p) internal view returns (Percent.percent memory) {
    return Percent.percent(p.num, p.den);
  }

  function mmul(percent memory p, uint a) internal pure returns (uint) {
    if (a == 0) {
      return 0;
    }
    return a*p.num/p.den;
  }

  function mdiv(percent memory p, uint a) internal pure returns (uint) {
    return a/p.num*p.den;
  }

  function msub(percent memory p, uint a) internal pure returns (uint) {
    uint b = mmul(p, a);
    if (b >= a) {
      return 0;
    }
    return a - b;
  }

  function madd(percent memory p, uint a) internal pure returns (uint) {
    return a + mmul(p, a);
  }
}


library Address {
  function toAddress(bytes source) internal pure returns(address addr) {
    assembly { addr := mload(add(source,0x14)) }
    return addr;
  }

  function isNotContract(address addr) internal view returns(bool) {
    uint length;
    assembly { length := extcodesize(addr) }
    return length == 0;
  }
}


/**
 * @title SafeMath
 * @dev Math operations with safety checks that revert on error
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, reverts on overflow.
  */
  function mul(uint256 _a, uint256 _b) internal pure returns (uint256) {
    if (_a == 0) {
      return 0;
    }

    uint256 c = _a * _b;
    require(c / _a == _b);

    return c;
  }

  /**
  * @dev Integer division of two numbers truncating the quotient, reverts on division by zero.
  */
  function div(uint256 _a, uint256 _b) internal pure returns (uint256) {
    require(_b > 0); // Solidity only automatically asserts when dividing by 0
    uint256 c = _a / _b;
    // assert(_a == _b * c + _a % _b); // There is no case in which this doesn't hold

    return c;
  }

  /**
  * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 _a, uint256 _b) internal pure returns (uint256) {
    require(_b <= _a);
    uint256 c = _a - _b;

    return c;
  }

  /**
  * @dev Adds two numbers, reverts on overflow.
  */
  function add(uint256 _a, uint256 _b) internal pure returns (uint256) {
    uint256 c = _a + _b;
    require(c >= _a);

    return c;
  }

  /**
  * @dev Divides two numbers and returns the remainder (unsigned integer modulo),
  * reverts when dividing by zero.
  */
  function mod(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b != 0);
    return a % b;
  }
}


contract Accessibility {
  address private owner;
  modifier onlyOwner() {
    require(msg.sender == owner, "access denied");
    _;
  }

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

  function disown() internal {
    delete owner;
  }
}


contract Rev1Storage {
  function investorShortInfo(address addr) public view returns(uint value, uint refBonus); 
}


contract Rev2Storage {
  function investorInfo(address addr) public view returns(uint investment, uint paymentTime); 
}


library PrivateEntrance {
  using PrivateEntrance for privateEntrance;
  using Math for uint;
  struct privateEntrance {
    Rev1Storage rev1Storage;
    Rev2Storage rev2Storage;
    uint investorMaxInvestment;
    uint endTimestamp;
    mapping(address=>bool) hasAccess;
  }

  function isActive(privateEntrance storage pe) internal view returns(bool) {
    return pe.endTimestamp > now;
  }

  function maxInvestmentFor(privateEntrance storage pe, address investorAddr) internal view returns(uint) {
    if (!pe.hasAccess[investorAddr]) {
      return 0;
    }

    (uint maxInvestment, ) = pe.rev1Storage.investorShortInfo(investorAddr);
    if (maxInvestment == 0) {
      return 0;
    }
    maxInvestment = Math.min(maxInvestment, pe.investorMaxInvestment);

    (uint currInvestment, ) = pe.rev2Storage.investorInfo(investorAddr);
    
    if (currInvestment >= maxInvestment) {
      return 0;
    }

    return maxInvestment-currInvestment;
  }

  function provideAccessFor(privateEntrance storage pe, address[] addrs) internal {
    for (uint16 i; i < addrs.length; i++) {
      pe.hasAccess[addrs[i]] = true;
    }
  }
}


contract InvestorsStorage is Accessibility {
  struct Investor {
    uint investment;
    uint paymentTime;
  }
  uint public size;

  mapping (address => Investor) private investors;

  function isInvestor(address addr) public view returns (bool) {
    return investors[addr].investment > 0;
  }

  function investorInfo(address addr) public view returns(uint investment, uint paymentTime) {
    investment = investors[addr].investment;
    paymentTime = investors[addr].paymentTime;
  }

  function newInvestor(address addr, uint investment, uint paymentTime) public onlyOwner returns (bool) {
    Investor storage inv = investors[addr];
    if (inv.investment != 0 || investment == 0) {
      return false;
    }
    inv.investment = investment;
    inv.paymentTime = paymentTime;
    size++;
    return true;
  }

  function addInvestment(address addr, uint investment) public onlyOwner returns (bool) {
    if (investors[addr].investment == 0) {
      return false;
    }
    investors[addr].investment += investment;
    return true;
  }

  function setPaymentTime(address addr, uint paymentTime) public onlyOwner returns (bool) {
    if (investors[addr].investment == 0) {
      return false;
    }
    investors[addr].paymentTime = paymentTime;
    return true;
  }

  function disqalify(address addr) public onlyOwner returns (bool) {
    if (isInvestor(addr)) {
      investors[addr].investment = 0;
    }
  }
}


library RapidGrowthProtection {
  using RapidGrowthProtection for rapidGrowthProtection;
  
  struct rapidGrowthProtection {
    uint startTimestamp;
    uint maxDailyTotalInvestment;
    uint8 activityDays;
    mapping(uint8 => uint) dailyTotalInvestment;
  }

  function maxInvestmentAtNow(rapidGrowthProtection storage rgp) internal view returns(uint) {
    uint day = rgp.currDay();
    if (day == 0 || day > rgp.activityDays) {
      return 0;
    }
    if (rgp.dailyTotalInvestment[uint8(day)] >= rgp.maxDailyTotalInvestment) {
      return 0;
    }
    return rgp.maxDailyTotalInvestment - rgp.dailyTotalInvestment[uint8(day)];
  }

  function isActive(rapidGrowthProtection storage rgp) internal view returns(bool) {
    uint day = rgp.currDay();
    return day != 0 && day <= rgp.activityDays;
  }

  function saveInvestment(rapidGrowthProtection storage rgp, uint investment) internal returns(bool) {
    uint day = rgp.currDay();
    if (day == 0 || day > rgp.activityDays) {
      return false;
    }
    if (rgp.dailyTotalInvestment[uint8(day)] + investment > rgp.maxDailyTotalInvestment) {
      return false;
    }
    rgp.dailyTotalInvestment[uint8(day)] += investment;
    return true;
  }

  function startAt(rapidGrowthProtection storage rgp, uint timestamp) internal { 
    rgp.startTimestamp = timestamp;

    // restart
    for (uint8 i = 1; i <= rgp.activityDays; i++) {
      if (rgp.dailyTotalInvestment[i] != 0) {
        delete rgp.dailyTotalInvestment[i];
      }
    }
  }

  function currDay(rapidGrowthProtection storage rgp) internal view returns(uint day) {
    if (rgp.startTimestamp > now) {
      return 0;
    }
    day = (now - rgp.startTimestamp) / 24 hours + 1; 
  }
}

contract Revolution2 is Accessibility {
  using RapidGrowthProtection for RapidGrowthProtection.rapidGrowthProtection;
  using PrivateEntrance for PrivateEntrance.privateEntrance;
  using Percent for Percent.percent;
  using SafeMath for uint;
  using Math for uint;

  // easy read for investors
  using Address for *;
  using Zero for *; 
  
  RapidGrowthProtection.rapidGrowthProtection private m_rgp;
  PrivateEntrance.privateEntrance private m_privEnter;
  mapping(address => bool) private m_referrals;
  InvestorsStorage private m_investors;

  // automatically generates getters
  uint public constant minInvesment = 10 finney; 
  uint public constant maxBalance = 333e5 ether; 
  address public advertisingAddress;
  address public adminsAddress;
  uint public investmentsNumber;
  uint public waveStartup;

  // percents 
  Percent.percent private m_5_percent = Percent.percent(5,100);            // 5/100 *100% = 5%
  Percent.percent private m_6_percent = Percent.percent(6,100);            // 6/100 *100% = 6%
  Percent.percent private m_7_percent = Percent.percent(7,100);            // 7/100 *100% = 7%
  Percent.percent private m_8_percent = Percent.percent(8,100);            // 8/100 *100% = 8%
  Percent.percent private m_9_percent = Percent.percent(9,100);            // 9/100 *100% = 9%
  Percent.percent private m_10_percent = Percent.percent(10,100);          // 10/100 *100% = 10%
  Percent.percent private m_11_percent = Percent.percent(11,100);            // 11/100 *100% = 11%
  Percent.percent private m_12_percent = Percent.percent(12,100);            // 12/100 *100% = 12%
  Percent.percent private m_referal_percent = Percent.percent(5,100);        // 5/100 *100% = 5%
  Percent.percent private m_referrer_percent = Percent.percent(7,100);       // 7/100 *100% = 7%
  Percent.percent private m_referrer_percentMax = Percent.percent(10,100);   // 10/100 *100% = 10%
  Percent.percent private m_adminsPercent = Percent.percent(55, 1000);       //   55/100  *100% = 5.5%
  Percent.percent private m_advertisingPercent = Percent.percent(95, 1000);// 95/1000  *100% = 9.5%

  // more events for easy read from blockchain
  event LogPEInit(uint when, address rev1Storage, address rev2Storage, uint investorMaxInvestment, uint endTimestamp);
  event LogSendExcessOfEther(address indexed addr, uint when, uint value, uint investment, uint excess);
  event LogNewReferral(address indexed addr, address indexed referrerAddr, uint when, uint refBonus);
  event LogRGPInit(uint when, uint startTimestamp, uint maxDailyTotalInvestment, uint activityDays);
  event LogRGPInvestment(address indexed addr, uint when, uint investment, uint indexed day);
  event LogNewInvesment(address indexed addr, uint when, uint investment, uint value);
  event LogAutomaticReinvest(address indexed addr, uint when, uint investment);
  event LogPayDividends(address indexed addr, uint when, uint dividends);
  event LogNewInvestor(address indexed addr, uint when);
  event LogBalanceChanged(uint when, uint balance);
  event LogNextWave(uint when);
  event LogDisown(uint when);


  modifier balanceChanged {
    _;
    emit LogBalanceChanged(now, address(this).balance);
  }

  modifier notFromContract() {
    require(msg.sender.isNotContract(), "only externally accounts");
    _;
  }

  constructor() public {
    adminsAddress = msg.sender;
    advertisingAddress = msg.sender;
    nextWave();
  }

  function() public payable {
    // investor get him dividends
    if (msg.value.isZero()) {
      getMyDividends();
      return;
    }

    // sender do invest
    doInvest(msg.data.toAddress());
  }

  function disqualifyAddress(address addr) public onlyOwner {
    m_investors.disqalify(addr);
  }

  function doDisown() public onlyOwner {
    disown();
    emit LogDisown(now);
  }

  function init(address rev1StorageAddr, uint timestamp) public onlyOwner {
    // init Rapid Growth Protection
    m_rgp.startTimestamp = timestamp + 1;
    m_rgp.maxDailyTotalInvestment = 500 ether;
    m_rgp.activityDays = 21;
    emit LogRGPInit(
      now, 
      m_rgp.startTimestamp,
      m_rgp.maxDailyTotalInvestment,
      m_rgp.activityDays
    );


    // init Private Entrance
    m_privEnter.rev1Storage = Rev1Storage(rev1StorageAddr);
    m_privEnter.rev2Storage = Rev2Storage(address(m_investors));
    m_privEnter.investorMaxInvestment = 50 ether;
    m_privEnter.endTimestamp = timestamp;
    emit LogPEInit(
      now, 
      address(m_privEnter.rev1Storage), 
      address(m_privEnter.rev2Storage), 
      m_privEnter.investorMaxInvestment, 
      m_privEnter.endTimestamp
    );
  }

  function setAdvertisingAddress(address addr) public onlyOwner {
    addr.requireNotZero();
    advertisingAddress = addr;
  }

  function setAdminsAddress(address addr) public onlyOwner {
    addr.requireNotZero();
    adminsAddress = addr;
  }

  function privateEntranceProvideAccessFor(address[] addrs) public onlyOwner {
    m_privEnter.provideAccessFor(addrs);
  }

  function rapidGrowthProtectionmMaxInvestmentAtNow() public view returns(uint investment) {
    investment = m_rgp.maxInvestmentAtNow();
  }

  function investorsNumber() public view returns(uint) {
    return m_investors.size();
  }

  function balanceETH() public view returns(uint) {
    return address(this).balance;
  }

  function advertisingPercent() public view returns(uint numerator, uint denominator) {
    (numerator, denominator) = (m_advertisingPercent.num, m_advertisingPercent.den);
  }

  function adminsPercent() public view returns(uint numerator, uint denominator) {
    (numerator, denominator) = (m_adminsPercent.num, m_adminsPercent.den);
  }

  function investorInfo(address investorAddr) public view returns(uint investment, uint paymentTime, bool isReferral) {
    (investment, paymentTime) = m_investors.investorInfo(investorAddr);
    isReferral = m_referrals[investorAddr];
  }

  function investorDividendsAtNow(address investorAddr) public view returns(uint dividends) {
    dividends = calcDividends(investorAddr);
  }

  function dailyPercentAtNow() public view returns(uint numerator, uint denominator) {
    Percent.percent memory p = dailyPercent();
    (numerator, denominator) = (p.num, p.den);
  }

  function getMyDividends() public notFromContract balanceChanged {
    // calculate dividends
    
    //check if 1 day passed after last payment
    require(now.sub(getMemInvestor(msg.sender).paymentTime) > 24 hours);

    uint dividends = calcDividends(msg.sender);
    require (dividends.notZero(), "cannot to pay zero dividends");

    // update investor payment timestamp
    assert(m_investors.setPaymentTime(msg.sender, now));

    // check enough eth - goto next wave if needed
    if (address(this).balance <= dividends) {
      nextWave();
      dividends = address(this).balance;
    } 

    // transfer dividends to investor
    msg.sender.transfer(dividends);
    emit LogPayDividends(msg.sender, now, dividends);
  }

  function doInvest(address referrerAddr) public payable notFromContract balanceChanged {
    uint investment = msg.value;
    uint receivedEther = msg.value;
    require(investment >= minInvesment, "investment must be >= minInvesment");
    require(address(this).balance <= maxBalance, "the contract eth balance limit");

    if (m_rgp.isActive()) { 
      // use Rapid Growth Protection if needed
      uint rpgMaxInvest = m_rgp.maxInvestmentAtNow();
      rpgMaxInvest.requireNotZero();
      investment = Math.min(investment, rpgMaxInvest);
      assert(m_rgp.saveInvestment(investment));
      emit LogRGPInvestment(msg.sender, now, investment, m_rgp.currDay());
      
    } else if (m_privEnter.isActive()) {
      // use Private Entrance if needed
      uint peMaxInvest = m_privEnter.maxInvestmentFor(msg.sender);
      peMaxInvest.requireNotZero();
      investment = Math.min(investment, peMaxInvest);
    }

    // send excess of ether if needed
    if (receivedEther > investment) {
      uint excess = receivedEther - investment;
      msg.sender.transfer(excess);
      receivedEther = investment;
      emit LogSendExcessOfEther(msg.sender, now, msg.value, investment, excess);
    }

    // commission
    advertisingAddress.send(m_advertisingPercent.mul(receivedEther));
    adminsAddress.send(m_adminsPercent.mul(receivedEther));

    bool senderIsInvestor = m_investors.isInvestor(msg.sender);

    // ref system works only once and only on first invest
    if (referrerAddr.notZero() && !senderIsInvestor && !m_referrals[msg.sender] &&
      referrerAddr != msg.sender && m_investors.isInvestor(referrerAddr)) {
      
      m_referrals[msg.sender] = true;
      // add referral bonus to investor`s and referral`s investments
      uint referrerBonus = m_referrer_percent.mmul(investment);
      if (investment > 10 ether) {
        referrerBonus = m_referrer_percentMax.mmul(investment);
      }
      
      uint referalBonus = m_referal_percent.mmul(investment);
      assert(m_investors.addInvestment(referrerAddr, referrerBonus)); // add referrer bonus
      investment += referalBonus;                                    // add referral bonus
      emit LogNewReferral(msg.sender, referrerAddr, now, referalBonus);
    }

    // automatic reinvest - prevent burning dividends
    uint dividends = calcDividends(msg.sender);
    if (senderIsInvestor && dividends.notZero()) {
      investment += dividends;
      emit LogAutomaticReinvest(msg.sender, now, dividends);
    }

    if (senderIsInvestor) {
      // update existing investor
      assert(m_investors.addInvestment(msg.sender, investment));
      assert(m_investors.setPaymentTime(msg.sender, now));
    } else {
      // create new investor
      assert(m_investors.newInvestor(msg.sender, investment, now));
      emit LogNewInvestor(msg.sender, now);
    }

    investmentsNumber++;
    emit LogNewInvesment(msg.sender, now, investment, receivedEther);
  }

  function getMemInvestor(address investorAddr) internal view returns(InvestorsStorage.Investor memory) {
    (uint investment, uint paymentTime) = m_investors.investorInfo(investorAddr);
    return InvestorsStorage.Investor(investment, paymentTime);
  }

  function calcDividends(address investorAddr) internal view returns(uint dividends) {
    InvestorsStorage.Investor memory investor = getMemInvestor(investorAddr);

    // safe gas if dividends will be 0
    if (investor.investment.isZero() || now.sub(investor.paymentTime) < 10 minutes) {
      return 0;
    }
    
    // for prevent burning daily dividends if 24h did not pass - calculate it per 10 min interval
    Percent.percent memory p = dailyPercent();
    dividends = (now.sub(investor.paymentTime) / 10 minutes) * p.mmul(investor.investment) / 144;
  }

  function dailyPercent() internal view returns(Percent.percent memory p) {
    uint balance = address(this).balance;

    if (balance < 500 ether) { 
      p = m_5_percent.toMemory(); 
    } else if ( 500 ether <= balance && balance <= 1500 ether) {
      p = m_6_percent.toMemory();    
    } else if ( 1500 ether <= balance && balance <= 5000 ether) {
      p = m_7_percent.toMemory();   
    } else if ( 5000 ether <= balance && balance <= 10000 ether) {
      p = m_8_percent.toMemory();  
    } else if ( 10000 ether <= balance && balance <= 20000 ether) {
      p = m_9_percent.toMemory();    
    } else if ( 20000 ether <= balance && balance <= 30000 ether) {
      p = m_10_percent.toMemory();  
    } else if ( 30000 ether <= balance && balance <= 50000 ether) {
      p = m_11_percent.toMemory();   
    } else {
      p = m_12_percent.toMemory();    
    } 
  }

  function nextWave() private {
    m_investors = new InvestorsStorage();
    investmentsNumber = 0;
    waveStartup = now;
    m_rgp.startAt(now);
    emit LogRGPInit(now , m_rgp.startTimestamp, m_rgp.maxDailyTotalInvestment, m_rgp.activityDays);
    emit LogNextWave(now);
  }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"addrs","type":"address[]"}],"name":"privateEntranceProvideAccessFor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"disqualifyAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"advertisingAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"rev1StorageAddr","type":"address"},{"name":"timestamp","type":"uint256"}],"name":"init","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minInvesment","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminsAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"investorsNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"investorAddr","type":"address"}],"name":"investorDividendsAtNow","outputs":[{"name":"dividends","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rapidGrowthProtectionmMaxInvestmentAtNow","outputs":[{"name":"investment","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"advertisingPercent","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminsPercent","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setAdminsAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"investmentsNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dailyPercentAtNow","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setAdvertisingAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"getMyDividends","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"referrerAddr","type":"address"}],"name":"doInvest","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"investorAddr","type":"address"}],"name":"investorInfo","outputs":[{"name":"investment","type":"uint256"},{"name":"paymentTime","type":"uint256"},{"name":"isReferral","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"waveStartup","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"doDisown","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"rev1Storage","type":"address"},{"indexed":false,"name":"rev2Storage","type":"address"},{"indexed":false,"name":"investorMaxInvestment","type":"uint256"},{"indexed":false,"name":"endTimestamp","type":"uint256"}],"name":"LogPEInit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"investment","type":"uint256"},{"indexed":false,"name":"excess","type":"uint256"}],"name":"LogSendExcessOfEther","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":true,"name":"referrerAddr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"refBonus","type":"uint256"}],"name":"LogNewReferral","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"startTimestamp","type":"uint256"},{"indexed":false,"name":"maxDailyTotalInvestment","type":"uint256"},{"indexed":false,"name":"activityDays","type":"uint256"}],"name":"LogRGPInit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"investment","type":"uint256"},{"indexed":true,"name":"day","type":"uint256"}],"name":"LogRGPInvestment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"investment","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"}],"name":"LogNewInvesment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"investment","type":"uint256"}],"name":"LogAutomaticReinvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"dividends","type":"uint256"}],"name":"LogPayDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"}],"name":"LogNewInvestor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"LogBalanceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"when","type":"uint256"}],"name":"LogNextWave","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"when","type":"uint256"}],"name":"LogDisown","type":"event"}]

60056080819052606460a081905260108290556011819055600660c081905260e082905260125560138190556007610100819052610120829052601481905560158290556008610140819052610160839052601655601782905560096101808190526101a08390526018556019829055600a6101c08190526101e0839052601a819055601b839055600b610200819052610220849052601c55601d839055600c610240819052610260849052601e55601f8390556102808490526102a083905260209390935560218290556102c08190526102e0829052602255602381905561030082905261032081905260249190915560255560376103408190526103e861036081905260269190915560278190556103c0604052605f6103808190526103a08290526028556029553480156200013657600080fd5b506000805433600160a060020a03199182168117909255600d8054821683179055600c80549091169091179055620001766401000000006200017c810204565b620002db565b62000186620002ca565b604051809103906000f080158015620001a3573d6000803e3d6000fd5b50600b8054600160a060020a031916600160a060020a03929092169190911790556000600e5542600f819055620001eb9060019064010000000062000272810262001ee51704565b6001546002546003546040805142815260208101949094528381019290925260ff166060830152517f16171a4e996b33ebb6320397242a4168f60c16e87fbd8b58f1744d68c4179caf9181900360800190a16040805142815290517fc66870ef5f6257a76295d443e9221488043ec691f830f6c6128755c3518e3c759181900360200190a1565b80825560015b600283015460ff90811690821611620002c55760ff8116600090815260038401602052604090205415620002bc5760ff811660009081526003840160205260408120555b60010162000278565b505050565b6040516104c6806200277e83390190565b61249380620002eb6000396000f3006080604052600436106101275763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306127a11811461018657806315aa6833146101db5780631686531a146101fc578063399ae7241461022d5780633d7ac9f81461025157806362d2c55514610278578063653c31741461028d57806373ad468a146102a2578063900334b1146102b757806390b0636f146102d85780639396df32146102ed57806395a23c3a1461031b578063984d4a93146103305780639ec6e05414610351578063b8fde2a414610366578063cb192f2c1461037b578063d50030ad1461039c578063d82fa3f1146103b1578063dbcbaca4146103c5578063eafecc7a14610406578063ecbdbb321461041b578063fc7c41af14610430575b61013034610445565b156101425761013d61044d565b610184565b61018461017f6000368080601f0160208091040260200160405190810160405280939291908181526020018383808284375061069d945050505050565b6106a4565b005b34801561019257600080fd5b506040805160206004803580820135838102808601850190965280855261018495369593946024949385019291829185019084908082843750949750610ff39650505050505050565b3480156101e757600080fd5b50610184600160a060020a0360043516611057565b34801561020857600080fd5b5061021161113e565b60408051600160a060020a039092168252519081900360200190f35b34801561023957600080fd5b50610184600160a060020a036004351660243561114d565b34801561025d57600080fd5b506102666112b2565b60408051918252519081900360200190f35b34801561028457600080fd5b506102116112bd565b34801561029957600080fd5b506102666112cc565b3480156102ae57600080fd5b5061026661135c565b3480156102c357600080fd5b50610266600160a060020a036004351661136b565b3480156102e457600080fd5b5061026661137c565b3480156102f957600080fd5b5061030261138d565b6040805192835260208301919091528051918290030190f35b34801561032757600080fd5b50610302611397565b34801561033c57600080fd5b50610184600160a060020a03600435166113a1565b34801561035d57600080fd5b50610266611432565b34801561037257600080fd5b50610302611438565b34801561038757600080fd5b50610184600160a060020a036004351661145d565b3480156103a857600080fd5b5061018461044d565b610184600160a060020a03600435166106a4565b3480156103d157600080fd5b506103e6600160a060020a03600435166114ee565b604080519384526020840192909252151582820152519081900360600190f35b34801561041257600080fd5b506102666115b4565b34801561042757600080fd5b506102666115ba565b34801561043c57600080fd5b506101846115bf565b80155b919050565b60006104583361164c565b15156104ae576040805160e560020a62461bcd02815260206004820152601860248201527f6f6e6c792065787465726e616c6c79206163636f756e74730000000000000000604482015290519081900360640190fd5b620151806104cf6104be33611658565b60200151429063ffffffff61171c16565b116104d957600080fd5b6104e23361173a565b90506104ed816117ec565b1515610543576040805160e560020a62461bcd02815260206004820152601c60248201527f63616e6e6f7420746f20706179207a65726f206469766964656e647300000000604482015290519081900360640190fd5b600b54604080517f440135850000000000000000000000000000000000000000000000000000000081523360048201524260248201529051600160a060020a03909216916344013585916044808201926020929091908290030181600087803b1580156105af57600080fd5b505af11580156105c3573d6000803e3d6000fd5b505050506040513d60208110156105d957600080fd5b505115156105e357fe5b303181106105f7576105f36117f1565b5030315b604051339082156108fc029083906000818181858888f19350505050158015610624573d6000803e3d6000fd5b506040805142815260208101839052815133927f6710e0cad56444677ac916513b384a4acc6501cfb5219f59657ad4ddffef9d60928290030190a2604080514281523031602082015281517f32367fddaa1baa1c6a0fc5c3e8284df724bacc7b50e847c32c9f9765f9f96137929181900390910190a150565b6014015190565b600080808080808080806106b73361164c565b151561070d576040805160e560020a62461bcd02815260206004820152601860248201527f6f6e6c792065787465726e616c6c79206163636f756e74730000000000000000604482015290519081900360640190fd5b349850889750662386f26fc10000881015610798576040805160e560020a62461bcd02815260206004820152602260248201527f696e766573746d656e74206d757374206265203e3d206d696e496e7665736d6560448201527f6e74000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6a1b8b8c9e000e82a4800000303111156107fc576040805160e560020a62461bcd02815260206004820152601e60248201527f74686520636f6e7472616374206574682062616c616e6365206c696d69740000604482015290519081900360640190fd5b61080660016118e1565b1561088e57610815600161190c565b965061082087611986565b61082a89886119dd565b985061083d60018a63ffffffff6119f516565b151561084557fe5b61084f6001611a72565b60408051428152602081018c9052815133927f21cd51cc98547f9914bc0b314a40e645408acad21d1289eecb4dfb534fda7cfc928290030190a36108c6565b6108986005611a9c565b156108c6576108ae60053363ffffffff611aa516565b95506108b986611986565b6108c389876119dd565b98505b8888111561094e576040518989039550339086156108fc029087906000818181858888f19350505050158015610900573d6000803e3d6000fd5b50604080514281523460208201528082018b90526060810187905290518a995033917faac472d912a7451062b64c942775db41d65cce271603099e1c4760e072050951919081900360800190a25b600c54600160a060020a03166108fc61096e60288b63ffffffff611c3a16565b6040518115909202916000818181858888f15050600d54600160a060020a031692506108fc91506109a8905060268b63ffffffff611c3a16565b6040518115909202916000818181858888f15050600b54604080517fcee2a9cf0000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a03909216945063cee2a9cf935060248082019350602092918290030181600087803b158015610a2357600080fd5b505af1158015610a37573d6000803e3d6000fd5b505050506040513d6020811015610a4d57600080fd5b50519350610a63600160a060020a038b16611c65565b8015610a6d575083155b8015610a895750336000908152600a602052604090205460ff16155b8015610a9e5750600160a060020a038a163314155b8015610b3a5750600b54604080517fcee2a9cf000000000000000000000000000000000000000000000000000000008152600160a060020a038d811660048301529151919092169163cee2a9cf9160248083019260209291908290030181600087803b158015610b0d57600080fd5b505af1158015610b21573d6000803e3d6000fd5b505050506040513d6020811015610b3757600080fd5b50515b15610cd657336000908152600a6020908152604091829020805460ff191660011790558151808301909252602254825260235490820152610b81908a63ffffffff611c7316565b9250678ac7230489e80000891115610bbd576040805180820190915260245481526025546020820152610bba908a63ffffffff611c7316565b92505b6040805180820190915260208054825260215490820152610be4908a63ffffffff611c7316565b600b54604080517f20987e64000000000000000000000000000000000000000000000000000000008152600160a060020a038e811660048301526024820188905291519395509116916320987e64916044808201926020929091908290030181600087803b158015610c5557600080fd5b505af1158015610c69573d6000803e3d6000fd5b505050506040513d6020811015610c7f57600080fd5b50511515610c8957fe5b604080514281526020810184905281519a84019a600160a060020a038d169233927fc04fb14bddd876003a335c37b1fe6524ac1dbf74eb64dd08cd085fba4b97d592929081900390910190a35b610cdf3361173a565b9050838015610cf25750610cf2816117ec565b15610d3657604080514281526020810183905281519a83019a33927f149822e3a65d38c9b6f40e835864c61ef5ca0866219afc2db638e3f85ae78866928290030190a25b8315610e8257600b54604080517f20987e64000000000000000000000000000000000000000000000000000000008152336004820152602481018c90529051600160a060020a03909216916320987e64916044808201926020929091908290030181600087803b158015610da957600080fd5b505af1158015610dbd573d6000803e3d6000fd5b505050506040513d6020811015610dd357600080fd5b50511515610ddd57fe5b600b54604080517f440135850000000000000000000000000000000000000000000000000000000081523360048201524260248201529051600160a060020a03909216916344013585916044808201926020929091908290030181600087803b158015610e4957600080fd5b505af1158015610e5d573d6000803e3d6000fd5b505050506040513d6020811015610e7357600080fd5b50511515610e7d57fe5b610f60565b600b54604080517f41b2121c000000000000000000000000000000000000000000000000000000008152336004820152602481018c90524260448201529051600160a060020a03909216916341b2121c916064808201926020929091908290030181600087803b158015610ef557600080fd5b505af1158015610f09573d6000803e3d6000fd5b505050506040513d6020811015610f1f57600080fd5b50511515610f2957fe5b60408051428152905133917fc8616cf56c542aa2540734215ee474180fc3b9cc7c2fad288000504632cacf18919081900360200190a25b600e8054600101905560408051428152602081018b90528082018a9052905133917fd5a986028ae9e04f72859f7d3c1d8ae8b649c26be5b99d4c2d98ca4a19a0502e919081900360600190a2604080514281523031602082015281517f32367fddaa1baa1c6a0fc5c3e8284df724bacc7b50e847c32c9f9765f9f96137929181900390910190a150505050505050505050565b600054600160a060020a03163314611043576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020612448833981519152604482015290519081900360640190fd5b61105460058263ffffffff611c9616565b50565b600054600160a060020a031633146110a7576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020612448833981519152604482015290519081900360640190fd5b600b54604080517fd597d06f000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151919092169163d597d06f9160248083019260209291908290030181600087803b15801561110f57600080fd5b505af1158015611123573d6000803e3d6000fd5b505050506040513d602081101561113957600080fd5b505050565b600c54600160a060020a031681565b600054600160a060020a0316331461119d576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020612448833981519152604482015290519081900360640190fd5b600180820190819055681b1ae4d6e2ef50000060028190556003805460ff1916601517908190556040805142815260208101949094528381019290925260ff166060830152517f16171a4e996b33ebb6320397242a4168f60c16e87fbd8b58f1744d68c4179caf9181900360800190a160058054600160a060020a0380851673ffffffffffffffffffffffffffffffffffffffff199283161792839055600b546006805490931690821617918290556802b5e3af16b1880000600781905560088590556040805142815294831660208601529290911683830152606083015260808201839052517f7e13d111fea1199cb6fb21cb38766240cfad970317820e8e5713da7a708285309181900360a00190a15050565b662386f26fc1000081565b600d54600160a060020a031681565b600b54604080517f949d225d0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163949d225d91600480830192602092919082900301818787803b15801561132b57600080fd5b505af115801561133f573d6000803e3d6000fd5b505050506040513d602081101561135557600080fd5b5051905090565b6a1b8b8c9e000e82a480000081565b60006113768261173a565b92915050565b6000611388600161190c565b905090565b6028546029549091565b6026546027549091565b600054600160a060020a031633146113f1576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020612448833981519152604482015290519081900360640190fd5b61140381600160a060020a0316611cfa565b600d805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600e5481565b600080611443611f5a565b61144b611d5a565b80516020909101519094909350915050565b600054600160a060020a031633146114ad576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020612448833981519152604482015290519081900360640190fd5b6114bf81600160a060020a0316611cfa565b600c805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600b54604080517fdbcbaca4000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830152825160009485948594939091169263dbcbaca4926024808301939282900301818787803b15801561155857600080fd5b505af115801561156c573d6000803e3d6000fd5b505050506040513d604081101561158257600080fd5b508051602091820151600160a060020a039096166000908152600a909252604090912054909560ff9091169350915050565b600f5481565b303190565b600054600160a060020a0316331461160f576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020612448833981519152604482015290519081900360640190fd5b611617611ec6565b6040805142815290517f5189687a7ec9d4aebe2f548f952ffbbad19e4cd545c4a05b5e2369cd272dd5519181900360200190a1565b803b8015905b50919050565b611660611f5a565b600b54604080517fdbcbaca4000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301528251600094859492169263dbcbaca492602480830193919282900301818787803b1580156116c757600080fd5b505af11580156116db573d6000803e3d6000fd5b505050506040513d60408110156116f157600080fd5b50805160209182015160408051808201909152828152928301819052919450925090505b5050919050565b6000808383111561172c57600080fd5b5050808203805b5092915050565b6000611744611f5a565b61174c611f5a565b61175584611658565b91506117648260000151610445565b80611786575061025861178483602001514261171c90919063ffffffff16565b105b156117945760009250611715565b61179c611d5a565b82519091506090906117b590839063ffffffff611c7316565b6102586117cf85602001514261171c90919063ffffffff16565b8115156117d857fe5b04028115156117e357fe5b04949350505050565b151590565b6117f9611f71565b604051809103906000f080158015611815573d6000803e3d6000fd5b50600b805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790556000600e5542600f81905561185a90600190611ee5565b6001546002546003546040805142815260208101949094528381019290925260ff166060830152517f16171a4e996b33ebb6320397242a4168f60c16e87fbd8b58f1744d68c4179caf9181900360800190a16040805142815290517fc66870ef5f6257a76295d443e9221488043ec691f830f6c6128755c3518e3c759181900360200190a1565b6000806118ed83611a72565b905080158015906119055750600283015460ff168111155b9392505050565b60008061191883611a72565b905080158061192d5750600283015460ff1681115b1561193b5760009150611652565b600183015460ff82166000908152600385016020526040902054106119635760009150611652565b60ff81166000908152600384016020526040902054600184015403915050919050565b801515611054576040805160e560020a62461bcd02815260206004820152601660248201527f72657175697265206e6f74207a65726f2076616c756500000000000000000000604482015290519081900360640190fd5b6000818311156119ee575080611376565b5090919050565b600080611a0184611a72565b9050801580611a165750600284015460ff1681115b15611a245760009150611733565b600184015460ff8216600090815260038601602052604090205484011115611a4f5760009150611733565b60ff16600090815260039390930160205250604090912080549091019055600190565b60004282600001541115611a8857506000610448565b815462015180904203046001019050919050565b60030154421090565b600160a060020a03811660009081526004830160205260408120548190819060ff161515611ad65760009250611c32565b8454604080517f993d3489000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152825193169263993d3489926024808401939192918290030181600087803b158015611b3957600080fd5b505af1158015611b4d573d6000803e3d6000fd5b505050506040513d6040811015611b6357600080fd5b50519150811515611b775760009250611c32565b611b858286600201546119dd565b6001860154604080517fdbcbaca4000000000000000000000000000000000000000000000000000000008152600160a060020a03888116600483015282519496509092169263dbcbaca49260248082019392918290030181600087803b158015611bee57600080fd5b505af1158015611c02573d6000803e3d6000fd5b505050506040513d6040811015611c1857600080fd5b50519050818110611c2c5760009250611c32565b80820392505b505092915050565b6000811515611c4b57506000611376565b600183015483548302811515611c5d57fe5b049392505050565b600160a060020a0316151590565b6000811515611c8457506000611376565b602083015183518302811515611c5d57fe5b60005b81518161ffff161015611139576001836004016000848461ffff16815181101515611cc057fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff1916911515919091179055600101611c99565b600160a060020a0381161515611054576040805160e560020a62461bcd02815260206004820152601860248201527f72657175697265206e6f74207a65726f20616464726573730000000000000000604482015290519081900360640190fd5b611d62611f5a565b3031681b1ae4d6e2ef500000811015611d8657611d7f6010611f35565b9150611ec2565b80681b1ae4d6e2ef50000011158015611da85750685150ae84a8cdf000008111155b15611db757611d7f6012611f35565b80685150ae84a8cdf0000011158015611dda575069010f0cf064dd592000008111155b15611de957611d7f6014611f35565b8069010f0cf064dd5920000011158015611e0d575069021e19e0c9bab24000008111155b15611e1c57611d7f6016611f35565b8069021e19e0c9bab240000011158015611e40575069043c33c19375648000008111155b15611e4f57611d7f6018611f35565b8069043c33c193756480000011158015611e73575069065a4da25d3016c000008111155b15611e8257611d7f601a611f35565b8069065a4da25d3016c0000011158015611ea65750690a968163f0a57b4000008111155b15611eb557611d7f601c611f35565b611ebf601e611f35565b91505b5090565b6000805473ffffffffffffffffffffffffffffffffffffffff19169055565b80825560015b600283015460ff908116908216116111395760ff8116600090815260038401602052604090205415611f2d5760ff811660009081526003840160205260408120555b600101611eeb565b611f3d611f5a565b506040805180820190915281548152600190910154602082015290565b604080518082019091526000808252602082015290565b6040516104c680611f82833901905600608060405260008054600160a060020a031916331790556104a1806100256000396000f3006080604052600436106100825763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166320987e64811461008757806341b2121c146100bf57806344013585146100e6578063949d225d1461010a578063cee2a9cf14610131578063d597d06f14610152578063dbcbaca414610173575b600080fd5b34801561009357600080fd5b506100ab600160a060020a03600435166024356101ad565b604080519115158252519081900360200190f35b3480156100cb57600080fd5b506100ab600160a060020a036004351660243560443561024d565b3480156100f257600080fd5b506100ab600160a060020a03600435166024356102f0565b34801561011657600080fd5b5061011f61038f565b60408051918252519081900360200190f35b34801561013d57600080fd5b506100ab600160a060020a0360043516610395565b34801561015e57600080fd5b506100ab600160a060020a03600435166103b5565b34801561017f57600080fd5b50610194600160a060020a0360043516610432565b6040805192835260208301919091528051918290030190f35b60008054600160a060020a031633146101fe576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610456833981519152604482015290519081900360640190fd5b600160a060020a038316600090815260026020526040902054151561022557506000610247565b50600160a060020a038216600090815260026020526040902080548201905560015b92915050565b600080548190600160a060020a031633146102a0576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610456833981519152604482015290519081900360640190fd5b50600160a060020a038416600090815260026020526040902080541515806102c6575083155b156102d457600091506102e8565b838155600180820184905580548101815591505b509392505050565b60008054600160a060020a03163314610341576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610456833981519152604482015290519081900360640190fd5b600160a060020a038316600090815260026020526040902054151561036857506000610247565b50600160a060020a0382166000908152600260205260409020600190810182905592915050565b60015481565b600160a060020a038116600090815260026020526040812054115b919050565b60008054600160a060020a03163314610406576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610456833981519152604482015290519081900360640190fd5b61040f82610395565b156103b057600160a060020a038216600090815260026020526040812055919050565b600160a060020a031660009081526002602052604090208054600190910154909156006163636573732064656e69656400000000000000000000000000000000000000a165627a7a7230582057a9e76e4ee2bf43357d4249b42a1f3255a055e1720799fed66868940b54b26000296163636573732064656e69656400000000000000000000000000000000000000a165627a7a72305820e2cc8a7b82f318dfe446a2cabb4f8baa8cec28f948c1324457854f1de551d3e90029608060405260008054600160a060020a031916331790556104a1806100256000396000f3006080604052600436106100825763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166320987e64811461008757806341b2121c146100bf57806344013585146100e6578063949d225d1461010a578063cee2a9cf14610131578063d597d06f14610152578063dbcbaca414610173575b600080fd5b34801561009357600080fd5b506100ab600160a060020a03600435166024356101ad565b604080519115158252519081900360200190f35b3480156100cb57600080fd5b506100ab600160a060020a036004351660243560443561024d565b3480156100f257600080fd5b506100ab600160a060020a03600435166024356102f0565b34801561011657600080fd5b5061011f61038f565b60408051918252519081900360200190f35b34801561013d57600080fd5b506100ab600160a060020a0360043516610395565b34801561015e57600080fd5b506100ab600160a060020a03600435166103b5565b34801561017f57600080fd5b50610194600160a060020a0360043516610432565b6040805192835260208301919091528051918290030190f35b60008054600160a060020a031633146101fe576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610456833981519152604482015290519081900360640190fd5b600160a060020a038316600090815260026020526040902054151561022557506000610247565b50600160a060020a038216600090815260026020526040902080548201905560015b92915050565b600080548190600160a060020a031633146102a0576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610456833981519152604482015290519081900360640190fd5b50600160a060020a038416600090815260026020526040902080541515806102c6575083155b156102d457600091506102e8565b838155600180820184905580548101815591505b509392505050565b60008054600160a060020a03163314610341576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610456833981519152604482015290519081900360640190fd5b600160a060020a038316600090815260026020526040902054151561036857506000610247565b50600160a060020a0382166000908152600260205260409020600190810182905592915050565b60015481565b600160a060020a038116600090815260026020526040812054115b919050565b60008054600160a060020a03163314610406576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610456833981519152604482015290519081900360640190fd5b61040f82610395565b156103b057600160a060020a038216600090815260026020526040812055919050565b600160a060020a031660009081526002602052604090208054600190910154909156006163636573732064656e69656400000000000000000000000000000000000000a165627a7a7230582057a9e76e4ee2bf43357d4249b42a1f3255a055e1720799fed66868940b54b2600029

Deployed Bytecode

0x6080604052600436106101275763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306127a11811461018657806315aa6833146101db5780631686531a146101fc578063399ae7241461022d5780633d7ac9f81461025157806362d2c55514610278578063653c31741461028d57806373ad468a146102a2578063900334b1146102b757806390b0636f146102d85780639396df32146102ed57806395a23c3a1461031b578063984d4a93146103305780639ec6e05414610351578063b8fde2a414610366578063cb192f2c1461037b578063d50030ad1461039c578063d82fa3f1146103b1578063dbcbaca4146103c5578063eafecc7a14610406578063ecbdbb321461041b578063fc7c41af14610430575b61013034610445565b156101425761013d61044d565b610184565b61018461017f6000368080601f0160208091040260200160405190810160405280939291908181526020018383808284375061069d945050505050565b6106a4565b005b34801561019257600080fd5b506040805160206004803580820135838102808601850190965280855261018495369593946024949385019291829185019084908082843750949750610ff39650505050505050565b3480156101e757600080fd5b50610184600160a060020a0360043516611057565b34801561020857600080fd5b5061021161113e565b60408051600160a060020a039092168252519081900360200190f35b34801561023957600080fd5b50610184600160a060020a036004351660243561114d565b34801561025d57600080fd5b506102666112b2565b60408051918252519081900360200190f35b34801561028457600080fd5b506102116112bd565b34801561029957600080fd5b506102666112cc565b3480156102ae57600080fd5b5061026661135c565b3480156102c357600080fd5b50610266600160a060020a036004351661136b565b3480156102e457600080fd5b5061026661137c565b3480156102f957600080fd5b5061030261138d565b6040805192835260208301919091528051918290030190f35b34801561032757600080fd5b50610302611397565b34801561033c57600080fd5b50610184600160a060020a03600435166113a1565b34801561035d57600080fd5b50610266611432565b34801561037257600080fd5b50610302611438565b34801561038757600080fd5b50610184600160a060020a036004351661145d565b3480156103a857600080fd5b5061018461044d565b610184600160a060020a03600435166106a4565b3480156103d157600080fd5b506103e6600160a060020a03600435166114ee565b604080519384526020840192909252151582820152519081900360600190f35b34801561041257600080fd5b506102666115b4565b34801561042757600080fd5b506102666115ba565b34801561043c57600080fd5b506101846115bf565b80155b919050565b60006104583361164c565b15156104ae576040805160e560020a62461bcd02815260206004820152601860248201527f6f6e6c792065787465726e616c6c79206163636f756e74730000000000000000604482015290519081900360640190fd5b620151806104cf6104be33611658565b60200151429063ffffffff61171c16565b116104d957600080fd5b6104e23361173a565b90506104ed816117ec565b1515610543576040805160e560020a62461bcd02815260206004820152601c60248201527f63616e6e6f7420746f20706179207a65726f206469766964656e647300000000604482015290519081900360640190fd5b600b54604080517f440135850000000000000000000000000000000000000000000000000000000081523360048201524260248201529051600160a060020a03909216916344013585916044808201926020929091908290030181600087803b1580156105af57600080fd5b505af11580156105c3573d6000803e3d6000fd5b505050506040513d60208110156105d957600080fd5b505115156105e357fe5b303181106105f7576105f36117f1565b5030315b604051339082156108fc029083906000818181858888f19350505050158015610624573d6000803e3d6000fd5b506040805142815260208101839052815133927f6710e0cad56444677ac916513b384a4acc6501cfb5219f59657ad4ddffef9d60928290030190a2604080514281523031602082015281517f32367fddaa1baa1c6a0fc5c3e8284df724bacc7b50e847c32c9f9765f9f96137929181900390910190a150565b6014015190565b600080808080808080806106b73361164c565b151561070d576040805160e560020a62461bcd02815260206004820152601860248201527f6f6e6c792065787465726e616c6c79206163636f756e74730000000000000000604482015290519081900360640190fd5b349850889750662386f26fc10000881015610798576040805160e560020a62461bcd02815260206004820152602260248201527f696e766573746d656e74206d757374206265203e3d206d696e496e7665736d6560448201527f6e74000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6a1b8b8c9e000e82a4800000303111156107fc576040805160e560020a62461bcd02815260206004820152601e60248201527f74686520636f6e7472616374206574682062616c616e6365206c696d69740000604482015290519081900360640190fd5b61080660016118e1565b1561088e57610815600161190c565b965061082087611986565b61082a89886119dd565b985061083d60018a63ffffffff6119f516565b151561084557fe5b61084f6001611a72565b60408051428152602081018c9052815133927f21cd51cc98547f9914bc0b314a40e645408acad21d1289eecb4dfb534fda7cfc928290030190a36108c6565b6108986005611a9c565b156108c6576108ae60053363ffffffff611aa516565b95506108b986611986565b6108c389876119dd565b98505b8888111561094e576040518989039550339086156108fc029087906000818181858888f19350505050158015610900573d6000803e3d6000fd5b50604080514281523460208201528082018b90526060810187905290518a995033917faac472d912a7451062b64c942775db41d65cce271603099e1c4760e072050951919081900360800190a25b600c54600160a060020a03166108fc61096e60288b63ffffffff611c3a16565b6040518115909202916000818181858888f15050600d54600160a060020a031692506108fc91506109a8905060268b63ffffffff611c3a16565b6040518115909202916000818181858888f15050600b54604080517fcee2a9cf0000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a03909216945063cee2a9cf935060248082019350602092918290030181600087803b158015610a2357600080fd5b505af1158015610a37573d6000803e3d6000fd5b505050506040513d6020811015610a4d57600080fd5b50519350610a63600160a060020a038b16611c65565b8015610a6d575083155b8015610a895750336000908152600a602052604090205460ff16155b8015610a9e5750600160a060020a038a163314155b8015610b3a5750600b54604080517fcee2a9cf000000000000000000000000000000000000000000000000000000008152600160a060020a038d811660048301529151919092169163cee2a9cf9160248083019260209291908290030181600087803b158015610b0d57600080fd5b505af1158015610b21573d6000803e3d6000fd5b505050506040513d6020811015610b3757600080fd5b50515b15610cd657336000908152600a6020908152604091829020805460ff191660011790558151808301909252602254825260235490820152610b81908a63ffffffff611c7316565b9250678ac7230489e80000891115610bbd576040805180820190915260245481526025546020820152610bba908a63ffffffff611c7316565b92505b6040805180820190915260208054825260215490820152610be4908a63ffffffff611c7316565b600b54604080517f20987e64000000000000000000000000000000000000000000000000000000008152600160a060020a038e811660048301526024820188905291519395509116916320987e64916044808201926020929091908290030181600087803b158015610c5557600080fd5b505af1158015610c69573d6000803e3d6000fd5b505050506040513d6020811015610c7f57600080fd5b50511515610c8957fe5b604080514281526020810184905281519a84019a600160a060020a038d169233927fc04fb14bddd876003a335c37b1fe6524ac1dbf74eb64dd08cd085fba4b97d592929081900390910190a35b610cdf3361173a565b9050838015610cf25750610cf2816117ec565b15610d3657604080514281526020810183905281519a83019a33927f149822e3a65d38c9b6f40e835864c61ef5ca0866219afc2db638e3f85ae78866928290030190a25b8315610e8257600b54604080517f20987e64000000000000000000000000000000000000000000000000000000008152336004820152602481018c90529051600160a060020a03909216916320987e64916044808201926020929091908290030181600087803b158015610da957600080fd5b505af1158015610dbd573d6000803e3d6000fd5b505050506040513d6020811015610dd357600080fd5b50511515610ddd57fe5b600b54604080517f440135850000000000000000000000000000000000000000000000000000000081523360048201524260248201529051600160a060020a03909216916344013585916044808201926020929091908290030181600087803b158015610e4957600080fd5b505af1158015610e5d573d6000803e3d6000fd5b505050506040513d6020811015610e7357600080fd5b50511515610e7d57fe5b610f60565b600b54604080517f41b2121c000000000000000000000000000000000000000000000000000000008152336004820152602481018c90524260448201529051600160a060020a03909216916341b2121c916064808201926020929091908290030181600087803b158015610ef557600080fd5b505af1158015610f09573d6000803e3d6000fd5b505050506040513d6020811015610f1f57600080fd5b50511515610f2957fe5b60408051428152905133917fc8616cf56c542aa2540734215ee474180fc3b9cc7c2fad288000504632cacf18919081900360200190a25b600e8054600101905560408051428152602081018b90528082018a9052905133917fd5a986028ae9e04f72859f7d3c1d8ae8b649c26be5b99d4c2d98ca4a19a0502e919081900360600190a2604080514281523031602082015281517f32367fddaa1baa1c6a0fc5c3e8284df724bacc7b50e847c32c9f9765f9f96137929181900390910190a150505050505050505050565b600054600160a060020a03163314611043576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020612448833981519152604482015290519081900360640190fd5b61105460058263ffffffff611c9616565b50565b600054600160a060020a031633146110a7576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020612448833981519152604482015290519081900360640190fd5b600b54604080517fd597d06f000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151919092169163d597d06f9160248083019260209291908290030181600087803b15801561110f57600080fd5b505af1158015611123573d6000803e3d6000fd5b505050506040513d602081101561113957600080fd5b505050565b600c54600160a060020a031681565b600054600160a060020a0316331461119d576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020612448833981519152604482015290519081900360640190fd5b600180820190819055681b1ae4d6e2ef50000060028190556003805460ff1916601517908190556040805142815260208101949094528381019290925260ff166060830152517f16171a4e996b33ebb6320397242a4168f60c16e87fbd8b58f1744d68c4179caf9181900360800190a160058054600160a060020a0380851673ffffffffffffffffffffffffffffffffffffffff199283161792839055600b546006805490931690821617918290556802b5e3af16b1880000600781905560088590556040805142815294831660208601529290911683830152606083015260808201839052517f7e13d111fea1199cb6fb21cb38766240cfad970317820e8e5713da7a708285309181900360a00190a15050565b662386f26fc1000081565b600d54600160a060020a031681565b600b54604080517f949d225d0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163949d225d91600480830192602092919082900301818787803b15801561132b57600080fd5b505af115801561133f573d6000803e3d6000fd5b505050506040513d602081101561135557600080fd5b5051905090565b6a1b8b8c9e000e82a480000081565b60006113768261173a565b92915050565b6000611388600161190c565b905090565b6028546029549091565b6026546027549091565b600054600160a060020a031633146113f1576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020612448833981519152604482015290519081900360640190fd5b61140381600160a060020a0316611cfa565b600d805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600e5481565b600080611443611f5a565b61144b611d5a565b80516020909101519094909350915050565b600054600160a060020a031633146114ad576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020612448833981519152604482015290519081900360640190fd5b6114bf81600160a060020a0316611cfa565b600c805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600b54604080517fdbcbaca4000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830152825160009485948594939091169263dbcbaca4926024808301939282900301818787803b15801561155857600080fd5b505af115801561156c573d6000803e3d6000fd5b505050506040513d604081101561158257600080fd5b508051602091820151600160a060020a039096166000908152600a909252604090912054909560ff9091169350915050565b600f5481565b303190565b600054600160a060020a0316331461160f576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020612448833981519152604482015290519081900360640190fd5b611617611ec6565b6040805142815290517f5189687a7ec9d4aebe2f548f952ffbbad19e4cd545c4a05b5e2369cd272dd5519181900360200190a1565b803b8015905b50919050565b611660611f5a565b600b54604080517fdbcbaca4000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301528251600094859492169263dbcbaca492602480830193919282900301818787803b1580156116c757600080fd5b505af11580156116db573d6000803e3d6000fd5b505050506040513d60408110156116f157600080fd5b50805160209182015160408051808201909152828152928301819052919450925090505b5050919050565b6000808383111561172c57600080fd5b5050808203805b5092915050565b6000611744611f5a565b61174c611f5a565b61175584611658565b91506117648260000151610445565b80611786575061025861178483602001514261171c90919063ffffffff16565b105b156117945760009250611715565b61179c611d5a565b82519091506090906117b590839063ffffffff611c7316565b6102586117cf85602001514261171c90919063ffffffff16565b8115156117d857fe5b04028115156117e357fe5b04949350505050565b151590565b6117f9611f71565b604051809103906000f080158015611815573d6000803e3d6000fd5b50600b805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790556000600e5542600f81905561185a90600190611ee5565b6001546002546003546040805142815260208101949094528381019290925260ff166060830152517f16171a4e996b33ebb6320397242a4168f60c16e87fbd8b58f1744d68c4179caf9181900360800190a16040805142815290517fc66870ef5f6257a76295d443e9221488043ec691f830f6c6128755c3518e3c759181900360200190a1565b6000806118ed83611a72565b905080158015906119055750600283015460ff168111155b9392505050565b60008061191883611a72565b905080158061192d5750600283015460ff1681115b1561193b5760009150611652565b600183015460ff82166000908152600385016020526040902054106119635760009150611652565b60ff81166000908152600384016020526040902054600184015403915050919050565b801515611054576040805160e560020a62461bcd02815260206004820152601660248201527f72657175697265206e6f74207a65726f2076616c756500000000000000000000604482015290519081900360640190fd5b6000818311156119ee575080611376565b5090919050565b600080611a0184611a72565b9050801580611a165750600284015460ff1681115b15611a245760009150611733565b600184015460ff8216600090815260038601602052604090205484011115611a4f5760009150611733565b60ff16600090815260039390930160205250604090912080549091019055600190565b60004282600001541115611a8857506000610448565b815462015180904203046001019050919050565b60030154421090565b600160a060020a03811660009081526004830160205260408120548190819060ff161515611ad65760009250611c32565b8454604080517f993d3489000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152825193169263993d3489926024808401939192918290030181600087803b158015611b3957600080fd5b505af1158015611b4d573d6000803e3d6000fd5b505050506040513d6040811015611b6357600080fd5b50519150811515611b775760009250611c32565b611b858286600201546119dd565b6001860154604080517fdbcbaca4000000000000000000000000000000000000000000000000000000008152600160a060020a03888116600483015282519496509092169263dbcbaca49260248082019392918290030181600087803b158015611bee57600080fd5b505af1158015611c02573d6000803e3d6000fd5b505050506040513d6040811015611c1857600080fd5b50519050818110611c2c5760009250611c32565b80820392505b505092915050565b6000811515611c4b57506000611376565b600183015483548302811515611c5d57fe5b049392505050565b600160a060020a0316151590565b6000811515611c8457506000611376565b602083015183518302811515611c5d57fe5b60005b81518161ffff161015611139576001836004016000848461ffff16815181101515611cc057fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff1916911515919091179055600101611c99565b600160a060020a0381161515611054576040805160e560020a62461bcd02815260206004820152601860248201527f72657175697265206e6f74207a65726f20616464726573730000000000000000604482015290519081900360640190fd5b611d62611f5a565b3031681b1ae4d6e2ef500000811015611d8657611d7f6010611f35565b9150611ec2565b80681b1ae4d6e2ef50000011158015611da85750685150ae84a8cdf000008111155b15611db757611d7f6012611f35565b80685150ae84a8cdf0000011158015611dda575069010f0cf064dd592000008111155b15611de957611d7f6014611f35565b8069010f0cf064dd5920000011158015611e0d575069021e19e0c9bab24000008111155b15611e1c57611d7f6016611f35565b8069021e19e0c9bab240000011158015611e40575069043c33c19375648000008111155b15611e4f57611d7f6018611f35565b8069043c33c193756480000011158015611e73575069065a4da25d3016c000008111155b15611e8257611d7f601a611f35565b8069065a4da25d3016c0000011158015611ea65750690a968163f0a57b4000008111155b15611eb557611d7f601c611f35565b611ebf601e611f35565b91505b5090565b6000805473ffffffffffffffffffffffffffffffffffffffff19169055565b80825560015b600283015460ff908116908216116111395760ff8116600090815260038401602052604090205415611f2d5760ff811660009081526003840160205260408120555b600101611eeb565b611f3d611f5a565b506040805180820190915281548152600190910154602082015290565b604080518082019091526000808252602082015290565b6040516104c680611f82833901905600608060405260008054600160a060020a031916331790556104a1806100256000396000f3006080604052600436106100825763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166320987e64811461008757806341b2121c146100bf57806344013585146100e6578063949d225d1461010a578063cee2a9cf14610131578063d597d06f14610152578063dbcbaca414610173575b600080fd5b34801561009357600080fd5b506100ab600160a060020a03600435166024356101ad565b604080519115158252519081900360200190f35b3480156100cb57600080fd5b506100ab600160a060020a036004351660243560443561024d565b3480156100f257600080fd5b506100ab600160a060020a03600435166024356102f0565b34801561011657600080fd5b5061011f61038f565b60408051918252519081900360200190f35b34801561013d57600080fd5b506100ab600160a060020a0360043516610395565b34801561015e57600080fd5b506100ab600160a060020a03600435166103b5565b34801561017f57600080fd5b50610194600160a060020a0360043516610432565b6040805192835260208301919091528051918290030190f35b60008054600160a060020a031633146101fe576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610456833981519152604482015290519081900360640190fd5b600160a060020a038316600090815260026020526040902054151561022557506000610247565b50600160a060020a038216600090815260026020526040902080548201905560015b92915050565b600080548190600160a060020a031633146102a0576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610456833981519152604482015290519081900360640190fd5b50600160a060020a038416600090815260026020526040902080541515806102c6575083155b156102d457600091506102e8565b838155600180820184905580548101815591505b509392505050565b60008054600160a060020a03163314610341576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610456833981519152604482015290519081900360640190fd5b600160a060020a038316600090815260026020526040902054151561036857506000610247565b50600160a060020a0382166000908152600260205260409020600190810182905592915050565b60015481565b600160a060020a038116600090815260026020526040812054115b919050565b60008054600160a060020a03163314610406576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610456833981519152604482015290519081900360640190fd5b61040f82610395565b156103b057600160a060020a038216600090815260026020526040812055919050565b600160a060020a031660009081526002602052604090208054600190910154909156006163636573732064656e69656400000000000000000000000000000000000000a165627a7a7230582057a9e76e4ee2bf43357d4249b42a1f3255a055e1720799fed66868940b54b26000296163636573732064656e69656400000000000000000000000000000000000000a165627a7a72305820e2cc8a7b82f318dfe446a2cabb4f8baa8cec28f948c1324457854f1de551d3e90029

Swarm Source

bzzr://57a9e76e4ee2bf43357d4249b42a1f3255a055e1720799fed66868940b54b260

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.