ETH Price: $3,489.31 (+4.29%)

Contract

0xdf203118A954c918b967a94E51f3570a2FAbA4Ac
 

Overview

ETH Balance

0.185397732357437897 ETH

Eth Value

$646.91 (@ $3,489.31/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Buy155145262022-09-11 11:15:31808 days ago1662894931IN
0xdf203118...a2FAbA4Ac
0.0018 ETH0.00599283.5
List Item152493642022-07-31 9:16:47850 days ago1659259007IN
0xdf203118...a2FAbA4Ac
0 ETH0.00051214.23094602
List Item152493642022-07-31 9:16:47850 days ago1659259007IN
0xdf203118...a2FAbA4Ac
0 ETH0.000423013.4949585
List Item152245682022-07-27 12:33:58854 days ago1658925238IN
0xdf203118...a2FAbA4Ac
0 ETH0.000723245.97538382
List Item152245662022-07-27 12:33:47854 days ago1658925227IN
0xdf203118...a2FAbA4Ac
0 ETH0.000786346.49672005
Confirm Dividend...131659172021-09-05 13:09:191179 days ago1630847359IN
0xdf203118...a2FAbA4Ac
0 ETH0.001861966.43969016
Confirm Dividend...131659172021-09-05 13:09:191179 days ago1630847359IN
0xdf203118...a2FAbA4Ac
0 ETH0.0055572261.0462709
Buy130120042021-08-12 18:35:011202 days ago1628793301IN
0xdf203118...a2FAbA4Ac
0.28589 ETH0.0695370138.89788519
Buy127546292021-07-03 12:32:281243 days ago1625315548IN
0xdf203118...a2FAbA4Ac
0.00709 ETH0.006941414.1
Withdraw127155062021-06-27 10:12:451249 days ago1624788765IN
0xdf203118...a2FAbA4Ac
0 ETH0.005856234
Confirm Dividend...127154902021-06-27 10:08:381249 days ago1624788518IN
0xdf203118...a2FAbA4Ac
0 ETH0.0009303310
Confirm Dividend...125549342021-06-02 11:55:411274 days ago1622634941IN
0xdf203118...a2FAbA4Ac
0 ETH0.001432715.4
List Item125534692021-06-02 6:42:501274 days ago1622616170IN
0xdf203118...a2FAbA4Ac
0 ETH0.0020818317.2
Confirm Dividend...117321672021-01-26 15:36:491400 days ago1611675409IN
0xdf203118...a2FAbA4Ac
0 ETH0.0064480365.11
Confirm Dividend...115358912020-12-27 12:45:101431 days ago1609073110IN
0xdf203118...a2FAbA4Ac
0 ETH0.0088233100
Confirm Dividend...114279782020-12-10 22:50:501447 days ago1607640650IN
0xdf203118...a2FAbA4Ac
0 ETH0.0024186930
Buy114279552020-12-10 22:43:561447 days ago1607640236IN
0xdf203118...a2FAbA4Ac
0.1738 ETH0.0419730630
Confirm Dividend...113326362020-11-26 7:23:421462 days ago1606375422IN
0xdf203118...a2FAbA4Ac
0 ETH0.0046545547.00000145
Withdraw112750292020-11-17 10:57:531471 days ago1605610673IN
0xdf203118...a2FAbA4Ac
0 ETH0.022035620
Confirm Dividend...112555922020-11-14 11:31:431474 days ago1605353503IN
0xdf203118...a2FAbA4Ac
0 ETH0.0011883912
Withdraw112351472020-11-11 8:12:141477 days ago1605082334IN
0xdf203118...a2FAbA4Ac
0 ETH0.0176284816.00000145
Confirm Dividend...111844452020-11-03 13:23:161485 days ago1604409796IN
0xdf203118...a2FAbA4Ac
0 ETH0.0028719529
Confirm Dividend...111204072020-10-24 17:23:421494 days ago1603560222IN
0xdf203118...a2FAbA4Ac
0 ETH0.0015845216.00000145
Withdraw111203912020-10-24 17:20:481494 days ago1603560048IN
0xdf203118...a2FAbA4Ac
0 ETH0.016526715.00000145
Confirm Dividend...108747082020-09-16 18:22:401532 days ago1600280560IN
0xdf203118...a2FAbA4Ac
0 ETH0.0069323170
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
155145262022-09-11 11:15:31808 days ago1662894931
0xdf203118...a2FAbA4Ac
0.000005 ETH
155145262022-09-11 11:15:31808 days ago1662894931
0xdf203118...a2FAbA4Ac
0.00008975 ETH
155145262022-09-11 11:15:31808 days ago1662894931
0xdf203118...a2FAbA4Ac
0.00110841 ETH
130120042021-08-12 18:35:011202 days ago1628793301
0xdf203118...a2FAbA4Ac
0.00028814 ETH
130120042021-08-12 18:35:011202 days ago1628793301
0xdf203118...a2FAbA4Ac
0.01142407 ETH
130120042021-08-12 18:35:011202 days ago1628793301
0xdf203118...a2FAbA4Ac
0.23819194 ETH
127546292021-07-03 12:32:281243 days ago1625315548
0xdf203118...a2FAbA4Ac
0.000035 ETH
127546292021-07-03 12:32:281243 days ago1625315548
0xdf203118...a2FAbA4Ac
0.00035275 ETH
127546292021-07-03 12:32:281243 days ago1625315548
0xdf203118...a2FAbA4Ac
0.00435646 ETH
127155062021-06-27 10:12:451249 days ago1624788765
0xdf203118...a2FAbA4Ac
0.04882309 ETH
114279552020-12-10 22:43:561447 days ago1607640236
0xdf203118...a2FAbA4Ac
0.00017426 ETH
114279552020-12-10 22:43:561447 days ago1607640236
0xdf203118...a2FAbA4Ac
0.00694502 ETH
114279552020-12-10 22:43:561447 days ago1607640236
0xdf203118...a2FAbA4Ac
0.14480385 ETH
112750292020-11-17 10:57:531471 days ago1605610673
0xdf203118...a2FAbA4Ac
0.05780517 ETH
112351472020-11-11 8:12:141477 days ago1605082334
0xdf203118...a2FAbA4Ac
0.07707356 ETH
111203912020-10-24 17:20:481494 days ago1603560048
0xdf203118...a2FAbA4Ac
0.10276475 ETH
107444912020-08-27 19:26:101552 days ago1598556370
0xdf203118...a2FAbA4Ac
0.00003315 ETH
107444912020-08-27 19:26:101552 days ago1598556370
0xdf203118...a2FAbA4Ac
0.00177684 ETH
107444912020-08-27 19:26:101552 days ago1598556370
0xdf203118...a2FAbA4Ac
0.027852 ETH
106612142020-08-14 23:52:131565 days ago1597449133
0xdf203118...a2FAbA4Ac
0.2025755 ETH
106170432020-08-08 4:35:271572 days ago1596861327
0xdf203118...a2FAbA4Ac
0.2025755 ETH
105622822020-07-30 17:39:551580 days ago1596130795
0xdf203118...a2FAbA4Ac
0.40515101 ETH
105607722020-07-30 11:54:171581 days ago1596110057
0xdf203118...a2FAbA4Ac
0.40515101 ETH
105182672020-07-23 21:58:391587 days ago1595541519
0xdf203118...a2FAbA4Ac
0.81030203 ETH
105094172020-07-22 13:20:251589 days ago1595424025
0xdf203118...a2FAbA4Ac
0.81030203 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SuperCountriesEth

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-06-07
*/

pragma solidity ^0.4.24;


/*
                                                                                                             

███████╗██╗   ██╗██████╗ ███████╗██████╗                                    
██╔════╝██║   ██║██╔══██╗██╔════╝██╔══██╗                                   
███████╗██║   ██║██████╔╝█████╗  ██████╔╝                                   
╚════██║██║   ██║██╔═══╝ ██╔══╝  ██╔══██╗                                   
███████║╚██████╔╝██║     ███████╗██║  ██║                                   
╚══════╝ ╚═════╝ ╚═╝     ╚══════╝╚═╝  ╚═╝                                   
                                                                            
     ██████╗ ██████╗ ██╗   ██╗███╗   ██╗████████╗██████╗ ██╗███████╗███████╗
    ██╔════╝██╔═══██╗██║   ██║████╗  ██║╚══██╔══╝██╔══██╗██║██╔════╝██╔════╝
    ██║     ██║   ██║██║   ██║██╔██╗ ██║   ██║   ██████╔╝██║█████╗  ███████╗
    ██║     ██║   ██║██║   ██║██║╚██╗██║   ██║   ██╔══██╗██║██╔══╝  ╚════██║
    ╚██████╗╚██████╔╝╚██████╔╝██║ ╚████║   ██║   ██║  ██║██║███████╗███████║
     ╚═════╝ ╚═════╝  ╚═════╝ ╚═╝  ╚═══╝   ╚═╝   ╚═╝  ╚═╝╚═╝╚══════╝╚══════╝
                                                                           

© 2018 SuperCountries

所有权 - 4CE434B6058EC7C24889EC2512734B5DBA26E39891C09DF50C3CE3191CE9C51E

Xuxuxu - LB - Xufo
																										   
*/



library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  /**
  * @dev subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}






contract SuperCountriesEth {
  using SafeMath for uint256;

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

  
  /**
   * @dev Throws if called by any account other than the owner.
   */
	modifier onlyOwner() {
		require(owner == msg.sender);
		_;
	}


  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
	function transferOwnership(address newOwner) public onlyOwner {
		require(newOwner != address(0));
		emit OwnershipTransferred(owner, newOwner);
		owner = newOwner;
	}

	event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

 
 


////////////////////////
/// 	EVENTS		 ///	
////////////////////////
  
  event Bought (uint256 indexed _itemId, address indexed _owner, uint256 _price);
  event Sold (uint256 indexed _itemId, address indexed _owner, uint256 _price);
  event Transfer(address indexed _from, address indexed _to, uint256 _tokenId);
  event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId);
  
  event SetReferrerEvent(address indexed referral, address indexed referrer);
  event PayReferrerEvent(address indexed oldOwner, address indexed referrer1, address indexed referrer2, uint256 referralPart);
  
  event BonusConstant(uint256 bonusToDispatch_, uint256 bonusDispatched_, uint256 notYetDispatched_, uint256 indexed _itemSoldId_, uint256 kBonus, uint256 indexed countryScore);
  event BonusDispatch(uint256 bonusToGet_, uint256 indexed playerScoreForThisCountry_, address indexed player_, uint256 pendingBalanceTotal_, uint256 indexed _itemSoldId);
  event DivsDispatch(uint256 dividendsCut_, uint256 dividendsScore, uint256 indexed _itemId, uint256 price, uint256 worldScore_);
  event newRichest(address indexed richest_, uint256 richestScore_, uint256 indexed blocktimestamp_, uint256 indexed blocknumber_);
  
  event Withdrawal(address indexed playerAddress, uint256 indexed ethereumWithdrawn, uint256 indexed potVersion_);
  event ConfirmWithdraw(address indexed playerAddress, uint256 refbonus_, uint256 divs_, uint256 totalPending_, uint256 playerSc_, uint256 _handicap_);
  event ConfirmPotWithdraw(uint256 contractBalance, address indexed richest_, uint256 richestBalance_, address indexed lastBuyer_, uint256 lastBalance_, uint256 indexed potVersion);
  event PotWithdrawConstant(uint256 indexed blocktimestamp_, uint256 indexed timestamplimit_, uint256 dividendsScore_, uint256 indexed potVersion, uint256 lastWithdrawPotVersion_);
  event WithdrawOwner(uint256 indexed potVersion, uint256 indexed lastWithdrawPotVersion_, uint256 indexed balance_);

 
 


