ETH Price: $1,802.25 (-1.39%)

Contract

0xd6995ab4Dc3425297d6C7e1CD7Eebe97e75740Ad
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Zero Out68467582018-12-08 5:04:092304 days ago1544245449IN
0xd6995ab4...7e75740Ad
0 ETH0.0001547110
User Withdraw62719492018-09-04 19:10:352399 days ago1536088235IN
0xd6995ab4...7e75740Ad
0 ETH0.016254
Dev Withdraw62719372018-09-04 19:07:452399 days ago1536088065IN
0xd6995ab4...7e75740Ad
0 ETH0.0012260154
User Withdraw62719292018-09-04 19:05:312399 days ago1536087931IN
0xd6995ab4...7e75740Ad
0 ETH0.016254
User Withdraw62686122018-09-04 5:38:212399 days ago1536039501IN
0xd6995ab4...7e75740Ad
0 ETH0.0035
User Withdraw62571442018-09-02 7:36:122401 days ago1535873772IN
0xd6995ab4...7e75740Ad
0 ETH0.00366
User Withdraw62462972018-08-31 11:25:152403 days ago1535714715IN
0xd6995ab4...7e75740Ad
0 ETH0.007813
Transfer62462882018-08-31 11:23:362403 days ago1535714616IN
0xd6995ab4...7e75740Ad
0 ETH0.000168368
User Withdraw62462772018-08-31 11:20:352403 days ago1535714435IN
0xd6995ab4...7e75740Ad
0 ETH0.00366
User Withdraw62445092018-08-31 4:12:082403 days ago1535688728IN
0xd6995ab4...7e75740Ad
0 ETH0.000538048
User Withdraw62422912018-08-30 19:25:102404 days ago1535657110IN
0xd6995ab4...7e75740Ad
0 ETH0.000188412.79
User Withdraw62419082018-08-30 17:52:242404 days ago1535651544IN
0xd6995ab4...7e75740Ad
0 ETH0.000269412.4
User Withdraw62409602018-08-30 14:04:102404 days ago1535637850IN
0xd6995ab4...7e75740Ad
0 ETH0.000201763
User Withdraw62407572018-08-30 13:12:102404 days ago1535634730IN
0xd6995ab4...7e75740Ad
0 ETH0.000220465.5
User Withdraw62404822018-08-30 11:55:092404 days ago1535630109IN
0xd6995ab4...7e75740Ad
0 ETH0.000336763
User Withdraw62404822018-08-30 11:55:092404 days ago1535630109IN
0xd6995ab4...7e75740Ad
0 ETH0.000337593
User Withdraw62402312018-08-30 10:55:232404 days ago1535626523IN
0xd6995ab4...7e75740Ad
0 ETH0.000450124
User Withdraw62401562018-08-30 10:35:552404 days ago1535625355IN
0xd6995ab4...7e75740Ad
0 ETH0.000202593
User Withdraw62401412018-08-30 10:32:182404 days ago1535625138IN
0xd6995ab4...7e75740Ad
0 ETH0.000269024
User Withdraw62396562018-08-30 8:36:342404 days ago1535618194IN
0xd6995ab4...7e75740Ad
0 ETH0.000337593
User Withdraw62395422018-08-30 8:10:232404 days ago1535616623IN
0xd6995ab4...7e75740Ad
0 ETH0.000673536
User Withdraw62393892018-08-30 7:26:012404 days ago1535613961IN
0xd6995ab4...7e75740Ad
0 ETH0.000281762.51
User Withdraw62391732018-08-30 6:31:142404 days ago1535610674IN
0xd6995ab4...7e75740Ad
0 ETH0.000336763
User Withdraw62391442018-08-30 6:24:022404 days ago1535610242IN
0xd6995ab4...7e75740Ad
0 ETH0.0003435.1
User Withdraw62390002018-08-30 5:45:432404 days ago1535607943IN
0xd6995ab4...7e75740Ad
0 ETH0.000225062
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
-68467582018-12-08 5:04:092304 days ago1544245449
0xd6995ab4...7e75740Ad
1.00802636 ETH
Transfer62491312018-08-31 22:59:312403 days ago1535756371
0xd6995ab4...7e75740Ad
0.01 ETH
Transfer62491132018-08-31 22:54:162403 days ago1535756056
0xd6995ab4...7e75740Ad
0 ETH
Transfer62445092018-08-31 4:12:082403 days ago1535688728
0xd6995ab4...7e75740Ad
0.68824132 ETH
Transfer62422912018-08-30 19:25:102404 days ago1535657110
0xd6995ab4...7e75740Ad
0.00140713 ETH
Transfer62419082018-08-30 17:52:242404 days ago1535651544
0xd6995ab4...7e75740Ad
0.01769259 ETH
Transfer62409602018-08-30 14:04:102404 days ago1535637850
0xd6995ab4...7e75740Ad
0.39442402 ETH
Transfer62404822018-08-30 11:55:092404 days ago1535630109
0xd6995ab4...7e75740Ad
1.0069469 ETH
Transfer62404822018-08-30 11:55:092404 days ago1535630109
0xd6995ab4...7e75740Ad
0.12463374 ETH
Transfer62402312018-08-30 10:55:232404 days ago1535626523
0xd6995ab4...7e75740Ad
0.03908856 ETH
Transfer62401562018-08-30 10:35:552404 days ago1535625355
0xd6995ab4...7e75740Ad
0.00264943 ETH
Transfer62401412018-08-30 10:32:182404 days ago1535625138
0xd6995ab4...7e75740Ad
0.77753056 ETH
Transfer62396562018-08-30 8:36:342404 days ago1535618194
0xd6995ab4...7e75740Ad
0.0870366 ETH
Transfer62395422018-08-30 8:10:232404 days ago1535616623
0xd6995ab4...7e75740Ad
0.1015623 ETH
Transfer62393892018-08-30 7:26:012404 days ago1535613961
0xd6995ab4...7e75740Ad
0.00884629 ETH
Transfer62391732018-08-30 6:31:142404 days ago1535610674
0xd6995ab4...7e75740Ad
0.00884629 ETH
Transfer62391442018-08-30 6:24:022404 days ago1535610242
0xd6995ab4...7e75740Ad
0.06174093 ETH
Transfer62390002018-08-30 5:45:432404 days ago1535607943
0xd6995ab4...7e75740Ad
0.03982314 ETH
Transfer62388952018-08-30 5:20:442404 days ago1535606444
0xd6995ab4...7e75740Ad
0.18551708 ETH
Transfer62387682018-08-30 4:50:012404 days ago1535604601
0xd6995ab4...7e75740Ad
0.00023122 ETH
Transfer62386902018-08-30 4:34:272404 days ago1535603667
0xd6995ab4...7e75740Ad
0.03131638 ETH
Transfer62386802018-08-30 4:32:062404 days ago1535603526
0xd6995ab4...7e75740Ad
0.00679188 ETH
Transfer62386622018-08-30 4:28:282404 days ago1535603308
0xd6995ab4...7e75740Ad
0.02211574 ETH
Transfer62386052018-08-30 4:13:132404 days ago1535602393
0xd6995ab4...7e75740Ad
0.02211574 ETH
Transfer62385772018-08-30 4:07:122404 days ago1535602032
0xd6995ab4...7e75740Ad
10.17268644 ETH
View All Internal Transactions
Loading...
Loading
Contract Self Destruct called at Txn Hash 0x502465e23db9665a1c70576fff7ecb188a1c2051bd6efbb39c5db927df5254f3


Contract Source Code Verified (Exact Match)

Contract Name:
ZEROxRACER

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-08-26
*/

// 0xRACER is a brand new team-based pot lottery game. 
// Users are grouped into teams based on the first byte of their address.
// Team One: 0x0..., 0x1..., 0x2..., 0x3..., 0x4..., 0x5..., 0x6..., 0x7...
// Team Two: 0x8..., 0x9..., 0xa..., 0xb..., 0xc..., 0xd..., 0xe..., 0x0...

// DISCLAIMER: This is an experimental game in distributed psychology and distributed technology.
// DISCLAIMER: You can, and likely will, lose any ETH you send to this contract. Don't send more than you can afford to lose. Or any at all.

// RULES:

// 1. The team with the highest buy volume when the clock expires wins the pot.
// 2. The pot is divided among the winning team members, proportional to a weighted share of team volume. 
// 3. Each team has a different share price that increases at a rate of 102% per ETH of buy volume.
// 4. Every new buy adds time to the clock at the rate of 1 second/finney. The timer is capped at 24h.
// 5. You can also reduce the clock at the rate of 1 second/finney, but this does not count towards your share. The timer can't go below 5 minutes with this method.
// 6. Referrals and dividends are distributed by team. 50% of each new buy is proportionally split between that team's members.
// 7. New seeded rounds with new teams will begin on a semi-regular basis based on user interest. Each game will use a new contract.
// 8. In the unlikely event of a tie, the pot is distributed proportionally as weighted shares of total volume.
// 9. The minimum buy starts at 1 finney and increases with share price. No maximum.
// 10. There is no maximum buy, but large buys receive proportionally fewer shares. For example: 1 x 100 ETH buy (33,333 shares) vs. 100 x 1 ETH (55,265 shares).
// 10. No contracts allowed.
// 11. Users can withdraw earned dividends from referrals or pot wins at any time. Shares cannot be sold.
// 12. The round will automatically open based on a preset timer.
// 13. The contract will be closed no sooner than 100 days after the round ends. Any unclaimed user funds left past this time may be lost.

// STRATEGY:

// A. This game is designed to support multiple modes of play.
// B. Get in early and shill your team to collect divs.
// C. Manage risk by playing both sides of the fence.
// D. Flex your whale wallet by front running and reducing the timer.
// E. Piggy back on big players by making sure you're on the same team.
// F. Gain a larger share of divs by supporting the underdog.
// G. Buy smaller amounts to maximize your share count.

// https://zeroxracer.surge.sh/
// https://discord.gg/6Q7kGpc
// by nightman

pragma solidity ^0.4.24;