///////////////////////////////////////////
/// 	VARIABLES, MAPPINGS, STRUCTS 	///	
///////////////////////////////////////////
  
  bool private erc721Enabled = false;

  /// Price increase limits
  uint256 private increaseLimit1 = 0.04 ether;
  uint256 private increaseLimit2 = 0.6 ether;
  uint256 private increaseLimit3 = 2.5 ether;
  uint256 private increaseLimit4 = 7.0 ether;

  /// All countries
  uint256[] private listedItems;
  mapping (uint256 => address) private ownerOfItem;
  mapping (uint256 => uint256) private priceOfItem;
  mapping (uint256 => uint256) private previousPriceOfItem;
  mapping (uint256 => address) private approvedOfItem;
   
  
  /// Referrals and their referrers
  mapping(address => address) public referrerOf;
  
  /// Dividends and score
  uint256 private worldScore ; /// Worldscore = cumulated price of all owned countries + all spent ethers in this game
  mapping (address => uint256) private playerScore; /// For each player, the sum of each owned country + the sum of all spent ethers since the beginning of the game
  uint256 private dividendsScore ; /// Balance of dividends divided by the worldScore 
  mapping(uint256 => mapping(address => uint256)) private pendingBalance; /// Divs from referrals, bonus and dividends calculated after the playerScore change ; if the playerScore didn't change recently, there are some pending divs that can be calculated using dividendsScore and playerScore. The first mapping (uint256) is the jackpot version to use, the value goes up after each pot distribution and the previous pendingBalance are reseted.
  mapping(uint256 => mapping(address => uint256)) private handicap; /// a player cannot claim a % of all dividends but a % of the cumulated dividends after his join date, this is a handicap
  mapping(uint256 => mapping(address => uint256)) private balanceToWithdraw; /// A player cannot withdraw pending divs, he must request a withdraw first (pending divs move to balanceToWithdraw) then withdraw.	

  uint256 private potVersion = 1; /// Number of jackpots
  uint256 private lastWithdrawPotVersion = 1; /// Latest withdraw in the game (pot version)
  address private richestBuyer ; /// current player with the highest PlayerScore
  address private lastBuyer ; /// current latest buyer in the game
  uint256 private timestampLimit = 1528108990; /// after this timestamp, the richestBuyer and the lastBuyer will be allowed to withdraw 1/2 of the contract balance (1/4 each)
  
  struct CountryStruct {
		address[] itemToAddressArray; /// addresses that owned the same country	 
		uint256 priceHistory; /// cumulated price of the country
		uint256 startingPrice; /// starting price of the country
		}

  mapping (uint256 => CountryStruct) public countryStructs;
  
  mapping (uint256 => mapping(address => uint256)) private itemHistory; /// Store price history (cumulated) for each address for each country
  
  uint256 private HUGE = 1e13;
 
 
 


////////////////////////////////
/// 	USEFUL MODIFIER		 ///	
////////////////////////////////

	modifier onlyRealAddress() {
		require(msg.sender != address(0));
		_;
	}


	

	
////////////////////////////////
/// 	ERC721 PRIVILEGES	 ///	
////////////////////////////////

	modifier onlyERC721() {
		require(erc721Enabled);
		_;
	} 


  /**
   * @dev Unlocks ERC721 behaviour, allowing for trading on third party platforms.
   */	 
	function enableERC721 () onlyOwner() public {
		erc721Enabled = true;
	} 

  
 

 
///////////////////////////////////
///		LISTING NEW COUNTRIES 	///
///////////////////////////////////
	
	function listMultipleItems (uint256[] _itemIds, uint256 _price, address _owner) onlyOwner() external {
		for (uint256 i = 0; i < _itemIds.length; i++) {
			listItem(_itemIds[i], _price, _owner);
		}
	}

	
	function listItem (uint256 _itemId, uint256 _price, address _owner) onlyOwner() public {
		require(_price > 0);
		require(priceOfItem[_itemId] == 0);
		require(ownerOfItem[_itemId] == address(0));

		ownerOfItem[_itemId] = _owner;
		priceOfItem[_itemId] = _price;
		previousPriceOfItem[_itemId] = 0;
		listedItems.push(_itemId);
		newEntity(_itemId, _price);
	}

	
  /**
   * @dev Creates new Struct for a country each time a new country is listed.
   */	
	function newEntity(uint256 countryId, uint256 startPrice) private returns(bool success) {
		countryStructs[countryId].startingPrice = startPrice;
		return true;
	}

	
  /**
   * @dev Update the Struc each time a country is sold.
   * Push the newOwner, update the price history
   */	
	function updateEntity(uint256 countryId, address newOwner, uint256 priceUpdate) internal {
		countryStructs[countryId].priceHistory += priceUpdate;
		if (itemHistory[countryId][newOwner] == 0 ){
			countryStructs[countryId].itemToAddressArray.push(newOwner);
		}
	  }
 



 
///////////////////////
/// CALCULATE PRICE ///
///////////////////////

	function calculateNextPrice (uint256 _price) public view returns (uint256 _nextPrice) {
		if (_price < increaseLimit1) {
			return _price.mul(200).div(95);
		} else if (_price < increaseLimit2) {
			return _price.mul(160).div(96);
		} else if (_price < increaseLimit3) {
			return _price.mul(148).div(97);
		} else if (_price < increaseLimit4) {
			return _price.mul(136).div(97);
		} else {
			return _price.mul(124).div(98);
		}
	}

	function calculateDevCut (uint256 _price) public view returns (uint256 _devCut) {
		if (_price < increaseLimit1) {
			return _price.mul(5).div(100); // 5%
		} else if (_price < increaseLimit2) {
			return _price.mul(4).div(100); // 4%
		} else if (_price < increaseLimit4) {
			return _price.mul(3).div(100); // 3%
		} else {
			return _price.mul(2).div(100); // 2%
		}
	}
 



 
//////////////////////////////
/// BALANCES & WITHDRAWALS ///
//////////////////////////////

	function getBalance(address _playerAddress)
		public
		view
		returns(uint256 pendingRefBonus_, uint256 pendingFromScore_, uint256 totalPending_, uint256 balanceReadyToWithdraw_, uint256 playerScore_, uint256 handicap_, uint256 dividendsScore_)
		{
			uint256 refbonus = pendingBalance[potVersion][_playerAddress];
			uint256 playerSc = playerScore[_playerAddress];
			uint256 playerHandicap = handicap[potVersion][_playerAddress];
			uint256 divs = playerSc.mul(dividendsScore.sub(playerHandicap)).div(HUGE);
			uint256 totalPending = refbonus.add(divs);
			uint256 ready = balanceToWithdraw[potVersion][_playerAddress];
			return (refbonus, divs, totalPending, ready, playerSc, playerHandicap, dividendsScore);				
		}


		
	function getOldBalance(uint256 _potVersion, address _playerAddress)
		public
		view
		returns(uint256 oldPendingRefBonus_, uint256 oldHandicap_, uint256 oldReadyToWithdraw_)
		{
			uint256 oldRefBonus = pendingBalance[_potVersion][_playerAddress];
			uint256 oldPlayerHandicap = handicap[_potVersion][_playerAddress];
			uint256 oldReady = balanceToWithdraw[_potVersion][_playerAddress];
			return (oldRefBonus, oldPlayerHandicap, oldReady);				
		}
		
		
		
  /**
   * @dev First step to withdraw : players must confirm their pending Divs before withdrawing
   * this function sums the pending balances (pendingDividends and the pending divs from playerScore)
   * Then this sum moves to balanceReadyToWithdraw, the player can call the next function and withdraw divs
   */
	function confirmDividends() public onlyRealAddress {
		require(playerScore[msg.sender] > 0);/// the player exists
		require (dividendsScore >= handicap[potVersion][msg.sender]);
		require (dividendsScore >= 0);
		
		address _playerAddress = msg.sender;
		uint256 playerSc = playerScore[_playerAddress];
		uint256 handicap_ = handicap[potVersion][_playerAddress];
		
		uint256 refbonus = pendingBalance[potVersion][_playerAddress];
		uint256 divs = playerSc.mul(dividendsScore.sub(handicap_)).div(HUGE);
		uint256 totalPending = refbonus.add(divs);	
						
		/// Reset the values
		pendingBalance[potVersion][_playerAddress] = 0; /// Reset the pending balance
		handicap[potVersion][_playerAddress] = dividendsScore;
		
		/// Now the player is ready to withdraw ///
		balanceToWithdraw[potVersion][_playerAddress] += totalPending;
		
		// fire event
		emit ConfirmWithdraw(_playerAddress, refbonus, divs, totalPending, playerSc, handicap_);
		
	}


  /**
   * @dev Second step to withdraw : after confirming divs, players can withdraw divs to their wallet
   */	
	function withdraw() public onlyRealAddress {
		require(balanceOf(msg.sender) > 0);
		require(balanceToWithdraw[potVersion][msg.sender] > 0);
				
		address _playerAddress = msg.sender;
		
			if (lastWithdrawPotVersion != potVersion){
					lastWithdrawPotVersion = potVersion;
			}

        
        /// Add referrals earnings, bonus and divs
		uint256 divToTransfer = balanceToWithdraw[potVersion][_playerAddress];
		balanceToWithdraw[potVersion][_playerAddress] = 0;
		
        _playerAddress.transfer(divToTransfer);
		
        /// fire event
        emit Withdrawal(_playerAddress, divToTransfer, potVersion);
    }
	

	
  /**
   * @dev After 7 days without any buy, the richest user and the latest player will share the contract balance !
   */		
	function confirmDividendsFromPot() public {
		require(richestBuyer != address(0) && lastBuyer != address(0)) ;
		require(address(this).balance > 100000000);	/// mini 1e8 wei
		require(block.timestamp > timestampLimit);
		
		uint256 confirmation_TimeStamp = timestampLimit;
		potVersion ++;
		uint256 balance = address(this).balance;
		uint256 balanceQuarter = balance.div(4);
		dividendsScore = 0; /// reset dividends
		updateTimestampLimit(); /// Reset the timer, if no new buys, the richest and the last buyers will be able to withdraw the left quarter in a week or so
		balanceToWithdraw[potVersion][richestBuyer] = balanceQuarter;
		balanceToWithdraw[potVersion][lastBuyer] += balanceQuarter; /// if the richest = last, dividends cumulate
		
		
		// fire events
        emit ConfirmPotWithdraw(	
			 balance, 
			 richestBuyer, 
			 balanceToWithdraw[potVersion][richestBuyer],
			 lastBuyer,
			 balanceToWithdraw[potVersion][lastBuyer],
			 potVersion
		);
		
		emit PotWithdrawConstant(	
			 block.timestamp,
			 confirmation_TimeStamp,
			 dividendsScore,
			 potVersion,
			 lastWithdrawPotVersion
		);
		
	}


	
  /**
   * @dev If no new buys occur (dividendsScore = 0) and the richest and latest players don't withdraw their dividends after 3 jackpots, the game can be stuck forever
   * Prevent from jackpot vicious circle : same dividends are shared between latest and richest users again and again
   * If the richest and/or the latest player withdraw(s) at least once between 3 jackpots, it means the game is alive
   * Or if contract balance drops down to 1e8 wei (that means many successful jackpots and that a current withdrawal could cost too much gas for players)
   */	
	function withdrawAll() public onlyOwner {
		require((potVersion > lastWithdrawPotVersion.add(3) && dividendsScore == 0) || (address(this).balance < 100000001) );
		require (address(this).balance >0);
		
		potVersion ++;
		updateTimestampLimit();
		uint256 balance = address(this).balance;
		
		owner.transfer(balance);
		
        // fire event
        emit WithdrawOwner(potVersion, lastWithdrawPotVersion, balance);
    } 	

	
	
	
	
///////////////////////////////////////
/// REFERRERS - Setting and payment ///   
///////////////////////////////////////	

  /**
   * @dev Get the referrer of a player.
   * @param player The address of the player to get the referrer of.
   */
    function getReferrerOf(address player) public view returns (address) {
        return referrerOf[player];
    }

	
  /**
   * @dev Set a referrer.
   * @param newReferral The address to set the referrer for.
   * @param referrer The address of the referrer to set.
   * The referrer must own at least one country to keep his reflink active
   * Referrals got with an active link are forever, even if all the referrer's countries are sold
   */
    function setReferrer(address newReferral, address referrer) internal {
		if (getReferrerOf(newReferral) == address(0x0) && newReferral != referrer && balanceOf(referrer) > 0 && playerScore[newReferral] == 0) {
			
			/// Set the referrer, if no referrer has been set yet, and the player
			/// and referrer are not the same address.
				referrerOf[newReferral] = referrer;
        
			/// Emit event.
				emit SetReferrerEvent(newReferral, referrer);
		}
    }
	
	
	

  /**
   * @dev Dispatch the referrer bonus when a country is sold
   * @param referralDivToPay which dividends percentage will be dispatched to refererrs : 0 if no referrer, 2.5% if 1 referrer, 5% if 2
   */
	function payReferrer (address _oldOwner, uint256 _netProfit) internal returns (uint256 referralDivToPay) {
		address referrer_1 = referrerOf[_oldOwner];
		
		if (referrer_1 != 0x0) {
			referralDivToPay = _netProfit.mul(25).div(1000);
			pendingBalance[potVersion][referrer_1] += referralDivToPay;  /// 2.5% for the first referrer
			address referrer_2 = referrerOf[referrer_1];
				
				if (referrer_2 != 0x0) {
						pendingBalance[potVersion][referrer_2] += referralDivToPay;  /// 2.5% for the 2nd referrer
						referralDivToPay += referralDivToPay;
				}
		}
			
		emit PayReferrerEvent(_oldOwner, referrer_1, referrer_2, referralDivToPay);
		
		return referralDivToPay;
		
	}
	
	
	

	
///////////////////////////////////
/// INTERNAL FUNCTIONS WHEN BUY ///   
///////////////////////////////////	

  /**
   * @dev Dispatch dividends to former owners of a country
   */
	function bonusPreviousOwner(uint256 _itemSoldId, uint256 _paidPrice, uint256 _bonusToDispatch) private {
		require(_bonusToDispatch < (_paidPrice.mul(5).div(100)));
		require(countryStructs[_itemSoldId].priceHistory > 0);

		CountryStruct storage c = countryStructs[_itemSoldId];
		uint256 countryScore = c.priceHistory;
		uint256 kBonus = _bonusToDispatch.mul(HUGE).div(countryScore);
		uint256 bonusDispatched = 0;
		  
		for (uint256 i = 0; i < c.itemToAddressArray.length && bonusDispatched < _bonusToDispatch ; i++) {
			address listedBonusPlayer = c.itemToAddressArray[i];
			uint256 playerBonusScore = itemHistory[_itemSoldId][listedBonusPlayer];
			uint256 bonusToGet = playerBonusScore.mul(kBonus).div(HUGE);
				
				if (bonusDispatched.add(bonusToGet) <= _bonusToDispatch) {
					pendingBalance[potVersion][listedBonusPlayer] += bonusToGet;
					bonusDispatched += bonusToGet;
					
					emitInfo(bonusToGet, playerBonusScore, listedBonusPlayer, pendingBalance[potVersion][listedBonusPlayer], _itemSoldId);
				}
		}  
			
		emit BonusConstant(_bonusToDispatch, bonusDispatched, _bonusToDispatch.sub(bonusDispatched), _itemSoldId, kBonus, countryScore);
	}


	
	function emitInfo(uint256 dividendsToG_, uint256 playerSc_, address player_, uint256 divsBalance_, uint256 itemId_) private {
		emit BonusDispatch(dividendsToG_, playerSc_, player_, divsBalance_, itemId_);
  
	}

  

  /**
   * @dev we need to update the oldOwner and newOwner balances each time a country is sold, their handicap and playerscore will also change
   * Worldscore and dividendscore : we don't care, it will be updated later.
   * If accurate, set a new richest player
   */
	function updateScoreAndBalance(uint256 _paidPrice, uint256 _itemId, address _oldOwner, address _newOwner) internal {	
		uint256 _previousPaidPrice = previousPriceOfItem[_itemId];
		assert (_paidPrice > _previousPaidPrice);

		
		/// OLD OWNER ///
			uint256 scoreSubHandicap = dividendsScore.sub(handicap[potVersion][_oldOwner]);
			uint256 playerScore_ = playerScore[_oldOwner];
		
			/// If the old owner is the owner of this contract, we skip this part, the owner of the contract won't get dividends
				if (_oldOwner != owner && scoreSubHandicap >= 0 && playerScore_ > _previousPaidPrice) {
					pendingBalance[potVersion][_oldOwner] += playerScore_.mul(scoreSubHandicap).div(HUGE);
					playerScore[_oldOwner] -= _previousPaidPrice; ///for the oldOwner, the playerScore goes down the previous price
					handicap[potVersion][_oldOwner] = dividendsScore; /// and setting his handicap to dividendsScore after updating his balance
				}

				
		/// NEW OWNER ///
			scoreSubHandicap = dividendsScore.sub(handicap[potVersion][_newOwner]); /// Rewrite the var with the newOwner values
			playerScore_ = playerScore[_newOwner]; /// Rewrite the var playerScore with the newOwner PlayerScore
				
			/// If new player, his playerscore = 0, handicap = 0, so the pendingBalance math = 0
				if (scoreSubHandicap >= 0) {
					pendingBalance[potVersion][_newOwner] += playerScore_.mul(scoreSubHandicap).div(HUGE);
					playerScore[_newOwner] += _paidPrice.mul(2); ///for the newOwner, the playerScore goes up twice the value of the purchase price
					handicap[potVersion][_newOwner] = dividendsScore; /// and setting his handicap to dividendsScore after updating his balance
				}

				
		/// Change the richest user if this is the case...
				if (playerScore[_newOwner] > playerScore[richestBuyer]) {
					richestBuyer = _newOwner;
					
					emit newRichest(_newOwner, playerScore[_newOwner], block.timestamp, block.number);
				}		

				
		/// Change the last Buyer in any case
			lastBuyer = _newOwner;
		
	}
		

		

  /**
   * @dev Update the worldScore
   * After each buy, the worldscore increases : 2x current purchase price - 1x previousPrice
   */
	function updateWorldScore(uint256 _countryId, uint256 _price) internal	{
		worldScore += _price.mul(2).sub(previousPriceOfItem[_countryId]);
	}
		

		
  /**
   * @dev Update timestampLimit : the date on which the richest player and the last buyer will be able to share the contract balance (1/4 each)
   */ 
	function updateTimestampLimit() internal {
		timestampLimit = block.timestamp.add(604800).add(potVersion.mul(28800)); /// add 7 days + (pot version * X 8hrs)
	}


	
  /**
   * @dev Refund the buyer if excess
   */ 
	function excessRefund(address _newOwner, uint256 _price) internal {		
		uint256 excess = msg.value.sub(_price);
			if (excess > 0) {
				_newOwner.transfer(excess);
			}
	}	
	

	