contract ZEROxRACER {

    //VARIABLES AND CONSTANTS

    //global 
    address public owner;
    uint256 public devBalance;
    uint256 public devFeeRate = 4; //4% of pot, not volume; effective dev fee, including premine, is ~2.5-3.5% depending on volume
    uint256 public precisionFactor = 6; //shares precise to 0.0001%
    address public addressThreshold = 0x7F00000000000000000000000000000000000000; //0x00-0x7f on Team One; 0x80-0xff on Team Two
    uint256 public divRate = 50; //50% dividends for each buy, distributed proportionally to weighted team volume

    //team accounting
    uint256 public teamOneId = 1; 
    string public teamOnePrefix = "Team 0x1234567";
    uint256 public teamOneVolume;
    uint256 public teamOneShares;
    uint256 public teamOneDivsTotal;
    uint256 public teamOneDivsUnclaimed;
    uint256 public teamOneSharePrice = 1000000000000000; //1 finney starting price; increases 102% per ETH bought


    uint256 public teamTwoId = 2;
    string public teamTwoPrefix = "Team 0x89abcdef";
    uint256 public teamTwoVolume;
    uint256 public teamTwoShares;
    uint256 public teamTwoDivsTotal;
    uint256 public teamTwoDivsUnclaimed;
    uint256 public teamTwoSharePrice = 1000000000000000; //1 finney starting price; increases 102% per ETH bought

    //user accounting
    address[] public teamOneMembers;
    mapping (address => bool) public isTeamOneMember;
    mapping (address => uint256) public userTeamOneStake;
    mapping (address => uint256) public userTeamOneShares;
    mapping (address => uint256) private userDivsTeamOneTotal;
    mapping (address => uint256) private userDivsTeamOneClaimed;
    mapping (address => uint256) private userDivsTeamOneUnclaimed;
    mapping (address => uint256) private userDivRateTeamOne;
    
    address[] public teamTwoMembers;
    mapping (address => bool) public isTeamTwoMember;
    mapping (address => uint256) public userTeamTwoStake;
    mapping (address => uint256) public userTeamTwoShares;
    mapping (address => uint256) private userDivsTeamTwoTotal;
    mapping (address => uint256) private userDivsTeamTwoClaimed;
    mapping (address => uint256) private userDivsTeamTwoUnclaimed;
    mapping (address => uint256) private userDivRateTeamTwo;

    //round accounting
    uint256 public pot;
    uint256 public timerStart;
    uint256 public timerMax;
    uint256 public roundStartTime;
    uint256 public roundEndTime;
    bool public roundOpen = false;
    bool public roundSetUp = false;
    bool public roundResolved = false;
    

    //CONSTRUCTOR

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

    //MODIFIERS

    modifier onlyOwner() { 
        require (msg.sender == owner, "you are not the owner"); 
        _; 
    }

    modifier gameOpen() {
        require (roundResolved == false);
        require (roundSetUp == true);
        require (now < roundEndTime, "it is too late to play");
        require (now >= roundStartTime, "it is too early to play");
        _; 
    }

    modifier onlyHumans() { 
        require (msg.sender == tx.origin, "you cannot use a contract"); 
        _; 
    }
    

    //EVENTS

    event potFunded(
        address _funder, 
        uint256 _amount,
        string _message
    );
    
    event teamBuy(
        address _buyer, 
        uint256 _amount, 
        uint256 _teamID,
        string _message
    );
    
    event roundEnded(
        uint256 _winningTeamId, 
        string _winningTeamString, 
        uint256 _pot,
        string _message
    );
    
    event newRoundStarted(
        uint256 _timeStart, 
        uint256 _timeMax,
        uint256 _seed,
        string _message
    );

    event userWithdrew(
        address _user,
        uint256 _teamID,
        uint256 _teamAmount,
        string _message
    );

    event devWithdrew(
        address _owner,
        uint256 _amount, 
        string _message
    );

    event contractClosed(
        address _owner,
        uint256 _amount,
        string _message
    );

    event contractLaunched(
        address _owner
    );


    //DEV FUNCTIONS

    //start round
    function openRound (uint _timerStart, uint _timerMax) public payable onlyOwner() {
        require (roundOpen == false, "you can only start the game once");
        require (roundResolved == false, "you cannot restart a finished game"); 
        require (msg.value == 2 ether, "you must give a decent seed");

        //round set up
        roundSetUp = true;
        timerStart = _timerStart;
        timerMax = _timerMax;
        roundStartTime = 1535504400; //Tuesday, August 28, 2018 9:00:00 PM Eastern Time
        roundEndTime = 1535504400 + timerStart;
        pot += msg.value;

        //the seed is also a sneaky premine
        //set up correct accounting for 1 ETH buy to each team without calling buy()
        address devA = 0x5C035Bb4Cb7dacbfeE076A5e61AA39a10da2E956;
        address devB = 0x84ECB387395a1be65E133c75Ff9e5FCC6F756DB3;
        teamOneVolume = 1 ether;
        teamTwoVolume = 1 ether;
        teamOneMembers.push(devA);
        teamTwoMembers.push(devB);
        isTeamOneMember[devA] = true;
        isTeamOneMember[devB] = true;
        userTeamOneStake[devA] = 1 ether;
        userTeamTwoStake[devB] = 1 ether;
        userTeamOneShares[devA] = 1000;
        userTeamTwoShares[devB] = 1000;
        teamOneShares = 1000;
        teamTwoShares = 1000;

        emit newRoundStarted(timerStart, timerMax, msg.value, "a new game was just set up");
    }

    //dev withdraw
    function devWithdraw() public onlyOwner() {
        require (devBalance > 0, "you must have an available balance");
        require(devBalance <= address(this).balance, "you cannot print money");

        uint256 shareTemp = devBalance;
        devBalance = 0;
        owner.transfer(shareTemp);

        emit devWithdrew(owner, shareTemp, "the dev just withdrew");
    }

    //close contract 
    //this function allows the dev to collect any wei dust from rounding errors no sooner than 100 days after the game ends
    //wei dust will be at most (teamOneVolume + teamTwoVolume) / 10 ** precisionFactor (ie, 0.0001% of the total buy volume)
    //users must withdraw any earned divs before this date, or risk losing them
    function zeroOut() public onlyOwner() { 
        require (now >= roundEndTime + 100 days, "too early to exit scam"); 
        require (roundResolved == true && roundOpen == false, "the game is not resolved");

        emit contractClosed(owner, address(this).balance, "the contract is now closed");

        selfdestruct(owner);
    }


    //PUBLIC FUNCTIONS

    function buy() public payable gameOpen() onlyHumans() { 

        //toggle roundOpen on first buy after roundStartTime
        if (roundOpen == false && now >= roundStartTime && now < roundEndTime) {
            roundOpen = true;
        }
        
        //establish team affiliation 
        uint256 _teamID;
        if (checkAddressTeamOne(msg.sender) == true) {
            _teamID = 1;
        } else if (checkAddressTeamTwo(msg.sender) == true) {
            _teamID = 2;
        }

        //adjust pot and div balances
        if (_teamID == 1 && teamOneMembers.length == 0 || _teamID == 2 && teamTwoMembers.length == 0) { 
            //do not distribute divs on first buy from either team. prevents black-holed ether
            //redundant if openRound() includes a premine
            pot += msg.value;
        } else {
            uint256 divContribution = uint256(SafeMaths.div(SafeMaths.mul(msg.value, divRate), 100)); 
            uint256 potContribution = msg.value - divContribution;
            pot += potContribution; 
            distributeDivs(divContribution, _teamID); 
        }

        //adjust time 
        timeAdjustPlus();

        //update team and player accounting 
        if (_teamID == 1) {
            require (msg.value >= teamOneSharePrice, "you must buy at least one Team One share");

            if (isTeamOneMember[msg.sender] == false) {
                isTeamOneMember[msg.sender] = true;
                teamOneMembers.push(msg.sender);
            }

            userTeamOneStake[msg.sender] += msg.value;
            teamOneVolume += msg.value;

            //adjust team one share price
            uint256 shareIncreaseOne = SafeMaths.mul(SafeMaths.div(msg.value, 100000), 2); //increases 102% per ETH spent
            teamOneSharePrice += shareIncreaseOne;

            uint256 newSharesOne = SafeMaths.div(msg.value, teamOneSharePrice);
            userTeamOneShares[msg.sender] += newSharesOne;
            teamOneShares += newSharesOne;

        } else if (_teamID == 2) {
            require (msg.value >= teamTwoSharePrice, "you must buy at least one Team Two share");

            if (isTeamTwoMember[msg.sender] == false) {
                isTeamTwoMember[msg.sender] = true;
                teamTwoMembers.push(msg.sender);
            }

            userTeamTwoStake[msg.sender] += msg.value;
            teamTwoVolume += msg.value;

            //adjust team two share price
            uint256 shareIncreaseTwo = SafeMaths.mul(SafeMaths.div(msg.value, 100000), 2); //increases 102% per ETH spent
            teamTwoSharePrice += shareIncreaseTwo;

            uint256 newSharesTwo = SafeMaths.div(msg.value, teamTwoSharePrice);
            userTeamTwoShares[msg.sender] += newSharesTwo;
            teamTwoShares += newSharesTwo;
        }
    
        emit teamBuy(msg.sender, msg.value, _teamID, "a new buy just happened");
    }  

    function resolveRound() public onlyHumans() { 

        //can be called by anyone if the round has ended 
        require (now > roundEndTime, "you can only call this if time has expired");
        require (roundSetUp == true, "you cannot call this before the game starts");
        require (roundResolved == false, "you can only call this once");

        //resolve round based on current winner 
        if (teamOneVolume > teamTwoVolume) {
            teamOneWin();
        } else if (teamOneVolume < teamTwoVolume) {
            teamTwoWin();
        } else if (teamOneVolume == teamTwoVolume) {
            tie();
        }

        //ensure this function can only be called once
        roundResolved = true; 
        roundOpen = false;
    }

    function userWithdraw() public onlyHumans() {

        //user divs calculated on withdraw to prevent runaway gas costs associated with looping balance updates in distributeDivs
        if (userTeamOneShares[msg.sender] > 0) { 

            //first, calculate total earned user divs as a proportion of their shares vs. team shares
            //second, determine whether the user has available divs 
            //precise to 0.0001%
            userDivRateTeamOne[msg.sender] = SafeMaths.div(SafeMaths.div(SafeMaths.mul(userTeamOneShares[msg.sender], 10 ** (precisionFactor + 1)), teamOneShares) + 5, 10);
            userDivsTeamOneTotal[msg.sender] = uint256(SafeMaths.div(SafeMaths.mul(teamOneDivsTotal, userDivRateTeamOne[msg.sender]), 10 ** precisionFactor));
            userDivsTeamOneUnclaimed[msg.sender] = SafeMaths.sub(userDivsTeamOneTotal[msg.sender], userDivsTeamOneClaimed[msg.sender]);

            if (userDivsTeamOneUnclaimed[msg.sender] > 0) {
                //sanity check
                assert(userDivsTeamOneUnclaimed[msg.sender] <= address(this).balance && userDivsTeamOneUnclaimed[msg.sender] <= teamOneDivsUnclaimed);

                //update user accounting and transfer
                teamOneDivsUnclaimed -= userDivsTeamOneUnclaimed[msg.sender];
                userDivsTeamOneClaimed[msg.sender] = userDivsTeamOneTotal[msg.sender];
                uint256 shareTempTeamOne = userDivsTeamOneUnclaimed[msg.sender];
                userDivsTeamOneUnclaimed[msg.sender] = 0;
                msg.sender.transfer(shareTempTeamOne);

                emit userWithdrew(msg.sender, 1, shareTempTeamOne, "a user just withdrew team one shares");
            }

        }  else if (userTeamTwoShares[msg.sender] > 0) {

            //first, calculate total earned user divs as a proportion of their shares vs. team shares
            //second, determine whether the user has available divs 
            //precise to 0.0001%
            userDivRateTeamTwo[msg.sender] = SafeMaths.div(SafeMaths.div(SafeMaths.mul(userTeamTwoShares[msg.sender], 10 ** (precisionFactor + 1)), teamTwoShares) + 5, 10);
            userDivsTeamTwoTotal[msg.sender] = uint256(SafeMaths.div(SafeMaths.mul(teamTwoDivsTotal, userDivRateTeamTwo[msg.sender]), 10 ** precisionFactor));
            userDivsTeamTwoUnclaimed[msg.sender] = SafeMaths.sub(userDivsTeamTwoTotal[msg.sender], userDivsTeamTwoClaimed[msg.sender]);

            if (userDivsTeamTwoUnclaimed[msg.sender] > 0) {
                //sanity check
                assert(userDivsTeamTwoUnclaimed[msg.sender] <= address(this).balance && userDivsTeamTwoUnclaimed[msg.sender] <= teamTwoDivsUnclaimed);

                //update user accounting and transfer
                teamTwoDivsUnclaimed -= userDivsTeamTwoUnclaimed[msg.sender];
                userDivsTeamTwoClaimed[msg.sender] = userDivsTeamTwoTotal[msg.sender];
                uint256 shareTempTeamTwo = userDivsTeamTwoUnclaimed[msg.sender];
                userDivsTeamTwoUnclaimed[msg.sender] = 0;
                msg.sender.transfer(shareTempTeamTwo);

                emit userWithdrew(msg.sender, 2, shareTempTeamTwo, "a user just withdrew team one shares");
            }
        }
    }

    function fundPot() public payable onlyHumans() gameOpen() {
        //ETH sent with this function is a benevolent gift. It does not count towards user shares or adjust the clock
        pot += msg.value;
        emit potFunded(msg.sender, msg.value, "a generous person funded the pot");
    }

    function reduceTime() public payable onlyHumans() gameOpen() {
        //ETH sent with this function does not count towards user shares 
        timeAdjustNeg();
        pot += msg.value;
        emit potFunded(msg.sender, msg.value, "someone just reduced the clock");
    }


    //VIEW FUNCTIONS

    function calcUserDivsTotal(address _user) public view returns(uint256 _divs) {

        //calculated locally to avoid unnecessary state change
        if (userTeamOneShares[_user] > 0) {

            uint256 userDivRateTeamOneView = SafeMaths.div(SafeMaths.div(SafeMaths.mul(userTeamOneShares[_user], 10 ** (precisionFactor + 1)), teamOneShares) + 5, 10);
            uint256 userDivsTeamOneTotalView = uint256(SafeMaths.div(SafeMaths.mul(teamOneDivsTotal, userDivRateTeamOneView), 10 ** precisionFactor));

        } else if (userTeamTwoShares[_user] > 0) {

            uint256 userDivRateTeamTwoView = SafeMaths.div(SafeMaths.div(SafeMaths.mul(userTeamTwoShares[_user], 10 ** (precisionFactor + 1)), teamTwoShares) + 5, 10);
            uint256 userDivsTeamTwoTotalView = uint256(SafeMaths.div(SafeMaths.mul(teamTwoDivsTotal, userDivRateTeamTwoView), 10 ** precisionFactor));

        }

        uint256 userDivsTotal = userDivsTeamOneTotalView + userDivsTeamTwoTotalView;
        return userDivsTotal;
    }

    function calcUserDivsAvailable(address _user) public view returns(uint256 _divs) {

        //calculated locally to avoid unnecessary state change
        if (userTeamOneShares[_user] > 0) {

            uint256 userDivRateTeamOneView = SafeMaths.div(SafeMaths.div(SafeMaths.mul(userTeamOneShares[_user], 10 ** (precisionFactor + 1)), teamOneShares) + 5, 10);
            uint256 userDivsTeamOneTotalView = uint256(SafeMaths.div(SafeMaths.mul(teamOneDivsTotal, userDivRateTeamOneView), 10 ** precisionFactor));
            uint256 userDivsTeamOneUnclaimedView = SafeMaths.sub(userDivsTeamOneTotalView, userDivsTeamOneClaimed[_user]);

        } else if (userTeamTwoShares[_user] > 0) {

            uint256 userDivRateTeamTwoView = SafeMaths.div(SafeMaths.div(SafeMaths.mul(userTeamTwoShares[_user], 10 ** (precisionFactor + 1)), teamTwoShares) + 5, 10);
            uint256 userDivsTeamTwoTotalView = uint256(SafeMaths.div(SafeMaths.mul(teamTwoDivsTotal, userDivRateTeamTwoView), 10 ** precisionFactor));
            uint256 userDivsTeamTwoUnclaimedView = SafeMaths.sub(userDivsTeamTwoTotalView, userDivsTeamTwoClaimed[_user]);

        }

        uint256 userDivsUnclaimed = userDivsTeamOneUnclaimedView + userDivsTeamTwoUnclaimedView;
        return userDivsUnclaimed;
    }

    function currentRoundInfo() public view returns(
        uint256 _pot, 
        uint256 _teamOneVolume, 
        uint256 _teamTwoVolume, 
        uint256 _teamOnePlayerCount,
        uint256 _teamTwoPlayerCount,
        uint256 _totalPlayerCount,
        uint256 _timerStart, 
        uint256 _timerMax, 
        uint256 _roundStartTime, 
        uint256 _roundEndTime, 
        uint256 _timeLeft,
        string _currentWinner
    ) {
        return (
            pot, 
            teamOneVolume, 
            teamTwoVolume, 
            teamOneTotalPlayers(), 
            teamTwoTotalPlayers(), 
            totalPlayers(), 
            timerStart, 
            timerMax, 
            roundStartTime, 
            roundEndTime, 
            getTimeLeft(),
            currentWinner()
        );
    }

    function getTimeLeft() public view returns(uint256 _timeLeftSeconds) {
        //game over: display zero
        if (now >= roundEndTime) {
            return 0;
        //game not yet started: display countdown until roundStartTime
        } else if (roundOpen == false && roundResolved == false && roundSetUp == false) {
            return roundStartTime - now;
        //game in progress: display time left 
        } else {
            return roundEndTime - now;
        }
    }
    
    function teamOneTotalPlayers() public view returns(uint256 _teamOnePlayerCount) {
        return teamOneMembers.length;
    }

    function teamTwoTotalPlayers() public view returns(uint256 _teamTwoPlayerCount) {
        return teamTwoMembers.length;
    }

    function totalPlayers() public view returns(uint256 _totalPlayerCount) {
        return teamOneMembers.length + teamTwoMembers.length;
    }

    function adjustedPotBalance() public view returns(uint256 _adjustedPotBalance) {
        uint256 devFee = uint256(SafeMaths.div(SafeMaths.mul(pot, devFeeRate), 100));
        return pot - devFee;
    }

    function contractBalance() public view returns(uint256 _contractBalance) {
        return address(this).balance;
    }

    function currentTime() public view returns(uint256 _time) {
        return now;
    }

    function currentWinner() public view returns(string _winner) {
        if (teamOneVolume > teamTwoVolume) {
            return teamOnePrefix;
        } else if (teamOneVolume < teamTwoVolume) {
            return teamTwoPrefix;
        } else if (teamOneVolume == teamTwoVolume) {
            return "a tie? wtf";
        }
    }


    //INTERNAL FUNCTIONS

    //time adjustments
    function timeAdjustPlus() internal {
        if (msg.value >= 1 finney) {
            uint256 timeFactor = 1000000000000000; //one finney in wei
            uint256 timeShares = uint256(SafeMaths.div(msg.value, timeFactor)); 

            if (timeShares + roundEndTime > now + timerMax) {
                roundEndTime = now + timerMax;
            } else {
                roundEndTime += timeShares; //add one second per finney  
            }
        }
    }

    function timeAdjustNeg() internal {
        if (msg.value >= 1 finney) {
            uint256 timeFactor = 1000000000000000; //one finney in wei
            uint256 timeShares = uint256(SafeMaths.div(msg.value, timeFactor));

            // prevents extreme edge case underflow if someone sends more than 1.5 million ETH
            require (timeShares < roundEndTime, "you sent an absurd amount! relax vitalik"); 

            if (roundEndTime - timeShares < now + 5 minutes) {
                roundEndTime = now + 5 minutes; //you can't win by buying up the clock, but you can come close
            } else {
                roundEndTime -= timeShares; //subtract one second per finney  
            }
        }
    }

    //divs 
    function distributeDivs(uint256 _divContribution, uint256 _teamID) internal {
        if (_teamID == 1) {
            teamOneDivsTotal += _divContribution;
            teamOneDivsUnclaimed += _divContribution;
        } else if (_teamID == 2) {
            teamTwoDivsTotal += _divContribution;
            teamTwoDivsUnclaimed += _divContribution;
        }
    }

    //round payouts
    function teamOneWin() internal {
        uint256 devShare = uint256(SafeMaths.div(SafeMaths.mul(pot, devFeeRate), 100)); 
        devBalance += devShare;
        uint256 potAdjusted = pot - devShare;

        teamOneDivsTotal += potAdjusted;
        teamOneDivsUnclaimed += potAdjusted;

        emit roundEnded(1, teamOnePrefix, potAdjusted, "team one won!");
    }

    function teamTwoWin() internal {
        uint256 devShare = uint256(SafeMaths.div(SafeMaths.mul(pot, devFeeRate), 100)); 
        devBalance += devShare;
        uint256 potAdjusted = pot - devShare;

        teamTwoDivsTotal += potAdjusted;
        teamTwoDivsUnclaimed += potAdjusted;

        emit roundEnded(2, teamTwoPrefix, potAdjusted, "team two won!");        
    }

    function tie() internal { //very unlikely this will happen, but just in case 
        uint256 devShare = uint256(SafeMaths.div(SafeMaths.mul(pot, devFeeRate), 100)); 
        devBalance += devShare;
        uint256 potAdjusted = pot - devShare;

        teamOneDivsTotal += SafeMaths.div(potAdjusted, 2);
        teamOneDivsUnclaimed += SafeMaths.div(potAdjusted, 2);
        teamTwoDivsTotal += SafeMaths.div(potAdjusted, 2);
        teamTwoDivsUnclaimed += SafeMaths.div(potAdjusted, 2);

        emit roundEnded(0, "Tied", potAdjusted, "a tie?! wtf");
    }


    //convert and address to bytes format
    function toBytes(address a) internal pure returns (bytes b) {
        assembly {
            let m := mload(0x40)
            mstore(add(m, 20), xor(0x140000000000000000000000000000000000000000, a))
            mstore(0x40, add(m, 52))
            b := m
        }
        return b;
    }
    
    //take the first byte of a bytes argument and return bytes1
    function toBytes1(bytes data) internal pure returns (bytes1) {
        uint val;
        for (uint i = 0; i < 1; i++)  {
            val *= 256;
            if (i < data.length)
                val |= uint8(data[i]);
        }
        return bytes1(val);
    }
    
    //combine the above function
    function addressToBytes1(address input) internal pure returns(bytes1) {
        bytes1 output = toBytes1(toBytes(input));
        return output;
    }

    //address checks
    function checkAddressTeamOne(address _input) internal view returns(bool) {
        if (addressToBytes1(_input) <= addressToBytes1(addressThreshold)) {
            return true;
        } else {
            return false;
        }
    }
    
    function checkAddressTeamTwo(address _input) internal view returns(bool) {
        if (addressToBytes1(_input) > addressToBytes1(addressThreshold)) {
            return true;
        } else {
            return false;
        }
    }

}  