///////////////////////////   
/// 	BUY A COUNTRY 	///
///////////////////////////
/*
     Buy a country directly from the contract for the calculated price
     which ensures that the owner gets a profit.  All countries that
     have been listed can be bought by this method. User funds are sent
     directly to the previous owner and are never stored in the contract.
*/
	
	function buy (uint256 _itemId, address referrerAddress) payable public onlyRealAddress {
		require(priceOf(_itemId) > 0);
		require(ownerOf(_itemId) != address(0));
		require(msg.value >= priceOf(_itemId));
		require(ownerOf(_itemId) != msg.sender);
		require(!isContract(msg.sender));
		require(msg.sender != owner);
		require(block.timestamp < timestampLimit || block.timestamp > timestampLimit.add(3600));
		
		
		address oldOwner = ownerOf(_itemId);
		address newOwner = msg.sender;
		uint256 price = priceOf(_itemId);

		
		
	
	////////////////////////
	/// Set the referrer ///
	////////////////////////
		
		setReferrer(newOwner, referrerAddress);
		
	

	
	///////////////////////////////////
	/// Update scores and timestamp ///
	///////////////////////////////////
		
		/// Dividends are dispatched among players accordingly to their "playerScore".
		/// The playerScore equals the sum of all their countries (owned now, paid price) + sum of all their previously owned countries 
		/// After each sell / buy, players that owned at least one country can claim dividends
		/// DIVS of a player = playerScore * DIVS to dispatch / worldScore
		/// If a player is a seller or a buyer, his playerScore will change, we need to adjust his parameters
		/// If a player is not a buyer / seller, his playerScore doesn't change, no need to adjust
			updateScoreAndBalance(price, _itemId, oldOwner, newOwner);
			
		/// worldScore change after each flip, we need to adjust
		/// To calculate the worldScore after a flip: add buy price x 2, subtract previous price
			updateWorldScore(_itemId, price);
		
		/// If 7 days with no buys, the richest player and the last buyer win the jackpot (1/2 of contract balance ; 1/4 each)
		/// Waiting time increases after each pot distribution
			updateTimestampLimit();
	


	
	///////////////////////
	/// Who earns what? ///
	///////////////////////	
	
		/// When a country flips, who earns how much?
		/// Devs : 2% to 5% of country price
		/// Seller's reward : current paidPrice - previousPrice - devsCut = net profit. The seller gets the previous Price + ca.65% of net Profit
		/// The referrers of the seller : % of netProfit from their referrals R+1 & R+2. If no referrers, all the referrers' cut goes to dividends to all players.
		/// All players, with or without a country now : dividends (% of netProfit)
		/// All previous owners of the flipped country : a special part of dividends called Bonus. If no previous buyer, all the bonus is also added up to dividends to all players.
			
		/// Calculate the devs cut
			uint256 devCut_ = calculateDevCut(price);
			
		/// Calculate the netProfit
			uint256 netProfit = price.sub(devCut_).sub(previousPriceOfItem[_itemId]);
		
		/// Calculate dividends cut from netProfit and what referrers left
			uint256 dividendsCut_ = netProfit.mul(30).div(100);
			
		/// Calculate the seller's reward
		/// Price sub the cuts : dev cut and 35% including referrer cut (5% max), 30% (25% if referrers) dividends (including 80% divs / 20% bonus max) and 5% (jackpot)
			uint256 oldOwnerReward = price.sub(devCut_).sub(netProfit.mul(35).div(100));

		/// Calculate the referrers cut and store the referrer's cut in the referrer's pending balance ///
		/// Update dividend's cut : 30% max ; 27,5% if 1 referrer ; 25% if 2 referrers
			uint256 refCut = payReferrer(oldOwner, netProfit);
			dividendsCut_ -= refCut;
		
	

	
	////////////////////////////////////////////////////////////
	///          Dispatch dividends to all players           ///
	/// Dispatch bonuses to previous owners of this country  ///
	////////////////////////////////////////////////////////////
		
		/// Dividends = 80% to all country owners (previous and current owners, no matter the country) + 20% bonus to previous owners of this country
		/// If no previous owners, 100% to all countries owners
	
		/// Are there previous owners for the current flipped country?
			if (price > countryStructs[_itemId].startingPrice && dividendsCut_ > 1000000 && worldScore > 0) {
				
				/// Yes, there are previous owners, they will get 20% of dividends of this country
					bonusPreviousOwner(_itemId, price, dividendsCut_.mul(20).div(100));
				
				/// So dividends for all the country owners are 100% - 20% = 80%
					dividendsCut_ = dividendsCut_.mul(80).div(100); 
			} 
	
				/// If else... nothing special to do, there are no previous owners, dividends remain 100%	
		
		/// Dispatch dividends to all country owners, no matter the country
		/// Note : to avoid floating numbers, we divide a constant called HUGE (1e13) by worldScore, of course we will multiply by HUGE when retrieving
			if (worldScore > 0) { /// worldScore must be greater than 0, the opposite is impossible and dividends are not calculated
				
				dividendsScore += HUGE.mul(dividendsCut_).div(worldScore);
			}
	

	
	////////////////////////////////////////////////
	/// Update the price history of the newOwner ///
	////////////////////////////////////////////////
	
		/// The newOwner is now known as an OWNER for this country
		/// We'll store his cumulated buy price for this country in a mapping
		/// Bonus : each time a country is flipped, players that previously owned this country get bonuses proportionally to the sum of their buys	
			updateEntity(_itemId, newOwner, price);
			itemHistory[_itemId][newOwner] += price;

	

	
	////////////////////////
	/// Update the price ///
	////////////////////////
	
		/// The price of purchase becomes the "previousPrice", and the "price" is the next price 
			previousPriceOfItem[_itemId] = price;
			priceOfItem[_itemId] = nextPriceOf(_itemId);
	

	
	/////////////////////////////////////////
	/// Transfer the reward to the seller ///
	/////////////////////////////////////////

		/// The seller's reward is transfered automatically to his wallet
		/// The dev cut is transfered automatically out the contract
		/// The other rewards (bonus, dividends, referrer's cut) will be stored in a pending balance
			oldOwner.transfer(oldOwnerReward);
			owner.transfer(devCut_);
			
		/// Transfer the token from oldOwner to newOwner
			_transfer(oldOwner, newOwner, _itemId);  	
	
		/// Emit the events
			emit Bought(_itemId, newOwner, price);
			emit Sold(_itemId, oldOwner, price);	
		
	

	
	///////////////////////////////////////////
	/// Transfer the excess to the newOwner ///
	///////////////////////////////////////////
	
		/// If the newOwner sent a higher price than the asked price, the excess is refunded
			excessRefund(newOwner, price);
		

	
	/// Send informations
		emit DivsDispatch(dividendsCut_, dividendsScore, _itemId, price, worldScore);		
		
/// END OF THE BUY FUNCTION ///
  
	}
  
 
  
//////////////////////////////
/// Practical informations ///
//////////////////////////////

	function itemHistoryOfPlayer(uint256 _itemId, address _owner) public view returns (uint256 _valueAddressOne) {
		return itemHistory[_itemId][_owner];
	}
  
  
	function implementsERC721() public view returns (bool _implements) {
		return erc721Enabled;
	}

	
	function name() public pure returns (string _name) {
		return "SuperCountries";
	}

	
	function symbol() public pure returns (string _symbol) {
		return "SUP";
	}

	
	function totalSupply() public view returns (uint256 _totalSupply) {
		return listedItems.length;
	}

	
	function balanceOf (address _owner) public view returns (uint256 _balance) {
		uint256 counter = 0;

			for (uint256 i = 0; i < listedItems.length; i++) {
				if (ownerOf(listedItems[i]) == _owner) {
					counter++;
				}
			}

		return counter;
	}


	function ownerOf (uint256 _itemId) public view returns (address _owner) {
		return ownerOfItem[_itemId];
	}

	
	function tokensOf (address _owner) public view returns (uint256[] _tokenIds) {
		uint256[] memory items = new uint256[](balanceOf(_owner));
		uint256 itemCounter = 0;
			
			for (uint256 i = 0; i < listedItems.length; i++) {
				if (ownerOf(listedItems[i]) == _owner) {
					items[itemCounter] = listedItems[i];
					itemCounter += 1;
				}
			}

		return items;
	}


	function tokenExists (uint256 _itemId) public view returns (bool _exists) {
		return priceOf(_itemId) > 0;
	}

	
	function approvedFor(uint256 _itemId) public view returns (address _approved) {
		return approvedOfItem[_itemId];
	}


	function approve(address _to, uint256 _itemId) onlyERC721() public {
		require(msg.sender != _to);
		require(tokenExists(_itemId));
		require(ownerOf(_itemId) == msg.sender);

		if (_to == 0) {
			if (approvedOfItem[_itemId] != 0) {
				delete approvedOfItem[_itemId];
				emit Approval(msg.sender, 0, _itemId);
			}
		}
		else {
			approvedOfItem[_itemId] = _to;
			emit Approval(msg.sender, _to, _itemId);
		}
	  }

	  
  /* Transferring a country to another owner will entitle the new owner the profits from `buy` */
	function transfer(address _to, uint256 _itemId) onlyERC721() public {
		require(msg.sender == ownerOf(_itemId));
		_transfer(msg.sender, _to, _itemId);
	}

	
	function transferFrom(address _from, address _to, uint256 _itemId) onlyERC721() public {
		require(approvedFor(_itemId) == msg.sender);
		_transfer(_from, _to, _itemId);
	}

	
	function _transfer(address _from, address _to, uint256 _itemId) internal {
		require(tokenExists(_itemId));
		require(ownerOf(_itemId) == _from);
		require(_to != address(0));
		require(_to != address(this));

		ownerOfItem[_itemId] = _to;
		approvedOfItem[_itemId] = 0;

		emit Transfer(_from, _to, _itemId);
	}


	
///////////////////////////	
/// READ ONLY FUNCTIONS ///
///////////////////////////

	function gameInfo() public view returns (address richestPlayer_, address lastBuyer_, uint256 thisBalance_, uint256 lastWithdrawPotVersion_, uint256 worldScore_, uint256 potVersion_,  uint256 timestampLimit_) {
		
		return (richestBuyer, lastBuyer, address(this).balance, lastWithdrawPotVersion, worldScore, potVersion, timestampLimit);
	}
	
	
	function priceOf(uint256 _itemId) public view returns (uint256 _price) {
		return priceOfItem[_itemId];
	}
	
	
	function nextPriceOf(uint256 _itemId) public view returns (uint256 _nextPrice) {
		return calculateNextPrice(priceOf(_itemId));
	}

	
	function allOf(uint256 _itemId) external view returns (address _owner, uint256 _price, uint256 previous_, uint256 _nextPrice) {
		return (ownerOf(_itemId), priceOf(_itemId), previousPriceOfItem[_itemId], nextPriceOf(_itemId));
	}


///  is Contract ///
	function isContract(address addr) internal view returns (bool) {
		uint size;
		assembly { size := extcodesize(addr) } // solium-disable-line
		return size > 0;
	}




////////////////////////
/// USEFUL FUNCTIONS ///
////////////////////////

  /** 
   * @dev Fallback function to accept all ether sent directly to the contract
   * Nothing is lost, it will raise the jackpot !
   */

    function() payable public
    {    }


}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"tokenExists","outputs":[{"name":"_exists","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"_name","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_itemId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"implementsERC721","outputs":[{"name":"_implements","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"_totalSupply","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_itemId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"approvedFor","outputs":[{"name":"_approved","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"allOf","outputs":[{"name":"_owner","type":"address"},{"name":"_price","type":"uint256"},{"name":"previous_","type":"uint256"},{"name":"_nextPrice","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"confirmDividendsFromPot","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_itemId","type":"uint256"},{"name":"_price","type":"uint256"},{"name":"_owner","type":"address"}],"name":"listItem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"tokensOf","outputs":[{"name":"_tokenIds","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"nextPriceOf","outputs":[{"name":"_nextPrice","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"_owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_price","type":"uint256"}],"name":"calculateDevCut","outputs":[{"name":"_devCut","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"_balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"enableERC721","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_itemId","type":"uint256"},{"name":"referrerAddress","type":"address"}],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_potVersion","type":"uint256"},{"name":"_playerAddress","type":"address"}],"name":"getOldBalance","outputs":[{"name":"oldPendingRefBonus_","type":"uint256"},{"name":"oldHandicap_","type":"uint256"},{"name":"oldReadyToWithdraw_","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_itemId","type":"uint256"},{"name":"_owner","type":"address"}],"name":"itemHistoryOfPlayer","outputs":[{"name":"_valueAddressOne","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"_symbol","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[],"name":"confirmDividends","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_itemId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"priceOf","outputs":[{"name":"_price","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_itemIds","type":"uint256[]"},{"name":"_price","type":"uint256"},{"name":"_owner","type":"address"}],"name":"listMultipleItems","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"player","type":"address"}],"name":"getReferrerOf","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"countryStructs","outputs":[{"name":"priceHistory","type":"uint256"},{"name":"startingPrice","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"referrerOf","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gameInfo","outputs":[{"name":"richestPlayer_","type":"address"},{"name":"lastBuyer_","type":"address"},{"name":"thisBalance_","type":"uint256"},{"name":"lastWithdrawPotVersion_","type":"uint256"},{"name":"worldScore_","type":"uint256"},{"name":"potVersion_","type":"uint256"},{"name":"timestampLimit_","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_price","type":"uint256"}],"name":"calculateNextPrice","outputs":[{"name":"_nextPrice","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_playerAddress","type":"address"}],"name":"getBalance","outputs":[{"name":"pendingRefBonus_","type":"uint256"},{"name":"pendingFromScore_","type":"uint256"},{"name":"totalPending_","type":"uint256"},{"name":"balanceReadyToWithdraw_","type":"uint256"},{"name":"playerScore_","type":"uint256"},{"name":"handicap_","type":"uint256"},{"name":"dividendsScore_","type":"uint256"}],"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":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_itemId","type":"uint256"},{"indexed":true,"name":"_owner","type":"address"},{"indexed":false,"name":"_price","type":"uint256"}],"name":"Bought","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_itemId","type":"uint256"},{"indexed":true,"name":"_owner","type":"address"},{"indexed":false,"name":"_price","type":"uint256"}],"name":"Sold","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_approved","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"referral","type":"address"},{"indexed":true,"name":"referrer","type":"address"}],"name":"SetReferrerEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"oldOwner","type":"address"},{"indexed":true,"name":"referrer1","type":"address"},{"indexed":true,"name":"referrer2","type":"address"},{"indexed":false,"name":"referralPart","type":"uint256"}],"name":"PayReferrerEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"bonusToDispatch_","type":"uint256"},{"indexed":false,"name":"bonusDispatched_","type":"uint256"},{"indexed":false,"name":"notYetDispatched_","type":"uint256"},{"indexed":true,"name":"_itemSoldId_","type":"uint256"},{"indexed":false,"name":"kBonus","type":"uint256"},{"indexed":true,"name":"countryScore","type":"uint256"}],"name":"BonusConstant","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"bonusToGet_","type":"uint256"},{"indexed":true,"name":"playerScoreForThisCountry_","type":"uint256"},{"indexed":true,"name":"player_","type":"address"},{"indexed":false,"name":"pendingBalanceTotal_","type":"uint256"},{"indexed":true,"name":"_itemSoldId","type":"uint256"}],"name":"BonusDispatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"dividendsCut_","type":"uint256"},{"indexed":false,"name":"dividendsScore","type":"uint256"},{"indexed":true,"name":"_itemId","type":"uint256"},{"indexed":false,"name":"price","type":"uint256"},{"indexed":false,"name":"worldScore_","type":"uint256"}],"name":"DivsDispatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"richest_","type":"address"},{"indexed":false,"name":"richestScore_","type":"uint256"},{"indexed":true,"name":"blocktimestamp_","type":"uint256"},{"indexed":true,"name":"blocknumber_","type":"uint256"}],"name":"newRichest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"playerAddress","type":"address"},{"indexed":true,"name":"ethereumWithdrawn","type":"uint256"},{"indexed":true,"name":"potVersion_","type":"uint256"}],"name":"Withdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"playerAddress","type":"address"},{"indexed":false,"name":"refbonus_","type":"uint256"},{"indexed":false,"name":"divs_","type":"uint256"},{"indexed":false,"name":"totalPending_","type":"uint256"},{"indexed":false,"name":"playerSc_","type":"uint256"},{"indexed":false,"name":"_handicap_","type":"uint256"}],"name":"ConfirmWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"contractBalance","type":"uint256"},{"indexed":true,"name":"richest_","type":"address"},{"indexed":false,"name":"richestBalance_","type":"uint256"},{"indexed":true,"name":"lastBuyer_","type":"address"},{"indexed":false,"name":"lastBalance_","type":"uint256"},{"indexed":true,"name":"potVersion","type":"uint256"}],"name":"ConfirmPotWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"blocktimestamp_","type":"uint256"},{"indexed":true,"name":"timestamplimit_","type":"uint256"},{"indexed":false,"name":"dividendsScore_","type":"uint256"},{"indexed":true,"name":"potVersion","type":"uint256"},{"indexed":false,"name":"lastWithdrawPotVersion_","type":"uint256"}],"name":"PotWithdrawConstant","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"potVersion","type":"uint256"},{"indexed":true,"name":"lastWithdrawPotVersion_","type":"uint256"},{"indexed":true,"name":"balance_","type":"uint256"}],"name":"WithdrawOwner","type":"event"}]