//LIBRARIES

library SafeMaths {

    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;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a / b;
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"currentRoundInfo","outputs":[{"name":"_pot","type":"uint256"},{"name":"_teamOneVolume","type":"uint256"},{"name":"_teamTwoVolume","type":"uint256"},{"name":"_teamOnePlayerCount","type":"uint256"},{"name":"_teamTwoPlayerCount","type":"uint256"},{"name":"_totalPlayerCount","type":"uint256"},{"name":"_timerStart","type":"uint256"},{"name":"_timerMax","type":"uint256"},{"name":"_roundStartTime","type":"uint256"},{"name":"_roundEndTime","type":"uint256"},{"name":"_timeLeft","type":"uint256"},{"name":"_currentWinner","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_timerStart","type":"uint256"},{"name":"_timerMax","type":"uint256"}],"name":"openRound","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"teamTwoShares","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"devFeeRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"teamOneMembers","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"roundOpen","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"addressThreshold","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamTwoDivsTotal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamTwoSharePrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pot","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"userTeamOneShares","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamOneDivsTotal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isTeamOneMember","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamOneSharePrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"roundSetUp","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamOneId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_user","type":"address"}],"name":"calcUserDivsTotal","outputs":[{"name":"_divs","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamOneDivsUnclaimed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamOnePrefix","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"zeroOut","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"resolveRound","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"teamOneTotalPlayers","outputs":[{"name":"_teamOnePlayerCount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adjustedPotBalance","outputs":[{"name":"_adjustedPotBalance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"userTeamTwoStake","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamOneVolume","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"userTeamTwoShares","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"contractBalance","outputs":[{"name":"_contractBalance","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":"teamTwoDivsUnclaimed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"userTeamOneStake","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"fundPot","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"precisionFactor","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamTwoVolume","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"userWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"teamTwoId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentWinner","outputs":[{"name":"_winner","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isTeamTwoMember","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"devWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"teamTwoPrefix","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"divRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"roundResolved","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTimeLeft","outputs":[{"name":"_timeLeftSeconds","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"devBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentTime","outputs":[{"name":"_time","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamOneShares","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"timerMax","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"roundStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"timerStart","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"roundEndTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"teamTwoMembers","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"reduceTime","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"totalPlayers","outputs":[{"name":"_totalPlayerCount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_user","type":"address"}],"name":"calcUserDivsAvailable","outputs":[{"name":"_divs","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamTwoTotalPlayers","outputs":[{"name":"_teamTwoPlayerCount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_funder","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"},{"indexed":false,"name":"_message","type":"string"}],"name":"potFunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_buyer","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"},{"indexed":false,"name":"_teamID","type":"uint256"},{"indexed":false,"name":"_message","type":"string"}],"name":"teamBuy","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_winningTeamId","type":"uint256"},{"indexed":false,"name":"_winningTeamString","type":"string"},{"indexed":false,"name":"_pot","type":"uint256"},{"indexed":false,"name":"_message","type":"string"}],"name":"roundEnded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_timeStart","type":"uint256"},{"indexed":false,"name":"_timeMax","type":"uint256"},{"indexed":false,"name":"_seed","type":"uint256"},{"indexed":false,"name":"_message","type":"string"}],"name":"newRoundStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_user","type":"address"},{"indexed":false,"name":"_teamID","type":"uint256"},{"indexed":false,"name":"_teamAmount","type":"uint256"},{"indexed":false,"name":"_message","type":"string"}],"name":"userWithdrew","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_owner","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"},{"indexed":false,"name":"_message","type":"string"}],"name":"devWithdrew","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_owner","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"},{"indexed":false,"name":"_message","type":"string"}],"name":"contractClosed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_owner","type":"address"}],"name":"contractLaunched","type":"event"}]