608060405260008060146101000a81548160ff021916908315150217905550668e1bc9bf040000600155670853a0d2313c00006002556722b1c8c1227a0000600355676124fee993bc000060045560016011556001601255635b1517be6015556509184e72a00060185534801561007557600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061425c806100c56000396000f3006080604052600436106101ab576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062923f9e146101ad57806306fdde03146101f2578063095ea7b3146102825780631051db34146102cf57806318160ddd146102fe57806323b872dd146103295780632a6dd48f146103965780632e4f43bf146104035780633ccfd60b14610485578063418f14871461049c578063442edd03146104b35780635a3f26721461050a5780635ba9e48e146105a25780636352211e146105e3578063651212051461065057806370a082311461069157806371dc761e146106e85780637deb6025146106ff578063853828b61461073f5780638bda1540146107565780638da5cb5b146107c557806394bb7d641461081c57806395d89b411461087d578063a12077081461090d578063a9059cbb14610924578063b9186d7d14610971578063baddee6f146109b2578063bc7f25e414610a17578063cc2e2e8a14610a9a578063d21cacdf14610ae2578063db73bfce14610b65578063e08503ec14610c12578063f2fde38b14610c53578063f8b2cb4f14610c96575b005b3480156101b957600080fd5b506101d860048036038101908080359060200190929190505050610d17565b604051808215151515815260200191505060405180910390f35b3480156101fe57600080fd5b50610207610d2b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561024757808201518184015260208101905061022c565b50505050905090810190601f1680156102745780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028e57600080fd5b506102cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d68565b005b3480156102db57600080fd5b506102e4610fce565b604051808215151515815260200191505060405180910390f35b34801561030a57600080fd5b50610313610fe4565b6040518082815260200191505060405180910390f35b34801561033557600080fd5b50610394600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ff1565b005b3480156103a257600080fd5b506103c16004803603810190808035906020019092919050505061105e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561040f57600080fd5b5061042e6004803603810190808035906020019092919050505061109b565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390f35b34801561049157600080fd5b5061049a6110df565b005b3480156104a857600080fd5b506104b16112ef565b005b3480156104bf57600080fd5b506105086004803603810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611728565b005b34801561051657600080fd5b5061054b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118e1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058e578082015181840152602081019050610573565b505050509050019250505060405180910390f35b3480156105ae57600080fd5b506105cd600480360381019080803590602001909291905050506119e1565b6040518082815260200191505060405180910390f35b3480156105ef57600080fd5b5061060e600480360381019080803590602001909291905050506119fb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561065c57600080fd5b5061067b60048036038101908080359060200190929190505050611a38565b6040518082815260200191505060405180910390f35b34801561069d57600080fd5b506106d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b11565b6040518082815260200191505060405180910390f35b3480156106f457600080fd5b506106fd611ba0565b005b61073d60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c18565b005b34801561074b57600080fd5b506107546121ff565b005b34801561076257600080fd5b506107a160048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123ac565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156107d157600080fd5b506107da6124c1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561082857600080fd5b5061086760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124e6565b6040518082815260200191505060405180910390f35b34801561088957600080fd5b50610892612541565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108d25780820151818401526020810190506108b7565b50505050905090810190601f1680156108ff5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561091957600080fd5b5061092261257e565b005b34801561093057600080fd5b5061096f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061294e565b005b34801561097d57600080fd5b5061099c600480360381019080803590602001909291905050506129ba565b6040518082815260200191505060405180910390f35b3480156109be57600080fd5b50610a1560048036038101908080359060200190820180359060200191909192939192939080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129d7565b005b348015610a2357600080fd5b50610a58600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a77565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610aa657600080fd5b50610ac560048036038101908080359060200190929190505050612ae0565b604051808381526020018281526020019250505060405180910390f35b348015610aee57600080fd5b50610b23600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b04565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b7157600080fd5b50610b7a612b37565b604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390f35b348015610c1e57600080fd5b50610c3d60048036038101908080359060200190929190505050612bc3565b6040518082815260200191505060405180910390f35b348015610c5f57600080fd5b50610c94600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cd4565b005b348015610ca257600080fd5b50610cd7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e29565b6040518088815260200187815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390f35b600080610d23836129ba565b119050919050565b60606040805190810160405280600e81526020017f5375706572436f756e7472696573000000000000000000000000000000000000815250905090565b600060149054906101000a900460ff161515610d8357600080fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515610dbe57600080fd5b610dc781610d17565b1515610dd257600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16610df2826119fb565b73ffffffffffffffffffffffffffffffffffffffff16141515610e1457600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff161415610f125760006009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610f0d576009600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560003373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35b610fca565b816009600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35b5050565b60008060149054906101000a900460ff16905090565b6000600580549050905090565b600060149054906101000a900460ff16151561100c57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff1661102c8261105e565b73ffffffffffffffffffffffffffffffffffffffff1614151561104e57600080fd5b611059838383612ff8565b505050565b60006009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000806000806110aa856119fb565b6110b3866129ba565b60086000888152602001908152602001600020546110d0886119e1565b93509350935093509193509193565b600080600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151561111e57600080fd5b600061112933611b11565b11151561113557600080fd5b600060106000601154815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411151561119657600080fd5b3391506011546012541415156111b0576011546012819055505b60106000601154815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600060106000601154815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156112a3573d6000803e3d6000fd5b50601154818373ffffffffffffffffffffffffffffffffffffffff167fdf273cb619d95419a9cd0ec88123a0538c85064229baa6363788f743fff90deb60405160405180910390a45050565b60008060008073ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156113a15750600073ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15156113ac57600080fd5b6305f5e1003073ffffffffffffffffffffffffffffffffffffffff16311115156113d557600080fd5b601554421115156113e557600080fd5b60155492506011600081548092919060010191905055503073ffffffffffffffffffffffffffffffffffffffff1631915061142a6004836131d490919063ffffffff16565b90506000600d8190555061143c6131ef565b806010600060115481526020019081526020016000206000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806010600060115481526020019081526020016000206000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550601154601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7d52b961c8da712caedc7332724540baef718e9ef738de74e08dafcdfb4d923b856010600060115481526020019081526020016000206000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546010600060115481526020019081526020016000206000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405180848152602001838152602001828152602001935050505060405180910390a460115483427f47b47b8c7743492a3f458380fb4e05eea566f4535b9d8432c9b37bc12fc8a0d0600d54601254604051808381526020018281526020019250505060405180910390a4505050565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561178357600080fd5b60008211151561179257600080fd5b600060076000858152602001908152602001600020541415156117b457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166006600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561182257600080fd5b806006600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160076000858152602001908152602001600020819055506000600860008581526020019081526020016000208190555060058390806001815401808255809150509060018203906000526020600020016000909192909190915055506118db8383613235565b50505050565b6060806000806118f085611b11565b60405190808252806020026020018201604052801561191e5781602001602082028038833980820191505090505b50925060009150600090505b6005805490508110156119d6578473ffffffffffffffffffffffffffffffffffffffff1661197060058381548110151561196057fe5b90600052602060002001546119fb565b73ffffffffffffffffffffffffffffffffffffffff1614156119c95760058181548110151561199b57fe5b906000526020600020015483838151811015156119b457fe5b90602001906020020181815250506001820191505b808060010191505061192a565b829350505050919050565b60006119f46119ef836129ba565b612bc3565b9050919050565b60006006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600154821015611a7257611a6b6064611a5d60058561325c90919063ffffffff16565b6131d490919063ffffffff16565b9050611b0c565b600254821015611aaa57611aa36064611a9560048561325c90919063ffffffff16565b6131d490919063ffffffff16565b9050611b0c565b600454821015611ae257611adb6064611acd60038561325c90919063ffffffff16565b6131d490919063ffffffff16565b9050611b0c565b611b096064611afb60028561325c90919063ffffffff16565b6131d490919063ffffffff16565b90505b919050565b6000806000809150600090505b600580549050811015611b96578373ffffffffffffffffffffffffffffffffffffffff16611b64600583815481101515611b5457fe5b90600052602060002001546119fb565b73ffffffffffffffffffffffffffffffffffffffff161415611b895781806001019250505b8080600101915050611b1e565b8192505050919050565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611bfb57600080fd5b6001600060146101000a81548160ff021916908315150217905550565b600080600080600080600080600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515611c6057600080fd5b6000611c6b8b6129ba565b111515611c7757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16611c988b6119fb565b73ffffffffffffffffffffffffffffffffffffffff1614151515611cbb57600080fd5b611cc48a6129ba565b3410151515611cd257600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16611cf28b6119fb565b73ffffffffffffffffffffffffffffffffffffffff1614151515611d1557600080fd5b611d1e33613297565b151515611d2a57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515611d8657600080fd5b601554421080611dab5750611da8610e106015546132aa90919063ffffffff16565b42115b1515611db657600080fd5b611dbf8a6119fb565b9750339650611dcd8a6129ba565b9550611dd9878a6132c8565b611de5868b8a8a613479565b611def8a87613a9d565b611df76131ef565b611e0086611a38565b9450611e3a600860008c815260200190815260200160002054611e2c8789613ae990919063ffffffff16565b613ae990919063ffffffff16565b9350611e636064611e55601e8761325c90919063ffffffff16565b6131d490919063ffffffff16565b9250611eb0611e8f6064611e8160238861325c90919063ffffffff16565b6131d490919063ffffffff16565b611ea28789613ae990919063ffffffff16565b613ae990919063ffffffff16565b9150611ebc8885613b02565b90508083039250601660008b81526020019081526020016000206002015486118015611eea5750620f424083115b8015611ef857506000600b54115b15611f5857611f2e8a87611f296064611f1b60148961325c90919063ffffffff16565b6131d490919063ffffffff16565b613d83565b611f556064611f4760508661325c90919063ffffffff16565b6131d490919063ffffffff16565b92505b6000600b541115611f9c57611f8c600b54611f7e8560185461325c90919063ffffffff16565b6131d490919063ffffffff16565b600d600082825401925050819055505b611fa78a8888614067565b85601760008c815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555085600860008c8152602001908152602001600020819055506120268a6119e1565b600760008c8152602001908152602001600020819055508773ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612083573d6000803e3d6000fd5b506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f193505050501580156120eb573d6000803e3d6000fd5b506120f788888c612ff8565b8673ffffffffffffffffffffffffffffffffffffffff168a7fd2728f908c7e0feb83c6278798370fcb86b62f236c9dbf1a3f541096c2159040886040518082815260200191505060405180910390a38773ffffffffffffffffffffffffffffffffffffffff168a7f66f5cd880edf48cdde6c966e5da0784fcc4c5e85572b8b3b62c4357798d447d7886040518082815260200191505060405180910390a361219f8787614164565b897fc2d38df9d158fa63a4d22026daa0c1962b6e04743f50d7551dfdc0fe8b4d140484600d5489600b546040518085815260200184815260200183815260200182815260200194505050505060405180910390a250505050505050505050565b60003373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561225c57600080fd5b61227260036012546132aa90919063ffffffff16565b60115411801561228457506000600d54145b806122a957506305f5e1013073ffffffffffffffffffffffffffffffffffffffff1631105b15156122b457600080fd5b60003073ffffffffffffffffffffffffffffffffffffffff16311115156122da57600080fd5b6011600081548092919060010191905055506122f46131ef565b3073ffffffffffffffffffffffffffffffffffffffff163190506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612375573d6000803e3d6000fd5b50806012546011547f23852d00014f909bc66902f9565357935dbd78450e7e9a46b8caa5accbc8285160405160405180910390a450565b600080600080600080600e600089815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549250600f600089815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491506010600089815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508282829550955095505050509250925092565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006017600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60606040805190810160405280600381526020017f5355500000000000000000000000000000000000000000000000000000000000815250905090565b600080600080600080600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515156125c357600080fd5b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411151561261157600080fd5b600f6000601154815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d541015151561267457600080fd5b6000600d541015151561268657600080fd5b339550600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549450600f6000601154815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549350600e6000601154815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492506127b06018546127a261279387600d54613ae990919063ffffffff16565b8861325c90919063ffffffff16565b6131d490919063ffffffff16565b91506127c582846132aa90919063ffffffff16565b90506000600e6000601154815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d54600f6000601154815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060106000601154815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508573ffffffffffffffffffffffffffffffffffffffff167f4324e1fbcfc75073846dc7188f546ae390ff4c589a22422c75df55c26ed59bdc8484848989604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a2505050505050565b600060149054906101000a900460ff16151561296957600080fd5b612972816119fb565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129ab57600080fd5b6129b6338383612ff8565b5050565b600060076000838152602001908152602001600020549050919050565b60003373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612a3457600080fd5b600090505b84849050811015612a7057612a638585838181101515612a5557fe5b905060200201358484611728565b8080600101915050612a39565b5050505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60166020528060005260406000206000915090508060010154908060020154905082565b600a6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000806000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1631601254600b54601154601554965096509650965096509650965090919293949596565b6000600154821015612bfd57612bf6605f612be860c88561325c90919063ffffffff16565b6131d490919063ffffffff16565b9050612ccf565b600254821015612c3557612c2e6060612c2060a08561325c90919063ffffffff16565b6131d490919063ffffffff16565b9050612ccf565b600354821015612c6d57612c666061612c5860948561325c90919063ffffffff16565b6131d490919063ffffffff16565b9050612ccf565b600454821015612ca557612c9e6061612c9060888561325c90919063ffffffff16565b6131d490919063ffffffff16565b9050612ccf565b612ccc6062612cbe607c8561325c90919063ffffffff16565b6131d490919063ffffffff16565b90505b919050565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612d2f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612d6b57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806000806000806000806000806000806000600e6000601154815260200190815260200160002060008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549550600c60008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549450600f6000601154815260200190815260200160002060008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549350612f64601854612f56612f4787600d54613ae990919063ffffffff16565b8861325c90919063ffffffff16565b6131d490919063ffffffff16565b9250612f7983876132aa90919063ffffffff16565b915060106000601154815260200190815260200160002060008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050858383838888600d549c509c509c509c509c509c509c50505050505050919395979092949650565b61300181610d17565b151561300c57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1661302c826119fb565b73ffffffffffffffffffffffffffffffffffffffff1614151561304e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561308a57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156130c557600080fd5b816006600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006009600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008082848115156131e257fe5b0490508091505092915050565b61322d61320961708060115461325c90919063ffffffff16565b61321f62093a80426132aa90919063ffffffff16565b6132aa90919063ffffffff16565b601581905550565b60008160166000858152602001908152602001600020600201819055506001905092915050565b60008060008414156132715760009150613290565b828402905082848281151561328257fe5b0414151561328c57fe5b8091505b5092915050565b600080823b905060008111915050919050565b60008082840190508381101515156132be57fe5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff166132e983612a77565b73ffffffffffffffffffffffffffffffffffffffff1614801561333857508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561334c5750600061334a82611b11565b115b801561339757506000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156134755780600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fb450fc051a97f4be9c19179858075d55dcd18451137b75b621aa642ebceadb3760405160405180910390a35b5050565b600080600060086000878152602001908152602001600020549250828711151561349f57fe5b613506600f6000601154815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d54613ae990919063ffffffff16565b9150600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156135a8575060008210155b80156135b357508281115b156136e5576135df6018546135d1848461325c90919063ffffffff16565b6131d490919063ffffffff16565b600e6000601154815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555082600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550600d54600f6000601154815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61374c600f6000601154815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d54613ae990919063ffffffff16565b9150600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000821015156138da576137c16018546137b3848461325c90919063ffffffff16565b6131d490919063ffffffff16565b600e6000601154815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555061383460028861325c90919063ffffffff16565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600d54600f6000601154815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600c6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115613a535783601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555043428573ffffffffffffffffffffffffffffffffffffffff167f67cd21f46fbb7e468ddcd4e93dcf0fc228d9df2f5669959539eb8adb39cc0564600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a45b83601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505050565b613ad66008600084815260200190815260200160002054613ac860028461325c90919063ffffffff16565b613ae990919063ffffffff16565b600b600082825401925050819055505050565b6000828211151515613af757fe5b818303905092915050565b6000806000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915060008273ffffffffffffffffffffffffffffffffffffffff16141515613cfc57613bb16103e8613ba360198761325c90919063ffffffff16565b6131d490919063ffffffff16565b925082600e6000601154815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff16141515613cfb5782600e6000601154815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555082830192505b5b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f79937abffcfdfa40d3f12bf61cd7a05b3cbd14369ebfe8a5a5a35d8d14b4d384866040518082815260200191505060405180910390a4829250505092915050565b600080600080600080600080613db66064613da860058d61325c90919063ffffffff16565b6131d490919063ffffffff16565b89101515613dc357600080fd5b6000601660008d815260200190815260200160002060010154111515613de857600080fd5b601660008c8152602001908152602001600020975087600101549650613e2b87613e1d6018548c61325c90919063ffffffff16565b6131d490919063ffffffff16565b955060009450600093505b876000018054905084108015613e4b57508885105b15613ff7578760000184815481101515613e6157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250601760008c815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150613f08601854613efa888561325c90919063ffffffff16565b6131d490919063ffffffff16565b905088613f1e82876132aa90919063ffffffff16565b111515613fea5780600e6000601154815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508085019450613fe9818385600e6000601154815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548f6141d1565b5b8380600101945050613e36565b868b7fceb4b13ccc641c5bc314f7f19734f73e88b54f41fb9651e44e59ffaabcf02cdd8b8861402f8a8f613ae990919063ffffffff16565b8b6040518085815260200184815260200183815260200182815260200194505050505060405180910390a35050505050505050505050565b80601660008581526020019081526020016000206001016000828254019250508190555060006017600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561415f57601660008481526020019081526020016000206000018290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b505050565b60006141798234613ae990919063ffffffff16565b905060008111156141cc578273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156141ca573d6000803e3d6000fd5b505b505050565b808373ffffffffffffffffffffffffffffffffffffffff16857f4cda2925eea274e308d19b94cf807a899810844448d5959cbbdd21b2c5d64bdd8886604051808381526020018281526020019250505060405180910390a450505050505600a165627a7a72305820b191ed1a8bdcdc035763bb752add4a85ba678083b74d57e4430ece4780fc1f660029

Deployed Bytecode

0x6080604052600436106101ab576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062923f9e146101ad57806306fdde03146101f2578063095ea7b3146102825780631051db34146102cf57806318160ddd146102fe57806323b872dd146103295780632a6dd48f146103965780632e4f43bf146104035780633ccfd60b14610485578063418f14871461049c578063442edd03146104b35780635a3f26721461050a5780635ba9e48e146105a25780636352211e146105e3578063651212051461065057806370a082311461069157806371dc761e146106e85780637deb6025146106ff578063853828b61461073f5780638bda1540146107565780638da5cb5b146107c557806394bb7d641461081c57806395d89b411461087d578063a12077081461090d578063a9059cbb14610924578063b9186d7d14610971578063baddee6f146109b2578063bc7f25e414610a17578063cc2e2e8a14610a9a578063d21cacdf14610ae2578063db73bfce14610b65578063e08503ec14610c12578063f2fde38b14610c53578063f8b2cb4f14610c96575b005b3480156101b957600080fd5b506101d860048036038101908080359060200190929190505050610d17565b604051808215151515815260200191505060405180910390f35b3480156101fe57600080fd5b50610207610d2b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561024757808201518184015260208101905061022c565b50505050905090810190601f1680156102745780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028e57600080fd5b506102cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d68565b005b3480156102db57600080fd5b506102e4610fce565b604051808215151515815260200191505060405180910390f35b34801561030a57600080fd5b50610313610fe4565b6040518082815260200191505060405180910390f35b34801561033557600080fd5b50610394600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ff1565b005b3480156103a257600080fd5b506103c16004803603810190808035906020019092919050505061105e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561040f57600080fd5b5061042e6004803603810190808035906020019092919050505061109b565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390f35b34801561049157600080fd5b5061049a6110df565b005b3480156104a857600080fd5b506104b16112ef565b005b3480156104bf57600080fd5b506105086004803603810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611728565b005b34801561051657600080fd5b5061054b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118e1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058e578082015181840152602081019050610573565b505050509050019250505060405180910390f35b3480156105ae57600080fd5b506105cd600480360381019080803590602001909291905050506119e1565b6040518082815260200191505060405180910390f35b3480156105ef57600080fd5b5061060e600480360381019080803590602001909291905050506119fb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561065c57600080fd5b5061067b60048036038101908080359060200190929190505050611a38565b6040518082815260200191505060405180910390f35b34801561069d57600080fd5b506106d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b11565b6040518082815260200191505060405180910390f35b3480156106f457600080fd5b506106fd611ba0565b005b61073d60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c18565b005b34801561074b57600080fd5b506107546121ff565b005b34801561076257600080fd5b506107a160048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123ac565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156107d157600080fd5b506107da6124c1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561082857600080fd5b5061086760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124e6565b6040518082815260200191505060405180910390f35b34801561088957600080fd5b50610892612541565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108d25780820151818401526020810190506108b7565b50505050905090810190601f1680156108ff5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561091957600080fd5b5061092261257e565b005b34801561093057600080fd5b5061096f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061294e565b005b34801561097d57600080fd5b5061099c600480360381019080803590602001909291905050506129ba565b6040518082815260200191505060405180910390f35b3480156109be57600080fd5b50610a1560048036038101908080359060200190820180359060200191909192939192939080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129d7565b005b348015610a2357600080fd5b50610a58600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a77565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610aa657600080fd5b50610ac560048036038101908080359060200190929190505050612ae0565b604051808381526020018281526020019250505060405180910390f35b348015610aee57600080fd5b50610b23600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b04565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b7157600080fd5b50610b7a612b37565b604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390f35b348015610c1e57600080fd5b50610c3d60048036038101908080359060200190929190505050612bc3565b6040518082815260200191505060405180910390f35b348015610c5f57600080fd5b50610c94600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cd4565b005b348015610ca257600080fd5b50610cd7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e29565b6040518088815260200187815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390f35b600080610d23836129ba565b119050919050565b60606040805190810160405280600e81526020017f5375706572436f756e7472696573000000000000000000000000000000000000815250905090565b600060149054906101000a900460ff161515610d8357600080fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515610dbe57600080fd5b610dc781610d17565b1515610dd257600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16610df2826119fb565b73ffffffffffffffffffffffffffffffffffffffff16141515610e1457600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff161415610f125760006009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610f0d576009600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560003373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35b610fca565b816009600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35b5050565b60008060149054906101000a900460ff16905090565b6000600580549050905090565b600060149054906101000a900460ff16151561100c57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff1661102c8261105e565b73ffffffffffffffffffffffffffffffffffffffff1614151561104e57600080fd5b611059838383612ff8565b505050565b60006009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000806000806110aa856119fb565b6110b3866129ba565b60086000888152602001908152602001600020546110d0886119e1565b93509350935093509193509193565b600080600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151561111e57600080fd5b600061112933611b11565b11151561113557600080fd5b600060106000601154815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411151561119657600080fd5b3391506011546012541415156111b0576011546012819055505b60106000601154815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600060106000601154815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156112a3573d6000803e3d6000fd5b50601154818373ffffffffffffffffffffffffffffffffffffffff167fdf273cb619d95419a9cd0ec88123a0538c85064229baa6363788f743fff90deb60405160405180910390a45050565b60008060008073ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156113a15750600073ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15156113ac57600080fd5b6305f5e1003073ffffffffffffffffffffffffffffffffffffffff16311115156113d557600080fd5b601554421115156113e557600080fd5b60155492506011600081548092919060010191905055503073ffffffffffffffffffffffffffffffffffffffff1631915061142a6004836131d490919063ffffffff16565b90506000600d8190555061143c6131ef565b806010600060115481526020019081526020016000206000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806010600060115481526020019081526020016000206000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550601154601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7d52b961c8da712caedc7332724540baef718e9ef738de74e08dafcdfb4d923b856010600060115481526020019081526020016000206000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546010600060115481526020019081526020016000206000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405180848152602001838152602001828152602001935050505060405180910390a460115483427f47b47b8c7743492a3f458380fb4e05eea566f4535b9d8432c9b37bc12fc8a0d0600d54601254604051808381526020018281526020019250505060405180910390a4505050565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561178357600080fd5b60008211151561179257600080fd5b600060076000858152602001908152602001600020541415156117b457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166006600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561182257600080fd5b806006600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160076000858152602001908152602001600020819055506000600860008581526020019081526020016000208190555060058390806001815401808255809150509060018203906000526020600020016000909192909190915055506118db8383613235565b50505050565b6060806000806118f085611b11565b60405190808252806020026020018201604052801561191e5781602001602082028038833980820191505090505b50925060009150600090505b6005805490508110156119d6578473ffffffffffffffffffffffffffffffffffffffff1661197060058381548110151561196057fe5b90600052602060002001546119fb565b73ffffffffffffffffffffffffffffffffffffffff1614156119c95760058181548110151561199b57fe5b906000526020600020015483838151811015156119b457fe5b90602001906020020181815250506001820191505b808060010191505061192a565b829350505050919050565b60006119f46119ef836129ba565b612bc3565b9050919050565b60006006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600154821015611a7257611a6b6064611a5d60058561325c90919063ffffffff16565b6131d490919063ffffffff16565b9050611b0c565b600254821015611aaa57611aa36064611a9560048561325c90919063ffffffff16565b6131d490919063ffffffff16565b9050611b0c565b600454821015611ae257611adb6064611acd60038561325c90919063ffffffff16565b6131d490919063ffffffff16565b9050611b0c565b611b096064611afb60028561325c90919063ffffffff16565b6131d490919063ffffffff16565b90505b919050565b6000806000809150600090505b600580549050811015611b96578373ffffffffffffffffffffffffffffffffffffffff16611b64600583815481101515611b5457fe5b90600052602060002001546119fb565b73ffffffffffffffffffffffffffffffffffffffff161415611b895781806001019250505b8080600101915050611b1e565b8192505050919050565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611bfb57600080fd5b6001600060146101000a81548160ff021916908315150217905550565b600080600080600080600080600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515611c6057600080fd5b6000611c6b8b6129ba565b111515611c7757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16611c988b6119fb565b73ffffffffffffffffffffffffffffffffffffffff1614151515611cbb57600080fd5b611cc48a6129ba565b3410151515611cd257600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16611cf28b6119fb565b73ffffffffffffffffffffffffffffffffffffffff1614151515611d1557600080fd5b611d1e33613297565b151515611d2a57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515611d8657600080fd5b601554421080611dab5750611da8610e106015546132aa90919063ffffffff16565b42115b1515611db657600080fd5b611dbf8a6119fb565b9750339650611dcd8a6129ba565b9550611dd9878a6132c8565b611de5868b8a8a613479565b611def8a87613a9d565b611df76131ef565b611e0086611a38565b9450611e3a600860008c815260200190815260200160002054611e2c8789613ae990919063ffffffff16565b613ae990919063ffffffff16565b9350611e636064611e55601e8761325c90919063ffffffff16565b6131d490919063ffffffff16565b9250611eb0611e8f6064611e8160238861325c90919063ffffffff16565b6131d490919063ffffffff16565b611ea28789613ae990919063ffffffff16565b613ae990919063ffffffff16565b9150611ebc8885613b02565b90508083039250601660008b81526020019081526020016000206002015486118015611eea5750620f424083115b8015611ef857506000600b54115b15611f5857611f2e8a87611f296064611f1b60148961325c90919063ffffffff16565b6131d490919063ffffffff16565b613d83565b611f556064611f4760508661325c90919063ffffffff16565b6131d490919063ffffffff16565b92505b6000600b541115611f9c57611f8c600b54611f7e8560185461325c90919063ffffffff16565b6131d490919063ffffffff16565b600d600082825401925050819055505b611fa78a8888614067565b85601760008c815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555085600860008c8152602001908152602001600020819055506120268a6119e1565b600760008c8152602001908152602001600020819055508773ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612083573d6000803e3d6000fd5b506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f193505050501580156120eb573d6000803e3d6000fd5b506120f788888c612ff8565b8673ffffffffffffffffffffffffffffffffffffffff168a7fd2728f908c7e0feb83c6278798370fcb86b62f236c9dbf1a3f541096c2159040886040518082815260200191505060405180910390a38773ffffffffffffffffffffffffffffffffffffffff168a7f66f5cd880edf48cdde6c966e5da0784fcc4c5e85572b8b3b62c4357798d447d7886040518082815260200191505060405180910390a361219f8787614164565b897fc2d38df9d158fa63a4d22026daa0c1962b6e04743f50d7551dfdc0fe8b4d140484600d5489600b546040518085815260200184815260200183815260200182815260200194505050505060405180910390a250505050505050505050565b60003373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561225c57600080fd5b61227260036012546132aa90919063ffffffff16565b60115411801561228457506000600d54145b806122a957506305f5e1013073ffffffffffffffffffffffffffffffffffffffff1631105b15156122b457600080fd5b60003073ffffffffffffffffffffffffffffffffffffffff16311115156122da57600080fd5b6011600081548092919060010191905055506122f46131ef565b3073ffffffffffffffffffffffffffffffffffffffff163190506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612375573d6000803e3d6000fd5b50806012546011547f23852d00014f909bc66902f9565357935dbd78450e7e9a46b8caa5accbc8285160405160405180910390a450565b600080600080600080600e600089815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549250600f600089815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491506010600089815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508282829550955095505050509250925092565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006017600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60606040805190810160405280600381526020017f5355500000000000000000000000000000000000000000000000000000000000815250905090565b600080600080600080600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515156125c357600080fd5b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411151561261157600080fd5b600f6000601154815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d541015151561267457600080fd5b6000600d541015151561268657600080fd5b339550600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549450600f6000601154815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549350600e6000601154815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492506127b06018546127a261279387600d54613ae990919063ffffffff16565b8861325c90919063ffffffff16565b6131d490919063ffffffff16565b91506127c582846132aa90919063ffffffff16565b90506000600e6000601154815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d54600f6000601154815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060106000601154815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508573ffffffffffffffffffffffffffffffffffffffff167f4324e1fbcfc75073846dc7188f546ae390ff4c589a22422c75df55c26ed59bdc8484848989604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a2505050505050565b600060149054906101000a900460ff16151561296957600080fd5b612972816119fb565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129ab57600080fd5b6129b6338383612ff8565b5050565b600060076000838152602001908152602001600020549050919050565b60003373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612a3457600080fd5b600090505b84849050811015612a7057612a638585838181101515612a5557fe5b905060200201358484611728565b8080600101915050612a39565b5050505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60166020528060005260406000206000915090508060010154908060020154905082565b600a6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000806000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1631601254600b54601154601554965096509650965096509650965090919293949596565b6000600154821015612bfd57612bf6605f612be860c88561325c90919063ffffffff16565b6131d490919063ffffffff16565b9050612ccf565b600254821015612c3557612c2e6060612c2060a08561325c90919063ffffffff16565b6131d490919063ffffffff16565b9050612ccf565b600354821015612c6d57612c666061612c5860948561325c90919063ffffffff16565b6131d490919063ffffffff16565b9050612ccf565b600454821015612ca557612c9e6061612c9060888561325c90919063ffffffff16565b6131d490919063ffffffff16565b9050612ccf565b612ccc6062612cbe607c8561325c90919063ffffffff16565b6131d490919063ffffffff16565b90505b919050565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612d2f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612d6b57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806000806000806000806000806000806000600e6000601154815260200190815260200160002060008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549550600c60008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549450600f6000601154815260200190815260200160002060008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549350612f64601854612f56612f4787600d54613ae990919063ffffffff16565b8861325c90919063ffffffff16565b6131d490919063ffffffff16565b9250612f7983876132aa90919063ffffffff16565b915060106000601154815260200190815260200160002060008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050858383838888600d549c509c509c509c509c509c509c50505050505050919395979092949650565b61300181610d17565b151561300c57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1661302c826119fb565b73ffffffffffffffffffffffffffffffffffffffff1614151561304e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561308a57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156130c557600080fd5b816006600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006009600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008082848115156131e257fe5b0490508091505092915050565b61322d61320961708060115461325c90919063ffffffff16565b61321f62093a80426132aa90919063ffffffff16565b6132aa90919063ffffffff16565b601581905550565b60008160166000858152602001908152602001600020600201819055506001905092915050565b60008060008414156132715760009150613290565b828402905082848281151561328257fe5b0414151561328c57fe5b8091505b5092915050565b600080823b905060008111915050919050565b60008082840190508381101515156132be57fe5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff166132e983612a77565b73ffffffffffffffffffffffffffffffffffffffff1614801561333857508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561334c5750600061334a82611b11565b115b801561339757506000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156134755780600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fb450fc051a97f4be9c19179858075d55dcd18451137b75b621aa642ebceadb3760405160405180910390a35b5050565b600080600060086000878152602001908152602001600020549250828711151561349f57fe5b613506600f6000601154815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d54613ae990919063ffffffff16565b9150600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156135a8575060008210155b80156135b357508281115b156136e5576135df6018546135d1848461325c90919063ffffffff16565b6131d490919063ffffffff16565b600e6000601154815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555082600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550600d54600f6000601154815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61374c600f6000601154815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d54613ae990919063ffffffff16565b9150600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000821015156138da576137c16018546137b3848461325c90919063ffffffff16565b6131d490919063ffffffff16565b600e6000601154815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555061383460028861325c90919063ffffffff16565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600d54600f6000601154815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600c6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115613a535783601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555043428573ffffffffffffffffffffffffffffffffffffffff167f67cd21f46fbb7e468ddcd4e93dcf0fc228d9df2f5669959539eb8adb39cc0564600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a45b83601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505050565b613ad66008600084815260200190815260200160002054613ac860028461325c90919063ffffffff16565b613ae990919063ffffffff16565b600b600082825401925050819055505050565b6000828211151515613af757fe5b818303905092915050565b6000806000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915060008273ffffffffffffffffffffffffffffffffffffffff16141515613cfc57613bb16103e8613ba360198761325c90919063ffffffff16565b6131d490919063ffffffff16565b925082600e6000601154815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff16141515613cfb5782600e6000601154815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555082830192505b5b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f79937abffcfdfa40d3f12bf61cd7a05b3cbd14369ebfe8a5a5a35d8d14b4d384866040518082815260200191505060405180910390a4829250505092915050565b600080600080600080600080613db66064613da860058d61325c90919063ffffffff16565b6131d490919063ffffffff16565b89101515613dc357600080fd5b6000601660008d815260200190815260200160002060010154111515613de857600080fd5b601660008c8152602001908152602001600020975087600101549650613e2b87613e1d6018548c61325c90919063ffffffff16565b6131d490919063ffffffff16565b955060009450600093505b876000018054905084108015613e4b57508885105b15613ff7578760000184815481101515613e6157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250601760008c815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150613f08601854613efa888561325c90919063ffffffff16565b6131d490919063ffffffff16565b905088613f1e82876132aa90919063ffffffff16565b111515613fea5780600e6000601154815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508085019450613fe9818385600e6000601154815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548f6141d1565b5b8380600101945050613e36565b868b7fceb4b13ccc641c5bc314f7f19734f73e88b54f41fb9651e44e59ffaabcf02cdd8b8861402f8a8f613ae990919063ffffffff16565b8b6040518085815260200184815260200183815260200182815260200194505050505060405180910390a35050505050505050505050565b80601660008581526020019081526020016000206001016000828254019250508190555060006017600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561415f57601660008481526020019081526020016000206000018290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b505050565b60006141798234613ae990919063ffffffff16565b905060008111156141cc578273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156141ca573d6000803e3d6000fd5b505b505050565b808373ffffffffffffffffffffffffffffffffffffffff16857f4cda2925eea274e308d19b94cf807a899810844448d5959cbbdd21b2c5d64bdd8886604051808381526020018281526020019250505060405180910390a450505050505600a165627a7a72305820b191ed1a8bdcdc035763bb752add4a85ba678083b74d57e4430ece4780fc1f660029

Swarm Source

bzzr://b191ed1a8bdcdc035763bb752add4a85ba678083b74d57e4430ece4780fc1f66

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.