60046002819055600660038190558154600160a060020a031916737f000000000000000000000000000000000000001790915560326005556001905560c0604052600e60808190527f5465616d2030783132333435363700000000000000000000000000000000000060a09081526200007c916007919062000150565b5066038d7ea4c68000600c556002600d5560408051808201909152600f8082527f5465616d203078383961626364656600000000000000000000000000000000006020909201918252620000d391600e9162000150565b5066038d7ea4c680006013556029805462ffffff19169055348015620000f857600080fd5b5060008054600160a060020a03191633179081905560408051600160a060020a03929092168252517fc0fd912c79daddafb4895907db83af67bcbc72690843afcf0bd7adf08ddd11e49181900360200190a1620001f5565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200019357805160ff1916838001178555620001c3565b82800160010185558215620001c3579182015b82811115620001c3578251825591602001919060010190620001a6565b50620001d1929150620001d5565b5090565b620001f291905b80821115620001d15760008155600101620001dc565b90565b612d7280620002056000396000f3006080604052600436106102915763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416628f8b3581146102965780630bf0998514610370578063177cfaa2146103805780631ae3a94a146103a75780631e77726b146103bc5780632032677f146103f057806323c6bc391461041957806333cbee231461042e57806341240314146104435780634ba2363a146104585780634d22b1301461046d578063569f76e11461048e5780635a1cf178146104a35780635d5b92b1146104c4578063631b3672146104d957806363299226146104ee5780636dbe2ebc146105035780636ec069f814610524578063737050901461053957806379cf3a7a146105c35780637c8af704146105d85780637c8e17e5146105ed57806380097a8e14610602578063858ece5b1461061757806385cdafa61461063857806388da58831461064d5780638b7afe2e1461066e5780638da5cb5b14610683578063929790371461069857806395b6abf6146106ad5780639c737e8f146106ce5780639d902fc0146106d65780639faf52ee146106eb578063a646f9ad14610700578063a6f2ae3a14610715578063aa99f4d01461071d578063aabe2fe314610732578063ac73a2ef14610747578063ad606c7214610768578063afb058ce1461077d578063b2e0243014610792578063b68cf49f146107a7578063c7e284b8146107bc578063cd9a1b63146107d1578063d18e81b3146107e6578063d489b83f146107fb578063d978545114610810578063dd4f8f7414610825578063de5e21df1461083a578063e40205d61461084f578063eee52d6d14610864578063f60436cd1461087c578063f60cdcf614610884578063fa0c76c514610899578063fe0dadd7146108ba575b600080fd5b3480156102a257600080fd5b506102ab6108cf565b604051808d81526020018c81526020018b81526020018a815260200189815260200188815260200187815260200186815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561032a578181015183820152602001610312565b50505050905090810190601f1680156103575780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390f35b61037e600435602435610945565b005b34801561038c57600080fd5b50610395610d68565b60408051918252519081900360200190f35b3480156103b357600080fd5b50610395610d6e565b3480156103c857600080fd5b506103d4600435610d74565b60408051600160a060020a039092168252519081900360200190f35b3480156103fc57600080fd5b50610405610d9c565b604080519115158252519081900360200190f35b34801561042557600080fd5b506103d4610da5565b34801561043a57600080fd5b50610395610db4565b34801561044f57600080fd5b50610395610dba565b34801561046457600080fd5b50610395610dc0565b34801561047957600080fd5b50610395600160a060020a0360043516610dc6565b34801561049a57600080fd5b50610395610dd8565b3480156104af57600080fd5b50610405600160a060020a0360043516610dde565b3480156104d057600080fd5b50610395610df3565b3480156104e557600080fd5b50610405610df9565b3480156104fa57600080fd5b50610395610e07565b34801561050f57600080fd5b50610395600160a060020a0360043516610e0d565b34801561053057600080fd5b50610395610f28565b34801561054557600080fd5b5061054e610f2e565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610588578181015183820152602001610570565b50505050905090810190601f1680156105b55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105cf57600080fd5b5061037e610fbc565b3480156105e457600080fd5b5061037e61117b565b3480156105f957600080fd5b50610395611385565b34801561060e57600080fd5b5061039561138c565b34801561062357600080fd5b50610395600160a060020a03600435166113b1565b34801561064457600080fd5b506103956113c3565b34801561065957600080fd5b50610395600160a060020a03600435166113c9565b34801561067a57600080fd5b506103956113db565b34801561068f57600080fd5b506103d46113e0565b3480156106a457600080fd5b506103956113ef565b3480156106b957600080fd5b50610395600160a060020a03600435166113f5565b61037e611407565b3480156106e257600080fd5b506103956115ab565b3480156106f757600080fd5b506103956115b1565b34801561070c57600080fd5b5061037e6115b7565b61037e6119bd565b34801561072957600080fd5b50610395611f3b565b34801561073e57600080fd5b5061054e611f41565b34801561075357600080fd5b50610405600160a060020a036004351661208e565b34801561077457600080fd5b5061037e6120a3565b34801561078957600080fd5b5061054e6122a4565b34801561079e57600080fd5b506103956122ff565b3480156107b357600080fd5b50610405612305565b3480156107c857600080fd5b50610395612314565b3480156107dd57600080fd5b50610395612375565b3480156107f257600080fd5b5061039561237b565b34801561080757600080fd5b5061039561237f565b34801561081c57600080fd5b50610395612385565b34801561083157600080fd5b5061039561238b565b34801561084657600080fd5b50610395612391565b34801561085b57600080fd5b50610395612397565b34801561087057600080fd5b506103d460043561239d565b61037e6123ab565b34801561089057600080fd5b50610395612556565b3480156108a557600080fd5b50610395600160a060020a0360043516612560565b3480156108c657600080fd5b506103956126a9565b60008060008060008060008060008060006060602454600854600f546108f3611385565b6108fb6126a9565b610903612556565b602554602654602754602854610917612314565b61091f611f41565b9b509b509b509b509b509b509b509b509b509b509b509b50909192939495969798999a9b565b600080548190600160a060020a031633146109aa576040805160e560020a62461bcd02815260206004820152601560248201527f796f7520617265206e6f7420746865206f776e65720000000000000000000000604482015290519081900360640190fd5b60295460ff1615610a05576040805160e560020a62461bcd02815260206004820181905260248201527f796f752063616e206f6e6c79207374617274207468652067616d65206f6e6365604482015290519081900360640190fd5b60295462010000900460ff1615610a8c576040805160e560020a62461bcd02815260206004820152602260248201527f796f752063616e6e6f74207265737461727420612066696e697368656420676160448201527f6d65000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b671bc16d674ec800003414610aeb576040805160e560020a62461bcd02815260206004820152601b60248201527f796f75206d7573742067697665206120646563656e7420736565640000000000604482015290519081900360640190fd5b50506029805461ff00191661010017905560258281556026828155635b85f010602781905584016028556024805434908101909155670de0b6b3a76400006008819055600f8190556014805460018181019092557fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec01805473ffffffffffffffffffffffffffffffffffffffff19908116735c035bb4cb7dacbfee076a5e61aa39a10da2e956908117909255601c80548085019091557f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a2110180549091167384ecb387395a1be65e133c75ff9e5fcc6f756db39081179091557fab085f3fed808bc6252014db4906baf8b7d518a8749a668353f2e488a78cb687805460ff1990811685179091557fd28df923a82b00158763efdbc7043289a9545da959cb6464ef312815a4acb2d880549091169093179092557fc3ba487cf8e1f0c04027193eda19d86ba3701f8e12ac37491c5a2ab5614e3ebd8390557f80578f8ef1a6d9c44c82222b098504b77ca94b46f73b64a47d485dfa3993b765929092556103e87fef1423fcbd8638ab98c3741fc2cf9bc22ea9f940c83740b66ee61e8f4b1c9ec18190556000829052601f60209081527f8cbd9e175d55ee38c6ed532303566702bea4b443b00435ffd7c90b73378aaaf7829055600982905560109190915594549354604080519586529585015283850192909252608060608401819052601a908401527f61206e65772067616d6520776173206a7573742073657420757000000000000060a0840152925190917fcb3db69f7c604c52ba9ce463b556348e881b544cc44f55c3192f9d9360f9dedf919081900360c00190a150505050565b60105481565b60025481565b6014805482908110610d8257fe5b600091825260209091200154600160a060020a0316905081565b60295460ff1681565b600454600160a060020a031681565b60115481565b60135481565b60245481565b60176020526000908152604090205481565b600a5481565b60156020526000908152604090205460ff1681565b600c5481565b602954610100900460ff1681565b60065481565b60008060008060008060006017600089600160a060020a0316600160a060020a03168152602001908152602001600020541115610ead57600160a060020a038716600090815260176020526040902054600354610e8a91610e8091610e789190600101600a0a6126af565b6009546126e5565b600501600a6126e5565b9450610ea6610e9b600a54876126af565b600354600a0a6126e5565b9350610f1c565b600160a060020a0387166000908152601f60205260408120541115610f1c57600160a060020a0387166000908152601f6020526040902054600354610f0891610e8091610f009190600101600a0a6126af565b6010546126e5565b9250610f19610e9b601154856126af565b91505b50909101949350505050565b600b5481565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610fb45780601f10610f8957610100808354040283529160200191610fb4565b820191906000526020600020905b815481529060010190602001808311610f9757829003601f168201915b505050505081565b600054600160a060020a0316331461101e576040805160e560020a62461bcd02815260206004820152601560248201527f796f7520617265206e6f7420746865206f776e65720000000000000000000000604482015290519081900360640190fd5b6028546283d6000142101561107d576040805160e560020a62461bcd02815260206004820152601660248201527f746f6f206561726c7920746f2065786974207363616d00000000000000000000604482015290519081900360640190fd5b60295462010000900460ff161515600114801561109d575060295460ff16155b15156110f3576040805160e560020a62461bcd02815260206004820152601860248201527f7468652067616d65206973206e6f74207265736f6c7665640000000000000000604482015290519081900360640190fd5b60005460408051600160a060020a039092168252303160208301526060828201819052601a908301527f74686520636f6e7472616374206973206e6f7720636c6f7365640000000000006080830152517f25f726f199314faeb5028458c9b9b97f8aa473105155036aae95a3e393c3d6489181900360a00190a1600054600160a060020a0316ff5b3332146111c0576040805160e560020a62461bcd0281526020600482015260196024820152600080516020612d27833981519152604482015290519081900360640190fd5b602854421161123f576040805160e560020a62461bcd02815260206004820152602a60248201527f796f752063616e206f6e6c792063616c6c20746869732069662074696d65206860448201527f6173206578706972656400000000000000000000000000000000000000000000606482015290519081900360840190fd5b60295460ff6101009091041615156001146112ca576040805160e560020a62461bcd02815260206004820152602b60248201527f796f752063616e6e6f742063616c6c2074686973206265666f7265207468652060448201527f67616d6520737461727473000000000000000000000000000000000000000000606482015290519081900360840190fd5b60295462010000900460ff161561132b576040805160e560020a62461bcd02815260206004820152601b60248201527f796f752063616e206f6e6c792063616c6c2074686973206f6e63650000000000604482015290519081900360640190fd5b600f5460085411156113445761133f6126fc565b61136c565b600f5460085410156113585761133f61282c565b600f54600854141561136c5761136c612960565b6029805460ff1962ff0000199091166201000017169055565b6014545b90565b6000806113a76113a06024546002546126af565b60646126e5565b6024540392915050565b601e6020526000908152604090205481565b60085481565b601f6020526000908152604090205481565b303190565b600054600160a060020a031681565b60125481565b60166020526000908152604090205481565b33321461144c576040805160e560020a62461bcd0281526020600482015260196024820152600080516020612d27833981519152604482015290519081900360640190fd5b60295462010000900460ff161561146257600080fd5b60295460ff61010090910416151560011461147c57600080fd5b60285442106114d5576040805160e560020a62461bcd02815260206004820152601660248201527f697420697320746f6f206c61746520746f20706c617900000000000000000000604482015290519081900360640190fd5b60275442101561152f576040805160e560020a62461bcd02815260206004820152601760248201527f697420697320746f6f206561726c7920746f20706c6179000000000000000000604482015290519081900360640190fd5b60248054349081019091556040805133815260208082019390935260608183018190528101929092527f612067656e65726f757320706572736f6e2066756e6465642074686520706f746080830152517fcf4b0765cda2c8471307628b7571da2d0de77a741fbe33a0a3426baf1f7f67299181900360a00190a1565b60035481565b600f5481565b6000803332146115ff576040805160e560020a62461bcd0281526020600482015260196024820152600080516020612d27833981519152604482015290519081900360640190fd5b3360009081526017602052604081205411156117e0573360009081526017602052604090205460035461164091610e8091610e789190600101600a0a6126af565b336000908152601b60205260409020819055600a5461166391610e9b91906126af565b336000908152601860209081526040808320849055601990915290205461168a9190612a80565b336000908152601a6020526040812082905510156117db57336000908152601a60205260409020543031108015906116d35750600b54336000908152601a602052604090205411155b15156116db57fe5b336000818152601a602081815260408084208054600b805491909103905560188352818520546019845282862055929091528154918390555190945084156108fc0291859190818181858888f1935050505015801561173e573d6000803e3d6000fd5b5060408051338152600160208201528082018490526080606082018190526024908201527f612075736572206a757374207769746864726577207465616d206f6e6520736860a08201527f617265730000000000000000000000000000000000000000000000000000000060c082015290517fd3f9e5fafb3e0b113ded905c2ee0d2a3750365449219bcc18de7d0c892150e7c9181900360e00190a15b6119b9565b336000908152601f602052604081205411156119b957336000908152601f602052604090205460035461182191610e8091610f009190600101600a0a6126af565b33600090815260236020526040902081905560115461184491610e9b91906126af565b3360009081526020808052604080832084905560219091529020546118699190612a80565b33600090815260226020526040812082905510156119b957336000908152602260205260409020543031108015906118b257506012543360009081526022602052604090205411155b15156118ba57fe5b50336000818152602260208181526040808420805460128054919091039055828052818520546021845282862055929091528154918390555190929183156108fc02918491818181858888f1935050505015801561191c573d6000803e3d6000fd5b5060408051338152600260208201528082018390526080606082018190526024908201527f612075736572206a757374207769746864726577207465616d206f6e6520736860a08201527f617265730000000000000000000000000000000000000000000000000000000060c082015290517fd3f9e5fafb3e0b113ded905c2ee0d2a3750365449219bcc18de7d0c892150e7c9181900360e00190a15b5050565b60295460009081908190819081908190819062010000900460ff16156119e257600080fd5b60295460ff6101009091041615156001146119fc57600080fd5b6028544210611a55576040805160e560020a62461bcd02815260206004820152601660248201527f697420697320746f6f206c61746520746f20706c617900000000000000000000604482015290519081900360640190fd5b602754421015611aaf576040805160e560020a62461bcd02815260206004820152601760248201527f697420697320746f6f206561726c7920746f20706c6179000000000000000000604482015290519081900360640190fd5b333214611af4576040805160e560020a62461bcd0281526020600482015260196024820152600080516020612d27833981519152604482015290519081900360640190fd5b60295460ff16158015611b0957506027544210155b8015611b16575060285442105b15611b29576029805460ff191660011790555b611b3233612a92565b151560011415611b455760019650611b5d565b611b4e33612add565b151560011415611b5d57600296505b866001148015611b6d5750601454155b80611b835750866002148015611b835750601c54155b15611b95576024805434019055611bc1565b611ba46113a0346005546126af565b60248054348390039081019091559096509450611bc18688612b20565b611bc9612b5b565b8660011415611d4957600c54341015611c52576040805160e560020a62461bcd02815260206004820152602860248201527f796f75206d75737420627579206174206c65617374206f6e65205465616d204f60448201527f6e65207368617265000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b3360009081526015602052604090205460ff161515611cd557336000818152601560205260408120805460ff191660019081179091556014805491820181559091527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec01805473ffffffffffffffffffffffffffffffffffffffff191690911790555b3360009081526016602052604090208054349081019091556008805482019055611d0d90611d0690620186a06126e5565b60026126af565b600c8054820190819055909450611d259034906126e5565b33600090815260176020526040902080548201905560098054820190559250611ebe565b8660021415611ebe57601354341015611dd2576040805160e560020a62461bcd02815260206004820152602860248201527f796f75206d75737420627579206174206c65617374206f6e65205465616d205460448201527f776f207368617265000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b336000908152601d602052604090205460ff161515611e5557336000818152601d60205260408120805460ff19166001908117909155601c805491820181559091527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a21101805473ffffffffffffffffffffffffffffffffffffffff191690911790555b336000908152601e60205260409020805434908101909155600f805482019055611e8690611d0690620186a06126e5565b60138054820190819055909250611e9e9034906126e5565b336000908152601f60205260409020805482019055601080548201905590505b604080513381523460208201528082018990526080606082018190526017908201527f61206e657720627579206a7573742068617070656e656400000000000000000060a082015290517f5e77d806c40b3b553986e422d697c9c1639d466d631f62c4fea89e2e15510ae39181900360c00190a150505050505050565b600d5481565b6060600f546008541115611fe1576007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015611fd55780601f10611faa57610100808354040283529160200191611fd5565b820191906000526020600020905b815481529060010190602001808311611fb857829003601f168201915b50505050509050611389565b600f54600854101561204857600e805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015611fd55780601f10611faa57610100808354040283529160200191611fd5565b600f546008541415611389575060408051808201909152600a81527f61207469653f20777466000000000000000000000000000000000000000000006020820152611389565b601d6020526000908152604090205460ff1681565b60008054600160a060020a03163314612106576040805160e560020a62461bcd02815260206004820152601560248201527f796f7520617265206e6f7420746865206f776e65720000000000000000000000604482015290519081900360640190fd5b600154600010612186576040805160e560020a62461bcd02815260206004820152602260248201527f796f75206d757374206861766520616e20617661696c61626c652062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600154303110156121e1576040805160e560020a62461bcd02815260206004820152601660248201527f796f752063616e6e6f74207072696e74206d6f6e657900000000000000000000604482015290519081900360640190fd5b506001805460009182905581546040519192600160a060020a039091169183156108fc0291849190818181858888f19350505050158015612226573d6000803e3d6000fd5b5060005460408051600160a060020a0390921682526020820183905260608282018190526015908301527f74686520646576206a75737420776974686472657700000000000000000000006080830152517fdf8379729dc015ce4a0fe6dc41c7cc757741f28b67dabb83ec43bba5c18965129181900360a00190a150565b600e805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610fb45780601f10610f8957610100808354040283529160200191610fb4565b60055481565b60295462010000900460ff1681565b602854600090421061232857506000611389565b60295460ff16158015612344575060295462010000900460ff16155b80156123585750602954610100900460ff16155b156123695742602754039050611389565b42602854039050611389565b60015481565b4290565b60095481565b60265481565b60275481565b60255481565b60285481565b601c805482908110610d8257fe5b3332146123f0576040805160e560020a62461bcd0281526020600482015260196024820152600080516020612d27833981519152604482015290519081900360640190fd5b60295462010000900460ff161561240657600080fd5b60295460ff61010090910416151560011461242057600080fd5b6028544210612479576040805160e560020a62461bcd02815260206004820152601660248201527f697420697320746f6f206c61746520746f20706c617900000000000000000000604482015290519081900360640190fd5b6027544210156124d3576040805160e560020a62461bcd02815260206004820152601760248201527f697420697320746f6f206561726c7920746f20706c6179000000000000000000604482015290519081900360640190fd5b6124db612bab565b60248054349081019091556040805133815260208101929092526060828201819052601e908301527f736f6d656f6e65206a75737420726564756365642074686520636c6f636b00006080830152517fcf4b0765cda2c8471307628b7571da2d0de77a741fbe33a0a3426baf1f7f67299181900360a00190a1565b601c546014540190565b6000806000806000806000806000601760008b600160a060020a0316600160a060020a0316815260200190815260200160002054111561260d57600160a060020a0389166000908152601760205260409020546003546125ce91610e8091610e789190600101600a0a6126af565b96506125df610e9b600a54896126af565b600160a060020a038a16600090815260196020526040902054909650612606908790612a80565b945061269b565b600160a060020a0389166000908152601f6020526040812054111561269b57600160a060020a0389166000908152601f602052604090205460035461266091610e8091610f009190600101600a0a6126af565b9350612671610e9b601154866126af565b600160a060020a038a16600090815260216020526040902054909350612698908490612a80565b91505b509092019695505050505050565b601c5490565b6000808315156126c257600091506126de565b508282028284828115156126d257fe5b04146126da57fe5b8091505b5092915050565b60008082848115156126f357fe5b04949350505050565b6000806127106113a06024546002546126af565b6001805482018155602454600a8054918490039182019055600b80548201905560408051838152908101829052608060208201818152600780546002610100828916150260001901909116049284018390529597509295507fadd50c0a29e907683af3fde4b66a36c4fa58d22668076b798f44dca0cccc7f729492869291606083019060a0840190869080156127e75780601f106127bc576101008083540402835291602001916127e7565b820191906000526020600020905b8154815290600101906020018083116127ca57829003601f168201915b5050928303905250600d81527f7465616d206f6e6520776f6e210000000000000000000000000000000000000060208201526040805191829003019350915050a15050565b6000806128406113a06024546002546126af565b6001805482018155602454601180549184900391820190556012805482019055604080516002808252918101839052608060208201818152600e80549687161561010002600019019096168490049183018290529597509295507fadd50c0a29e907683af3fde4b66a36c4fa58d22668076b798f44dca0cccc7f7294919392869290606083019060a08401908690801561291b5780601f106128f05761010080835404028352916020019161291b565b820191906000526020600020905b8154815290600101906020018083116128fe57829003601f168201915b5050928303905250600d81527f7465616d2074776f20776f6e210000000000000000000000000000000000000060208201526040805191829003019350915050a15050565b6000806129746113a06024546002546126af565b600180548201905560245490925082900390506129928160026126e5565b600a805490910190556129a68160026126e5565b600b805490910190556129ba8160026126e5565b6011805490910190556129ce8160026126e5565b60128054909101905560408051600081528082018390526080602082018190526004908201527f546965640000000000000000000000000000000000000000000000000000000060a082015260c060608201819052600b908201527f61207469653f212077746600000000000000000000000000000000000000000060e082015290517fadd50c0a29e907683af3fde4b66a36c4fa58d22668076b798f44dca0cccc7f72918190036101000190a15050565b600082821115612a8c57fe5b50900390565b600454600090612aaa90600160a060020a0316612c7c565b600160f860020a031916612abd83612c7c565b600160f860020a03191611612ad457506001612ad8565b5060005b919050565b600454600090612af590600160a060020a0316612c7c565b600160f860020a031916612b0883612c7c565b600160f860020a0319161115612ad457506001612ad8565b8060011415612b3e57600a805483019055600b8054830190556119b9565b80600214156119b957601180548301905560128054830190555050565b60008066038d7ea4c6800034106119b95766038d7ea4c680009150612b8034836126e5565b9050602654420160285482011115612b9f5760265442016028556119b9565b60288054820190555050565b60008066038d7ea4c6800034106119b95766038d7ea4c680009150612bd034836126e5565b6028549091508110612c52576040805160e560020a62461bcd02815260206004820152602860248201527f796f752073656e7420616e2061627375726420616d6f756e74212072656c617860448201527f20766974616c696b000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b4261012c0181602854031015612c6f5761012c42016028556119b9565b6028805482900390555050565b600080612c90612c8b84612c97565b612cc3565b9392505050565b604080517414000000000000000000000000000000000000000092909218601483015260348201905290565b600080805b6001811015612d1957610100820291508351811015612d11578381815181101515612cef57fe5b90602001015160f860020a900460f860020a0260f860020a900460ff16821791505b600101612cc8565b5060f860020a02929150505600796f752063616e6e6f7420757365206120636f6e747261637400000000000000a165627a7a72305820c736ea7a96b0bed6a2b60065ad7a7de79be34eafc47c0de1144813e92151b46f0029

Deployed Bytecode

0x6080604052600436106102915763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416628f8b3581146102965780630bf0998514610370578063177cfaa2146103805780631ae3a94a146103a75780631e77726b146103bc5780632032677f146103f057806323c6bc391461041957806333cbee231461042e57806341240314146104435780634ba2363a146104585780634d22b1301461046d578063569f76e11461048e5780635a1cf178146104a35780635d5b92b1146104c4578063631b3672146104d957806363299226146104ee5780636dbe2ebc146105035780636ec069f814610524578063737050901461053957806379cf3a7a146105c35780637c8af704146105d85780637c8e17e5146105ed57806380097a8e14610602578063858ece5b1461061757806385cdafa61461063857806388da58831461064d5780638b7afe2e1461066e5780638da5cb5b14610683578063929790371461069857806395b6abf6146106ad5780639c737e8f146106ce5780639d902fc0146106d65780639faf52ee146106eb578063a646f9ad14610700578063a6f2ae3a14610715578063aa99f4d01461071d578063aabe2fe314610732578063ac73a2ef14610747578063ad606c7214610768578063afb058ce1461077d578063b2e0243014610792578063b68cf49f146107a7578063c7e284b8146107bc578063cd9a1b63146107d1578063d18e81b3146107e6578063d489b83f146107fb578063d978545114610810578063dd4f8f7414610825578063de5e21df1461083a578063e40205d61461084f578063eee52d6d14610864578063f60436cd1461087c578063f60cdcf614610884578063fa0c76c514610899578063fe0dadd7146108ba575b600080fd5b3480156102a257600080fd5b506102ab6108cf565b604051808d81526020018c81526020018b81526020018a815260200189815260200188815260200187815260200186815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561032a578181015183820152602001610312565b50505050905090810190601f1680156103575780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390f35b61037e600435602435610945565b005b34801561038c57600080fd5b50610395610d68565b60408051918252519081900360200190f35b3480156103b357600080fd5b50610395610d6e565b3480156103c857600080fd5b506103d4600435610d74565b60408051600160a060020a039092168252519081900360200190f35b3480156103fc57600080fd5b50610405610d9c565b604080519115158252519081900360200190f35b34801561042557600080fd5b506103d4610da5565b34801561043a57600080fd5b50610395610db4565b34801561044f57600080fd5b50610395610dba565b34801561046457600080fd5b50610395610dc0565b34801561047957600080fd5b50610395600160a060020a0360043516610dc6565b34801561049a57600080fd5b50610395610dd8565b3480156104af57600080fd5b50610405600160a060020a0360043516610dde565b3480156104d057600080fd5b50610395610df3565b3480156104e557600080fd5b50610405610df9565b3480156104fa57600080fd5b50610395610e07565b34801561050f57600080fd5b50610395600160a060020a0360043516610e0d565b34801561053057600080fd5b50610395610f28565b34801561054557600080fd5b5061054e610f2e565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610588578181015183820152602001610570565b50505050905090810190601f1680156105b55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105cf57600080fd5b5061037e610fbc565b3480156105e457600080fd5b5061037e61117b565b3480156105f957600080fd5b50610395611385565b34801561060e57600080fd5b5061039561138c565b34801561062357600080fd5b50610395600160a060020a03600435166113b1565b34801561064457600080fd5b506103956113c3565b34801561065957600080fd5b50610395600160a060020a03600435166113c9565b34801561067a57600080fd5b506103956113db565b34801561068f57600080fd5b506103d46113e0565b3480156106a457600080fd5b506103956113ef565b3480156106b957600080fd5b50610395600160a060020a03600435166113f5565b61037e611407565b3480156106e257600080fd5b506103956115ab565b3480156106f757600080fd5b506103956115b1565b34801561070c57600080fd5b5061037e6115b7565b61037e6119bd565b34801561072957600080fd5b50610395611f3b565b34801561073e57600080fd5b5061054e611f41565b34801561075357600080fd5b50610405600160a060020a036004351661208e565b34801561077457600080fd5b5061037e6120a3565b34801561078957600080fd5b5061054e6122a4565b34801561079e57600080fd5b506103956122ff565b3480156107b357600080fd5b50610405612305565b3480156107c857600080fd5b50610395612314565b3480156107dd57600080fd5b50610395612375565b3480156107f257600080fd5b5061039561237b565b34801561080757600080fd5b5061039561237f565b34801561081c57600080fd5b50610395612385565b34801561083157600080fd5b5061039561238b565b34801561084657600080fd5b50610395612391565b34801561085b57600080fd5b50610395612397565b34801561087057600080fd5b506103d460043561239d565b61037e6123ab565b34801561089057600080fd5b50610395612556565b3480156108a557600080fd5b50610395600160a060020a0360043516612560565b3480156108c657600080fd5b506103956126a9565b60008060008060008060008060008060006060602454600854600f546108f3611385565b6108fb6126a9565b610903612556565b602554602654602754602854610917612314565b61091f611f41565b9b509b509b509b509b509b509b509b509b509b509b509b50909192939495969798999a9b565b600080548190600160a060020a031633146109aa576040805160e560020a62461bcd02815260206004820152601560248201527f796f7520617265206e6f7420746865206f776e65720000000000000000000000604482015290519081900360640190fd5b60295460ff1615610a05576040805160e560020a62461bcd02815260206004820181905260248201527f796f752063616e206f6e6c79207374617274207468652067616d65206f6e6365604482015290519081900360640190fd5b60295462010000900460ff1615610a8c576040805160e560020a62461bcd02815260206004820152602260248201527f796f752063616e6e6f74207265737461727420612066696e697368656420676160448201527f6d65000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b671bc16d674ec800003414610aeb576040805160e560020a62461bcd02815260206004820152601b60248201527f796f75206d7573742067697665206120646563656e7420736565640000000000604482015290519081900360640190fd5b50506029805461ff00191661010017905560258281556026828155635b85f010602781905584016028556024805434908101909155670de0b6b3a76400006008819055600f8190556014805460018181019092557fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec01805473ffffffffffffffffffffffffffffffffffffffff19908116735c035bb4cb7dacbfee076a5e61aa39a10da2e956908117909255601c80548085019091557f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a2110180549091167384ecb387395a1be65e133c75ff9e5fcc6f756db39081179091557fab085f3fed808bc6252014db4906baf8b7d518a8749a668353f2e488a78cb687805460ff1990811685179091557fd28df923a82b00158763efdbc7043289a9545da959cb6464ef312815a4acb2d880549091169093179092557fc3ba487cf8e1f0c04027193eda19d86ba3701f8e12ac37491c5a2ab5614e3ebd8390557f80578f8ef1a6d9c44c82222b098504b77ca94b46f73b64a47d485dfa3993b765929092556103e87fef1423fcbd8638ab98c3741fc2cf9bc22ea9f940c83740b66ee61e8f4b1c9ec18190556000829052601f60209081527f8cbd9e175d55ee38c6ed532303566702bea4b443b00435ffd7c90b73378aaaf7829055600982905560109190915594549354604080519586529585015283850192909252608060608401819052601a908401527f61206e65772067616d6520776173206a7573742073657420757000000000000060a0840152925190917fcb3db69f7c604c52ba9ce463b556348e881b544cc44f55c3192f9d9360f9dedf919081900360c00190a150505050565b60105481565b60025481565b6014805482908110610d8257fe5b600091825260209091200154600160a060020a0316905081565b60295460ff1681565b600454600160a060020a031681565b60115481565b60135481565b60245481565b60176020526000908152604090205481565b600a5481565b60156020526000908152604090205460ff1681565b600c5481565b602954610100900460ff1681565b60065481565b60008060008060008060006017600089600160a060020a0316600160a060020a03168152602001908152602001600020541115610ead57600160a060020a038716600090815260176020526040902054600354610e8a91610e8091610e789190600101600a0a6126af565b6009546126e5565b600501600a6126e5565b9450610ea6610e9b600a54876126af565b600354600a0a6126e5565b9350610f1c565b600160a060020a0387166000908152601f60205260408120541115610f1c57600160a060020a0387166000908152601f6020526040902054600354610f0891610e8091610f009190600101600a0a6126af565b6010546126e5565b9250610f19610e9b601154856126af565b91505b50909101949350505050565b600b5481565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610fb45780601f10610f8957610100808354040283529160200191610fb4565b820191906000526020600020905b815481529060010190602001808311610f9757829003601f168201915b505050505081565b600054600160a060020a0316331461101e576040805160e560020a62461bcd02815260206004820152601560248201527f796f7520617265206e6f7420746865206f776e65720000000000000000000000604482015290519081900360640190fd5b6028546283d6000142101561107d576040805160e560020a62461bcd02815260206004820152601660248201527f746f6f206561726c7920746f2065786974207363616d00000000000000000000604482015290519081900360640190fd5b60295462010000900460ff161515600114801561109d575060295460ff16155b15156110f3576040805160e560020a62461bcd02815260206004820152601860248201527f7468652067616d65206973206e6f74207265736f6c7665640000000000000000604482015290519081900360640190fd5b60005460408051600160a060020a039092168252303160208301526060828201819052601a908301527f74686520636f6e7472616374206973206e6f7720636c6f7365640000000000006080830152517f25f726f199314faeb5028458c9b9b97f8aa473105155036aae95a3e393c3d6489181900360a00190a1600054600160a060020a0316ff5b3332146111c0576040805160e560020a62461bcd0281526020600482015260196024820152600080516020612d27833981519152604482015290519081900360640190fd5b602854421161123f576040805160e560020a62461bcd02815260206004820152602a60248201527f796f752063616e206f6e6c792063616c6c20746869732069662074696d65206860448201527f6173206578706972656400000000000000000000000000000000000000000000606482015290519081900360840190fd5b60295460ff6101009091041615156001146112ca576040805160e560020a62461bcd02815260206004820152602b60248201527f796f752063616e6e6f742063616c6c2074686973206265666f7265207468652060448201527f67616d6520737461727473000000000000000000000000000000000000000000606482015290519081900360840190fd5b60295462010000900460ff161561132b576040805160e560020a62461bcd02815260206004820152601b60248201527f796f752063616e206f6e6c792063616c6c2074686973206f6e63650000000000604482015290519081900360640190fd5b600f5460085411156113445761133f6126fc565b61136c565b600f5460085410156113585761133f61282c565b600f54600854141561136c5761136c612960565b6029805460ff1962ff0000199091166201000017169055565b6014545b90565b6000806113a76113a06024546002546126af565b60646126e5565b6024540392915050565b601e6020526000908152604090205481565b60085481565b601f6020526000908152604090205481565b303190565b600054600160a060020a031681565b60125481565b60166020526000908152604090205481565b33321461144c576040805160e560020a62461bcd0281526020600482015260196024820152600080516020612d27833981519152604482015290519081900360640190fd5b60295462010000900460ff161561146257600080fd5b60295460ff61010090910416151560011461147c57600080fd5b60285442106114d5576040805160e560020a62461bcd02815260206004820152601660248201527f697420697320746f6f206c61746520746f20706c617900000000000000000000604482015290519081900360640190fd5b60275442101561152f576040805160e560020a62461bcd02815260206004820152601760248201527f697420697320746f6f206561726c7920746f20706c6179000000000000000000604482015290519081900360640190fd5b60248054349081019091556040805133815260208082019390935260608183018190528101929092527f612067656e65726f757320706572736f6e2066756e6465642074686520706f746080830152517fcf4b0765cda2c8471307628b7571da2d0de77a741fbe33a0a3426baf1f7f67299181900360a00190a1565b60035481565b600f5481565b6000803332146115ff576040805160e560020a62461bcd0281526020600482015260196024820152600080516020612d27833981519152604482015290519081900360640190fd5b3360009081526017602052604081205411156117e0573360009081526017602052604090205460035461164091610e8091610e789190600101600a0a6126af565b336000908152601b60205260409020819055600a5461166391610e9b91906126af565b336000908152601860209081526040808320849055601990915290205461168a9190612a80565b336000908152601a6020526040812082905510156117db57336000908152601a60205260409020543031108015906116d35750600b54336000908152601a602052604090205411155b15156116db57fe5b336000818152601a602081815260408084208054600b805491909103905560188352818520546019845282862055929091528154918390555190945084156108fc0291859190818181858888f1935050505015801561173e573d6000803e3d6000fd5b5060408051338152600160208201528082018490526080606082018190526024908201527f612075736572206a757374207769746864726577207465616d206f6e6520736860a08201527f617265730000000000000000000000000000000000000000000000000000000060c082015290517fd3f9e5fafb3e0b113ded905c2ee0d2a3750365449219bcc18de7d0c892150e7c9181900360e00190a15b6119b9565b336000908152601f602052604081205411156119b957336000908152601f602052604090205460035461182191610e8091610f009190600101600a0a6126af565b33600090815260236020526040902081905560115461184491610e9b91906126af565b3360009081526020808052604080832084905560219091529020546118699190612a80565b33600090815260226020526040812082905510156119b957336000908152602260205260409020543031108015906118b257506012543360009081526022602052604090205411155b15156118ba57fe5b50336000818152602260208181526040808420805460128054919091039055828052818520546021845282862055929091528154918390555190929183156108fc02918491818181858888f1935050505015801561191c573d6000803e3d6000fd5b5060408051338152600260208201528082018390526080606082018190526024908201527f612075736572206a757374207769746864726577207465616d206f6e6520736860a08201527f617265730000000000000000000000000000000000000000000000000000000060c082015290517fd3f9e5fafb3e0b113ded905c2ee0d2a3750365449219bcc18de7d0c892150e7c9181900360e00190a15b5050565b60295460009081908190819081908190819062010000900460ff16156119e257600080fd5b60295460ff6101009091041615156001146119fc57600080fd5b6028544210611a55576040805160e560020a62461bcd02815260206004820152601660248201527f697420697320746f6f206c61746520746f20706c617900000000000000000000604482015290519081900360640190fd5b602754421015611aaf576040805160e560020a62461bcd02815260206004820152601760248201527f697420697320746f6f206561726c7920746f20706c6179000000000000000000604482015290519081900360640190fd5b333214611af4576040805160e560020a62461bcd0281526020600482015260196024820152600080516020612d27833981519152604482015290519081900360640190fd5b60295460ff16158015611b0957506027544210155b8015611b16575060285442105b15611b29576029805460ff191660011790555b611b3233612a92565b151560011415611b455760019650611b5d565b611b4e33612add565b151560011415611b5d57600296505b866001148015611b6d5750601454155b80611b835750866002148015611b835750601c54155b15611b95576024805434019055611bc1565b611ba46113a0346005546126af565b60248054348390039081019091559096509450611bc18688612b20565b611bc9612b5b565b8660011415611d4957600c54341015611c52576040805160e560020a62461bcd02815260206004820152602860248201527f796f75206d75737420627579206174206c65617374206f6e65205465616d204f60448201527f6e65207368617265000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b3360009081526015602052604090205460ff161515611cd557336000818152601560205260408120805460ff191660019081179091556014805491820181559091527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec01805473ffffffffffffffffffffffffffffffffffffffff191690911790555b3360009081526016602052604090208054349081019091556008805482019055611d0d90611d0690620186a06126e5565b60026126af565b600c8054820190819055909450611d259034906126e5565b33600090815260176020526040902080548201905560098054820190559250611ebe565b8660021415611ebe57601354341015611dd2576040805160e560020a62461bcd02815260206004820152602860248201527f796f75206d75737420627579206174206c65617374206f6e65205465616d205460448201527f776f207368617265000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b336000908152601d602052604090205460ff161515611e5557336000818152601d60205260408120805460ff19166001908117909155601c805491820181559091527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a21101805473ffffffffffffffffffffffffffffffffffffffff191690911790555b336000908152601e60205260409020805434908101909155600f805482019055611e8690611d0690620186a06126e5565b60138054820190819055909250611e9e9034906126e5565b336000908152601f60205260409020805482019055601080548201905590505b604080513381523460208201528082018990526080606082018190526017908201527f61206e657720627579206a7573742068617070656e656400000000000000000060a082015290517f5e77d806c40b3b553986e422d697c9c1639d466d631f62c4fea89e2e15510ae39181900360c00190a150505050505050565b600d5481565b6060600f546008541115611fe1576007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015611fd55780601f10611faa57610100808354040283529160200191611fd5565b820191906000526020600020905b815481529060010190602001808311611fb857829003601f168201915b50505050509050611389565b600f54600854101561204857600e805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015611fd55780601f10611faa57610100808354040283529160200191611fd5565b600f546008541415611389575060408051808201909152600a81527f61207469653f20777466000000000000000000000000000000000000000000006020820152611389565b601d6020526000908152604090205460ff1681565b60008054600160a060020a03163314612106576040805160e560020a62461bcd02815260206004820152601560248201527f796f7520617265206e6f7420746865206f776e65720000000000000000000000604482015290519081900360640190fd5b600154600010612186576040805160e560020a62461bcd02815260206004820152602260248201527f796f75206d757374206861766520616e20617661696c61626c652062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600154303110156121e1576040805160e560020a62461bcd02815260206004820152601660248201527f796f752063616e6e6f74207072696e74206d6f6e657900000000000000000000604482015290519081900360640190fd5b506001805460009182905581546040519192600160a060020a039091169183156108fc0291849190818181858888f19350505050158015612226573d6000803e3d6000fd5b5060005460408051600160a060020a0390921682526020820183905260608282018190526015908301527f74686520646576206a75737420776974686472657700000000000000000000006080830152517fdf8379729dc015ce4a0fe6dc41c7cc757741f28b67dabb83ec43bba5c18965129181900360a00190a150565b600e805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610fb45780601f10610f8957610100808354040283529160200191610fb4565b60055481565b60295462010000900460ff1681565b602854600090421061232857506000611389565b60295460ff16158015612344575060295462010000900460ff16155b80156123585750602954610100900460ff16155b156123695742602754039050611389565b42602854039050611389565b60015481565b4290565b60095481565b60265481565b60275481565b60255481565b60285481565b601c805482908110610d8257fe5b3332146123f0576040805160e560020a62461bcd0281526020600482015260196024820152600080516020612d27833981519152604482015290519081900360640190fd5b60295462010000900460ff161561240657600080fd5b60295460ff61010090910416151560011461242057600080fd5b6028544210612479576040805160e560020a62461bcd02815260206004820152601660248201527f697420697320746f6f206c61746520746f20706c617900000000000000000000604482015290519081900360640190fd5b6027544210156124d3576040805160e560020a62461bcd02815260206004820152601760248201527f697420697320746f6f206561726c7920746f20706c6179000000000000000000604482015290519081900360640190fd5b6124db612bab565b60248054349081019091556040805133815260208101929092526060828201819052601e908301527f736f6d656f6e65206a75737420726564756365642074686520636c6f636b00006080830152517fcf4b0765cda2c8471307628b7571da2d0de77a741fbe33a0a3426baf1f7f67299181900360a00190a1565b601c546014540190565b6000806000806000806000806000601760008b600160a060020a0316600160a060020a0316815260200190815260200160002054111561260d57600160a060020a0389166000908152601760205260409020546003546125ce91610e8091610e789190600101600a0a6126af565b96506125df610e9b600a54896126af565b600160a060020a038a16600090815260196020526040902054909650612606908790612a80565b945061269b565b600160a060020a0389166000908152601f6020526040812054111561269b57600160a060020a0389166000908152601f602052604090205460035461266091610e8091610f009190600101600a0a6126af565b9350612671610e9b601154866126af565b600160a060020a038a16600090815260216020526040902054909350612698908490612a80565b91505b509092019695505050505050565b601c5490565b6000808315156126c257600091506126de565b508282028284828115156126d257fe5b04146126da57fe5b8091505b5092915050565b60008082848115156126f357fe5b04949350505050565b6000806127106113a06024546002546126af565b6001805482018155602454600a8054918490039182019055600b80548201905560408051838152908101829052608060208201818152600780546002610100828916150260001901909116049284018390529597509295507fadd50c0a29e907683af3fde4b66a36c4fa58d22668076b798f44dca0cccc7f729492869291606083019060a0840190869080156127e75780601f106127bc576101008083540402835291602001916127e7565b820191906000526020600020905b8154815290600101906020018083116127ca57829003601f168201915b5050928303905250600d81527f7465616d206f6e6520776f6e210000000000000000000000000000000000000060208201526040805191829003019350915050a15050565b6000806128406113a06024546002546126af565b6001805482018155602454601180549184900391820190556012805482019055604080516002808252918101839052608060208201818152600e80549687161561010002600019019096168490049183018290529597509295507fadd50c0a29e907683af3fde4b66a36c4fa58d22668076b798f44dca0cccc7f7294919392869290606083019060a08401908690801561291b5780601f106128f05761010080835404028352916020019161291b565b820191906000526020600020905b8154815290600101906020018083116128fe57829003601f168201915b5050928303905250600d81527f7465616d2074776f20776f6e210000000000000000000000000000000000000060208201526040805191829003019350915050a15050565b6000806129746113a06024546002546126af565b600180548201905560245490925082900390506129928160026126e5565b600a805490910190556129a68160026126e5565b600b805490910190556129ba8160026126e5565b6011805490910190556129ce8160026126e5565b60128054909101905560408051600081528082018390526080602082018190526004908201527f546965640000000000000000000000000000000000000000000000000000000060a082015260c060608201819052600b908201527f61207469653f212077746600000000000000000000000000000000000000000060e082015290517fadd50c0a29e907683af3fde4b66a36c4fa58d22668076b798f44dca0cccc7f72918190036101000190a15050565b600082821115612a8c57fe5b50900390565b600454600090612aaa90600160a060020a0316612c7c565b600160f860020a031916612abd83612c7c565b600160f860020a03191611612ad457506001612ad8565b5060005b919050565b600454600090612af590600160a060020a0316612c7c565b600160f860020a031916612b0883612c7c565b600160f860020a0319161115612ad457506001612ad8565b8060011415612b3e57600a805483019055600b8054830190556119b9565b80600214156119b957601180548301905560128054830190555050565b60008066038d7ea4c6800034106119b95766038d7ea4c680009150612b8034836126e5565b9050602654420160285482011115612b9f5760265442016028556119b9565b60288054820190555050565b60008066038d7ea4c6800034106119b95766038d7ea4c680009150612bd034836126e5565b6028549091508110612c52576040805160e560020a62461bcd02815260206004820152602860248201527f796f752073656e7420616e2061627375726420616d6f756e74212072656c617860448201527f20766974616c696b000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b4261012c0181602854031015612c6f5761012c42016028556119b9565b6028805482900390555050565b600080612c90612c8b84612c97565b612cc3565b9392505050565b604080517414000000000000000000000000000000000000000092909218601483015260348201905290565b600080805b6001811015612d1957610100820291508351811015612d11578381815181101515612cef57fe5b90602001015160f860020a900460f860020a0260f860020a900460ff16821791505b600101612cc8565b5060f860020a02929150505600796f752063616e6e6f7420757365206120636f6e747261637400000000000000a165627a7a72305820c736ea7a96b0bed6a2b60065ad7a7de79be34eafc47c0de1144813e92151b46f0029

Swarm Source

bzzr://c736ea7a96b0bed6a2b60065ad7a7de79be34eafc47c0de1144813e92151b46f

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
Loading...
Loading
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.