ETH Price: $2,442.43 (+3.41%)

Contract

0x674695B11710111dEc32f247713631e1e0028597
 

Overview

ETH Balance

0.220860382663860499 ETH

Eth Value

$539.44 (@ $2,442.43/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw69316732018-12-22 9:14:252092 days ago1545470065IN
0x674695B1...1e0028597
0 ETH0.00013292.1
Buy Xaddr62903752018-09-07 21:09:312198 days ago1536354571IN
0x674695B1...1e0028597
0.00007976 ETH0.000813074
Withdraw62903732018-09-07 21:09:042198 days ago1536354544IN
0x674695B1...1e0028597
0 ETH0.000279243
Buy Xaddr62881952018-09-07 12:18:222198 days ago1536322702IN
0x674695B1...1e0028597
0.000075 ETH0.001090293.51
Withdraw62878282018-09-07 10:44:052198 days ago1536317045IN
0x674695B1...1e0028597
0 ETH0.000765244.1
Buy Xaddr62873242018-09-07 8:43:112198 days ago1536309791IN
0x674695B1...1e0028597
0.0000751 ETH0.001298416.1
Transfer62868872018-09-07 6:59:152198 days ago1536303555IN
0x674695B1...1e0028597
0.0075 ETH0.002072016.1
Withdraw62868712018-09-07 6:56:442198 days ago1536303404IN
0x674695B1...1e0028597
0 ETH0.000286336
Transfer62868682018-09-07 6:55:562198 days ago1536303356IN
0x674695B1...1e0028597
0.000076 ETH0.001029385.1
Buy Xaddr62868602018-09-07 6:54:082198 days ago1536303248IN
0x674695B1...1e0028597
0.00007976 ETH0.0029946915
Transfer62868522018-09-07 6:52:452198 days ago1536303165IN
0x674695B1...1e0028597
0.000076 ETH0.001590394.1
Withdraw62821512018-09-06 12:04:202199 days ago1536235460IN
0x674695B1...1e0028597
0 ETH0.000381788
Buy Xaddr62808632018-09-06 6:54:082199 days ago1536216848IN
0x674695B1...1e0028597
0.10241727 ETH0.001555314
Buy Xaddr62807942018-09-06 6:38:082199 days ago1536215888IN
0x674695B1...1e0028597
0.07575665 ETH0.000593733
Register Name Xn...62806922018-09-06 6:16:022199 days ago1536214562IN
0x674695B1...1e0028597
0.01 ETH0.0095500652
Register Name Xn...62806602018-09-06 6:08:522199 days ago1536214132IN
0x674695B1...1e0028597
0.01 ETH0.00096165
Register Name Xn...62806562018-09-06 6:07:182199 days ago1536214038IN
0x674695B1...1e0028597
0.01 ETH0.00074344
Register Name Xn...62806472018-09-06 6:05:222199 days ago1536213922IN
0x674695B1...1e0028597
0.01 ETH0.00074344
Register Name Xn...62805942018-09-06 5:53:172199 days ago1536213197IN
0x674695B1...1e0028597
0.01 ETH0.0074317240
Register Name Xn...62805892018-09-06 5:51:202199 days ago1536213080IN
0x674695B1...1e0028597
0.01 ETH0.0037158620
Register Name Xn...62805862018-09-06 5:50:242199 days ago1536213024IN
0x674695B1...1e0028597
0.01 ETH0.000928965
Register Name Xn...62805802018-09-06 5:49:162199 days ago1536212956IN
0x674695B1...1e0028597
0.01 ETH0.000928965
Buy Xaddr62805642018-09-06 5:44:372199 days ago1536212677IN
0x674695B1...1e0028597
0.00763508 ETH0.001458054
Transfer62804142018-09-06 5:10:402199 days ago1536210640IN
0x674695B1...1e0028597
0.01 ETH0.0143160840
Transfer62804132018-09-06 5:10:222199 days ago1536210622IN
0x674695B1...1e0028597
0.01 ETH0.010234
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
69316732018-12-22 9:14:252092 days ago1545470065
0x674695B1...1e0028597
0.0044105 ETH
62903752018-09-07 21:09:312198 days ago1536354571
0x674695B1...1e0028597
0.00009972 ETH
62903732018-09-07 21:09:042198 days ago1536354544
0x674695B1...1e0028597
0.00009972 ETH
62881952018-09-07 12:18:222198 days ago1536322702
0x674695B1...1e0028597
0.000003 ETH
62878282018-09-07 10:44:052198 days ago1536317045
0x674695B1...1e0028597
0.04740109 ETH
62878282018-09-07 10:44:052198 days ago1536317045
0x674695B1...1e0028597
0.00098977 ETH
62873242018-09-07 8:43:112198 days ago1536309791
0x674695B1...1e0028597
0.000003 ETH
62868872018-09-07 6:59:152198 days ago1536303555
0x674695B1...1e0028597
0.0003 ETH
62868712018-09-07 6:56:442198 days ago1536303404
0x674695B1...1e0028597
0.10582834 ETH
62868682018-09-07 6:55:562198 days ago1536303356
0x674695B1...1e0028597
0.00314674 ETH
62868602018-09-07 6:54:082198 days ago1536303248
0x674695B1...1e0028597
0.00000319 ETH
62868522018-09-07 6:52:452198 days ago1536303165
0x674695B1...1e0028597
0.00000304 ETH
62821512018-09-06 12:04:202199 days ago1536235460
0x674695B1...1e0028597
0.07487104 ETH
62808632018-09-06 6:54:082199 days ago1536216848
0x674695B1...1e0028597
0.00409669 ETH
62807942018-09-06 6:38:082199 days ago1536215888
0x674695B1...1e0028597
0.00303026 ETH
62806922018-09-06 6:16:022199 days ago1536214562
0x674695B1...1e0028597
0.01 ETH
62806602018-09-06 6:08:522199 days ago1536214132
0x674695B1...1e0028597
0.01 ETH
62806562018-09-06 6:07:182199 days ago1536214038
0x674695B1...1e0028597
0.01 ETH
62806472018-09-06 6:05:222199 days ago1536213922
0x674695B1...1e0028597
0.01 ETH
62805942018-09-06 5:53:172199 days ago1536213197
0x674695B1...1e0028597
0.01 ETH
62805892018-09-06 5:51:202199 days ago1536213080
0x674695B1...1e0028597
0.01 ETH
62805862018-09-06 5:50:242199 days ago1536213024
0x674695B1...1e0028597
0.01 ETH
62805802018-09-06 5:49:162199 days ago1536212956
0x674695B1...1e0028597
0.01 ETH
62805642018-09-06 5:44:372199 days ago1536212677
0x674695B1...1e0028597
0.0003054 ETH
62804142018-09-06 5:10:402199 days ago1536210640
0x674695B1...1e0028597
0.0004 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Fomo3D

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

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

pragma solidity ^0.4.24;

interface ExtSettingInterface {
    function getLongGap() external returns(uint256);
    function setLongGap(uint256 _gap) external;
    function getLongExtra() external returns(uint256);
    function setLongExtra(uint256 _extra) external;
}

interface FoundationInterface {
    function deposit() external payable;
}

interface PlayerBookInterface {
    function getPlayerID(address _addr) external returns (uint256);
    function getPlayerName(uint256 _pID) external view returns (bytes32);
    function getPlayerLAff(uint256 _pID) external view returns (uint256);
    function getPlayerAddr(uint256 _pID) external view returns (address);
    function getNameFee() external view returns (uint256);
    function registerNameXIDFromDapp(address _addr, bytes32 _name, uint256 _affCode, bool _all) external payable returns(bool, uint256);
    function registerNameXaddrFromDapp(address _addr, bytes32 _name, address _affCode, bool _all) external payable returns(bool, uint256);
    function registerNameXnameFromDapp(address _addr, bytes32 _name, bytes32 _affCode, bool _all) external payable returns(bool, uint256);
}

contract Events {
    event onNewName(
        uint256 indexed playerID,
        address indexed playerAddress,
        bytes32 indexed playerName,
        bool isNewPlayer,
        uint256 affiliateID,
        address affiliateAddress,
        bytes32 affiliateName,
        uint256 amountPaid,
        uint256 timeStamp
    );

    event onEndTx(
        uint256 compressedData,
        uint256 compressedIDs,
        bytes32 playerName,
        address playerAddress,
        uint256 ethIn,
        uint256 keysBought,
        address winnerAddr,
        bytes32 winnerName,
        uint256 amountWon,
        uint256 newPot,
        uint256 genAmount,
        uint256 potAmount,
        uint256 airDropPot
    );

    event onWithdraw(
        uint256 indexed playerID,
        address playerAddress,
        bytes32 playerName,
        uint256 ethOut,
        uint256 timeStamp
    );

    event onWithdrawAndDistribute(
        address playerAddress,
        bytes32 playerName,
        uint256 ethOut,
        uint256 compressedData,
        uint256 compressedIDs,
        address winnerAddr,
        bytes32 winnerName,
        uint256 amountWon,
        uint256 newPot,
        uint256 genAmount
    );

    event onBuyAndDistribute(
        address playerAddress,
        bytes32 playerName,
        uint256 ethIn,
        uint256 compressedData,
        uint256 compressedIDs,
        address winnerAddr,
        bytes32 winnerName,
        uint256 amountWon,
        uint256 newPot,
        uint256 genAmount
    );

    event onReLoadAndDistribute(
        address playerAddress,
        bytes32 playerName,
        uint256 compressedData,
        uint256 compressedIDs,
        address winnerAddr,
        bytes32 winnerName,
        uint256 amountWon,
        uint256 newPot,
        uint256 genAmount
    );

    event onAffiliatePayout(
        uint256 indexed affiliateID,
        address affiliateAddress,
        bytes32 affiliateName,
        uint256 indexed roundID,
        uint256 indexed buyerID,
        uint256 amount,
        uint256 timeStamp
    );
}

contract Ownable {
    address public owner;

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

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

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

    function transferOwnership(address _newOwner) public onlyOwner {
        require(_newOwner != address(0), "Invalid address.");

        owner = _newOwner;

        emit OwnershipTransferred(owner, _newOwner);
    }
}

contract Fomo3D is Ownable, Events {
    using SafeMath for *;
    using NameFilter for string;
    using KeysCalcLong for uint256;

    ExtSettingInterface private extSetting = ExtSettingInterface(0xb62aB70d1418c3Dfad706C0FdEA6499d2F380cE9);
    FoundationInterface private foundation = FoundationInterface(0xC00C9ed7f35Ca2373462FD46d672084a6a128E2B);
	PlayerBookInterface private playerBook = PlayerBookInterface(0x6384FE27b7b6cC999Aa750689c6B04acaeaB78D7);

    string constant public name = "Fomo3D Asia (Official)";
    string constant public symbol = "F3DA";

    uint256 constant private rndInit_ = 1 hours;
    uint256 constant private rndInc_ = 30 seconds;
    uint256 constant private rndMax_ = 24 hours;

	uint256 private rndExtra_ = extSetting.getLongExtra();
    uint256 private rndGap_ = extSetting.getLongGap();

	uint256 public airDropPot_;
    uint256 public airDropTracker_ = 0;
    uint256 public rID_;

    bool public activated_ = false;

    mapping (address => uint256) public pIDxAddr_;
    mapping (bytes32 => uint256) public pIDxName_;
    mapping (uint256 => Datasets.Player) public plyr_;
    mapping (uint256 => mapping (uint256 => Datasets.PlayerRounds)) public plyrRnds_;
    mapping (uint256 => mapping (bytes32 => bool)) public plyrNames_;

    mapping (uint256 => Datasets.Round) public round_;
    mapping (uint256 => mapping(uint256 => uint256)) public rndTmEth_;

    mapping (uint256 => uint256) public fees_;
    mapping (uint256 => uint256) public potSplit_;

    modifier isActivated() {
        require(activated_ == true, "its not ready yet.  check ?eta in discord");
        _;
    }

    modifier isHuman() {
        address _addr = msg.sender;
        uint256 _codeLength;

        assembly {
            _codeLength := extcodesize(_addr)
        }

        require(_codeLength == 0, "sorry humans only");
        _;
    }

    modifier isWithinLimits(uint256 _eth) {
        require(_eth >= 1000000000, "pocket lint: not a valid currency");
        require(_eth <= 100000000000000000000000, "no vitalik, no");
        _;
    }

    constructor() public {
		// 团队分配比例(0 = 鲸队; 1 = 熊队; 2 = 蛇队; 3 = 牛队)

        fees_[0] = 30;   //50% 奖池, 15% 推荐人, 4% 社区基金, 1% 空投奖池
        fees_[1] = 35;   //45% 奖池, 15% 推荐人, 4% 社区基金, 1% 空投奖池
        fees_[2] = 50;   //30% 奖池, 15% 推荐人, 4% 社区基金, 1% 空投奖池
        fees_[3] = 45;   //35% 奖池, 15% 推荐人, 4% 社区基金, 1% 空投奖池

        potSplit_[0] = 30;  //58% 中奖者, 10% 下一轮奖池, 2% 社区基金
        potSplit_[1] = 25;  //58% 中奖者, 15% 下一轮奖池, 2% 社区基金
        potSplit_[2] = 10;  //58% 中奖者, 30% 下一轮奖池, 2% 社区基金
        potSplit_[3] = 15;  //58% 中奖者, 25% 下一轮奖池, 2% 社区基金
	}

    function() public payable isActivated isHuman isWithinLimits(msg.value) {
        Datasets.EventData memory _eventData_ = determinePID(_eventData_);

        uint256 _pID = pIDxAddr_[msg.sender];
        buyCore(_pID, plyr_[_pID].laff, 2, _eventData_);
    }

    function setExtSettingInterface(address _extSetting) public onlyOwner {
        extSetting = ExtSettingInterface(_extSetting);
    }

    function setFoundationInterface(address _foundation) public onlyOwner {
        foundation = FoundationInterface(_foundation);
    }

    function setPlayerBookInterface(address _playerBook) public onlyOwner {
        playerBook = PlayerBookInterface(_playerBook);
    }

    function buyXid(uint256 _affCode, uint256 _team) public payable isActivated isHuman isWithinLimits(msg.value) {
        Datasets.EventData memory _eventData_ = determinePID(_eventData_);

        uint256 _pID = pIDxAddr_[msg.sender];

        if (_affCode == 0 || _affCode == _pID) {
            _affCode = plyr_[_pID].laff;
        } else if (_affCode != plyr_[_pID].laff) {
            plyr_[_pID].laff = _affCode;
        }

        _team = verifyTeam(_team);

        buyCore(_pID, _affCode, _team, _eventData_);
    }

    function buyXaddr(address _affCode, uint256 _team) public payable isActivated isHuman isWithinLimits(msg.value) {
        Datasets.EventData memory _eventData_ = determinePID(_eventData_);

        uint256 _pID = pIDxAddr_[msg.sender];

        uint256 _affID;
        if (_affCode == address(0) || _affCode == msg.sender) {
            _affID = plyr_[_pID].laff;
        } else {
            _affID = pIDxAddr_[_affCode];
            if (_affID != plyr_[_pID].laff) {
                plyr_[_pID].laff = _affID;
            }
        }

        _team = verifyTeam(_team);

        buyCore(_pID, _affID, _team, _eventData_);
    }

    function buyXname(bytes32 _affCode, uint256 _team) public payable isActivated isHuman isWithinLimits(msg.value) {
        Datasets.EventData memory _eventData_ = determinePID(_eventData_);

        uint256 _pID = pIDxAddr_[msg.sender];

        uint256 _affID;
        if (_affCode == "" || _affCode == plyr_[_pID].name) {
            _affID = plyr_[_pID].laff;
        } else {
            _affID = pIDxName_[_affCode];
            if (_affID != plyr_[_pID].laff) {
                plyr_[_pID].laff = _affID;
            }
        }

        _team = verifyTeam(_team);

        buyCore(_pID, _affID, _team, _eventData_);
    }

    function reLoadXid(uint256 _affCode, uint256 _team, uint256 _eth) public payable isActivated isHuman isWithinLimits(msg.value) {
        Datasets.EventData memory _eventData_;

        uint256 _pID = pIDxAddr_[msg.sender];

        if (_affCode == 0 || _affCode == _pID) {
            _affCode = plyr_[_pID].laff;
        } else if (_affCode != plyr_[_pID].laff) {
            plyr_[_pID].laff = _affCode;
        }

        _team = verifyTeam(_team);

        reLoadCore(_pID, _affCode, _team, _eth, _eventData_);
    }

    function reLoadXaddr(address _affCode, uint256 _team, uint256 _eth) public payable isActivated isHuman isWithinLimits(msg.value) {
        Datasets.EventData memory _eventData_;

        uint256 _pID = pIDxAddr_[msg.sender];

        uint256 _affID;
        if (_affCode == address(0) || _affCode == msg.sender) {
            _affID = plyr_[_pID].laff;
        } else {
            _affID = pIDxAddr_[_affCode];
            if (_affID != plyr_[_pID].laff) {
                plyr_[_pID].laff = _affID;
            }
        }

        _team = verifyTeam(_team);

        reLoadCore(_pID, _affID, _team, _eth, _eventData_);
    }

    function reLoadXname(bytes32 _affCode, uint256 _team, uint256 _eth) public payable isActivated isHuman isWithinLimits(msg.value) {
        Datasets.EventData memory _eventData_;

        uint256 _pID = pIDxAddr_[msg.sender];

        uint256 _affID;
        if (_affCode == "" || _affCode == plyr_[_pID].name) {
            _affID = plyr_[_pID].laff;
        } else {
            _affID = pIDxName_[_affCode];
            if (_affID != plyr_[_pID].laff) {
                plyr_[_pID].laff = _affID;
            }
        }

        _team = verifyTeam(_team);

        reLoadCore(_pID, _affID, _team, _eth, _eventData_);
    }

    function withdraw() public isActivated isHuman {
        uint256 _now = now;
        uint256 _eth;
        uint256 _pID = pIDxAddr_[msg.sender];
        uint256 _rID = rID_;

        if (_now > round_[_rID].end && round_[_rID].ended == false && round_[_rID].plyr != 0) {
            Datasets.EventData memory _eventData_;

			round_[_rID].ended = true;
            _eventData_ = endRound(_eventData_);

            _eth = withdrawEarnings(_pID);
            if (_eth > 0) {
                plyr_[_pID].addr.transfer(_eth);
            }

            _eventData_.compressedData = _eventData_.compressedData + (_now * 1000000000000000000);
            _eventData_.compressedIDs = _eventData_.compressedIDs + _pID;

            emit Events.onWithdrawAndDistribute(
                msg.sender,
                plyr_[_pID].name,
                _eth,
                _eventData_.compressedData,
                _eventData_.compressedIDs,
                _eventData_.winnerAddr,
                _eventData_.winnerName,
                _eventData_.amountWon,
                _eventData_.newPot,
                _eventData_.genAmount
            );
        } else {
            _eth = withdrawEarnings(_pID);
            if (_eth > 0) {
                plyr_[_pID].addr.transfer(_eth);
            }

            emit Events.onWithdraw(_pID, msg.sender, plyr_[_pID].name, _eth, _now);
        }
    }

    function registerNameXID(string _nameString, uint256 _affCode, bool _all) public payable isHuman {
        bytes32 _name = _nameString.nameFilter();
        address _addr = msg.sender;
        uint256 _paid = msg.value;
        (bool _isNewPlayer, uint256 _affID) = playerBook.registerNameXIDFromDapp.value(_paid)(_addr, _name, _affCode, _all);

        uint256 _pID = pIDxAddr_[_addr];

        emit Events.onNewName(_pID, _addr, _name, _isNewPlayer, _affID, plyr_[_affID].addr, plyr_[_affID].name, _paid, now);
    }

    function registerNameXaddr(string _nameString, address _affCode, bool _all) public payable isHuman {
        bytes32 _name = _nameString.nameFilter();
        address _addr = msg.sender;
        uint256 _paid = msg.value;
        (bool _isNewPlayer, uint256 _affID) = playerBook.registerNameXaddrFromDapp.value(msg.value)(msg.sender, _name, _affCode, _all);

        uint256 _pID = pIDxAddr_[_addr];

        emit Events.onNewName(_pID, _addr, _name, _isNewPlayer, _affID, plyr_[_affID].addr, plyr_[_affID].name, _paid, now);
    }

    function registerNameXname(string _nameString, bytes32 _affCode, bool _all) public payable isHuman {
        bytes32 _name = _nameString.nameFilter();
        address _addr = msg.sender;
        uint256 _paid = msg.value;
        (bool _isNewPlayer, uint256 _affID) = playerBook.registerNameXnameFromDapp.value(msg.value)(msg.sender, _name, _affCode, _all);

        uint256 _pID = pIDxAddr_[_addr];

        emit Events.onNewName(_pID, _addr, _name, _isNewPlayer, _affID, plyr_[_affID].addr, plyr_[_affID].name, _paid, now);
    }

    function getBuyPrice() public view returns(uint256) {
        uint256 _rID = rID_;
        uint256 _now = now;
        if (_now > round_[_rID].strt + rndGap_ && (_now <= round_[_rID].end || (_now > round_[_rID].end && round_[_rID].plyr == 0))) {
            return ((round_[_rID].keys.add(1000000000000000000)).ethRec(1000000000000000000));
        } else {
            return (75000000000000);
        }
    }

    function getTimeLeft() public view returns(uint256) {
        uint256 _rID = rID_;
        uint256 _now = now;
        if (_now < round_[_rID].end) {
            if (_now > round_[_rID].strt + rndGap_) {
                return ((round_[_rID].end).sub(_now));
            } else {
                return ((round_[_rID].strt + rndGap_).sub(_now));
            }
        } else {
            return(0);
        }
    }

    function getPlayerVaults(uint256 _pID) public view returns(uint256 ,uint256, uint256) {
        uint256 _rID = rID_;
        if (now > round_[_rID].end && round_[_rID].ended == false && round_[_rID].plyr != 0) {
            if (round_[_rID].plyr == _pID) {
                return (
                    (plyr_[_pID].win).add(((round_[_rID].pot).mul(48)) / 100),
                    (plyr_[_pID].gen).add(getPlayerVaultsHelper(_pID, _rID).sub(plyrRnds_[_pID][_rID].mask)),
                    plyr_[_pID].aff
                );
            } else {
                return (
                    plyr_[_pID].win,
                    (plyr_[_pID].gen).add(getPlayerVaultsHelper(_pID, _rID).sub(plyrRnds_[_pID][_rID].mask)),
                    plyr_[_pID].aff
                );
            }
        } else {
            return (
                plyr_[_pID].win,
                (plyr_[_pID].gen).add(calcUnMaskedEarnings(_pID, plyr_[_pID].lrnd)),
                plyr_[_pID].aff
            );
        }
    }

    function getPlayerVaultsHelper(uint256 _pID, uint256 _rID) private view returns(uint256) {
        return (((((round_[_rID].mask).add(((((round_[_rID].pot).mul(potSplit_[round_[_rID].team])) / 100).mul(1000000000000000000)) / (round_[_rID].keys))).mul(plyrRnds_[_pID][_rID].keys)) / 1000000000000000000));
    }

    function getCurrentRoundInfo() public view returns(uint256, uint256, uint256, uint256, uint256, uint256, uint256, address, bytes32, uint256, uint256, uint256, uint256, uint256) {
        uint256 _rID = rID_;
        return (
            round_[_rID].ico,                               // 0
            _rID,                                           // 1
            round_[_rID].keys,                              // 2
            round_[_rID].end,                               // 3
            round_[_rID].strt,                              // 4
            round_[_rID].pot,                               // 5
            (round_[_rID].team + (round_[_rID].plyr * 10)), // 6
            plyr_[round_[_rID].plyr].addr,                  // 7
            plyr_[round_[_rID].plyr].name,                  // 8
            rndTmEth_[_rID][0],                             // 9
            rndTmEth_[_rID][1],                             // 10
            rndTmEth_[_rID][2],                             // 11
            rndTmEth_[_rID][3],                             // 12
            airDropTracker_ + (airDropPot_ * 1000)          // 13
        );
    }

    function getPlayerInfoByAddress(address _addr) public view returns(uint256, bytes32, uint256, uint256, uint256, uint256, uint256) {
        uint256 _rID = rID_;

        if (_addr == address(0)) {
            _addr == msg.sender;
        }

        uint256 _pID = pIDxAddr_[_addr];

        return (
            _pID,                                                                   // 0
            plyr_[_pID].name,                                                       // 1
            plyrRnds_[_pID][_rID].keys,                                             // 2
            plyr_[_pID].win,                                                        // 3
            (plyr_[_pID].gen).add(calcUnMaskedEarnings(_pID, plyr_[_pID].lrnd)),    // 4
            plyr_[_pID].aff,                                                        // 5
            plyrRnds_[_pID][_rID].eth                                               // 6
        );
    }

    function buyCore(uint256 _pID, uint256 _affID, uint256 _team, Datasets.EventData memory _eventData_) private {
        uint256 _rID = rID_;

        uint256 _now = now;
        if (_now > (round_[_rID].strt + rndGap_) && (_now <= round_[_rID].end || (_now > round_[_rID].end && round_[_rID].plyr == 0))) {
            core(_rID, _pID, msg.value, _affID, _team, _eventData_);
        } else {
            if (_now > round_[_rID].end && round_[_rID].ended == false) {
			    round_[_rID].ended = true;
                _eventData_ = endRound(_eventData_);

                _eventData_.compressedData = _eventData_.compressedData + (_now * 1000000000000000000);
                _eventData_.compressedIDs = _eventData_.compressedIDs + _pID;

                emit Events.onBuyAndDistribute(
                    msg.sender,
                    plyr_[_pID].name,
                    msg.value,
                    _eventData_.compressedData,
                    _eventData_.compressedIDs,
                    _eventData_.winnerAddr,
                    _eventData_.winnerName,
                    _eventData_.amountWon,
                    _eventData_.newPot,
                    _eventData_.genAmount
                );
            }

            plyr_[_pID].gen = plyr_[_pID].gen.add(msg.value);
        }
    }

    function reLoadCore(uint256 _pID, uint256 _affID, uint256 _team, uint256 _eth, Datasets.EventData memory _eventData_) private {
        uint256 _rID = rID_;

        uint256 _now = now;
        if (_now > round_[_rID].strt + rndGap_ && (_now <= round_[_rID].end || (_now > round_[_rID].end && round_[_rID].plyr == 0))) {
            plyr_[_pID].gen = withdrawEarnings(_pID).sub(_eth);

            core(_rID, _pID, _eth, _affID, _team, _eventData_);
        } else if (_now > round_[_rID].end && round_[_rID].ended == false) {
            round_[_rID].ended = true;
            _eventData_ = endRound(_eventData_);

            _eventData_.compressedData = _eventData_.compressedData + (_now * 1000000000000000000);
            _eventData_.compressedIDs = _eventData_.compressedIDs + _pID;

            emit Events.onReLoadAndDistribute(
                msg.sender,
                plyr_[_pID].name,
                _eventData_.compressedData,
                _eventData_.compressedIDs,
                _eventData_.winnerAddr,
                _eventData_.winnerName,
                _eventData_.amountWon,
                _eventData_.newPot,
                _eventData_.genAmount
            );
        }
    }

    function core(uint256 _rID, uint256 _pID, uint256 _eth, uint256 _affID, uint256 _team, Datasets.EventData memory _eventData_) private {
        extSetting.setLongExtra(_pID);

        if (plyrRnds_[_pID][_rID].keys == 0) {
            _eventData_ = managePlayer(_pID, _eventData_);
        }

        if (round_[_rID].eth < 100000000000000000000 && plyrRnds_[_pID][_rID].eth.add(_eth) > 1000000000000000000) {
            uint256 _availableLimit = (1000000000000000000).sub(plyrRnds_[_pID][_rID].eth);
            uint256 _refund = _eth.sub(_availableLimit);
            plyr_[_pID].gen = plyr_[_pID].gen.add(_refund);
            _eth = _availableLimit;
        }

        if (_eth > 1000000000) {
            uint256 _keys = (round_[_rID].eth).keysRec(_eth);
            if (_keys >= 1000000000000000000) {
                updateTimer(_keys, _rID);

                if (round_[_rID].plyr != _pID) {
                    round_[_rID].plyr = _pID;
                }
                if (round_[_rID].team != _team) {
                    round_[_rID].team = _team;
                }

                _eventData_.compressedData = _eventData_.compressedData + 100;
            }

            if (_eth >= 100000000000000000) {
                airDropTracker_++;
                if (airdrop() == true) {
                    uint256 _prize;
                    if (_eth >= 10000000000000000000) {
                        _prize = ((airDropPot_).mul(75)) / 100;
                        plyr_[_pID].win = (plyr_[_pID].win).add(_prize);

                        airDropPot_ = (airDropPot_).sub(_prize);

                        _eventData_.compressedData += 300000000000000000000000000000000;
                    } else if (_eth >= 1000000000000000000 && _eth < 10000000000000000000) {
                        _prize = ((airDropPot_).mul(50)) / 100;
                        plyr_[_pID].win = (plyr_[_pID].win).add(_prize);

                        airDropPot_ = (airDropPot_).sub(_prize);

                        _eventData_.compressedData += 200000000000000000000000000000000;
                    } else if (_eth >= 100000000000000000 && _eth < 1000000000000000000) {
                        _prize = ((airDropPot_).mul(25)) / 100;
                        plyr_[_pID].win = (plyr_[_pID].win).add(_prize);

                        airDropPot_ = (airDropPot_).sub(_prize);

                        _eventData_.compressedData += 300000000000000000000000000000000;
                    }

                    _eventData_.compressedData += 10000000000000000000000000000000;
                    _eventData_.compressedData += _prize * 1000000000000000000000000000000000;

                    airDropTracker_ = 0;
                }
            }

            _eventData_.compressedData = _eventData_.compressedData + (airDropTracker_ * 1000);

            plyrRnds_[_pID][_rID].keys = _keys.add(plyrRnds_[_pID][_rID].keys);
            plyrRnds_[_pID][_rID].eth = _eth.add(plyrRnds_[_pID][_rID].eth);

            round_[_rID].keys = _keys.add(round_[_rID].keys);
            round_[_rID].eth = _eth.add(round_[_rID].eth);
            rndTmEth_[_rID][_team] = _eth.add(rndTmEth_[_rID][_team]);

            _eventData_ = distributeExternal(_rID, _pID, _eth, _affID, _eventData_);
            _eventData_ = distributeInternal(_rID, _pID, _eth, _team, _keys, _eventData_);

		    endTx(_pID, _team, _eth, _keys, _eventData_);
        }
    }

    function calcUnMaskedEarnings(uint256 _pID, uint256 _rIDlast) private view returns(uint256) {
        return ((((round_[_rIDlast].mask).mul(plyrRnds_[_pID][_rIDlast].keys)) / (1000000000000000000)).sub(plyrRnds_[_pID][_rIDlast].mask));
    }

    function calcKeysReceived(uint256 _rID, uint256 _eth) public view returns(uint256) {
        uint256 _now = now;
        if (_now > round_[_rID].strt + rndGap_ && (_now <= round_[_rID].end || (_now > round_[_rID].end && round_[_rID].plyr == 0))) {
            return ((round_[_rID].eth).keysRec(_eth));
        } else {
            return ((_eth).keys());
        }
    }

    function iWantXKeys(uint256 _keys) public view returns(uint256) {
        uint256 _rID = rID_;

        uint256 _now = now;
        if (_now > round_[_rID].strt + rndGap_ && (_now <= round_[_rID].end || (_now > round_[_rID].end && round_[_rID].plyr == 0))) {
            return ((round_[_rID].keys.add(_keys)).ethRec(_keys));
        } else {
            return ((_keys).eth());
        }
    }

    function receivePlayerInfo(uint256 _pID, address _addr, bytes32 _name, uint256 _laff) external {
        require (msg.sender == address(playerBook), "your not playerNames contract... hmmm..");
        if (pIDxAddr_[_addr] != _pID) {
            pIDxAddr_[_addr] = _pID;
        }
        if (pIDxName_[_name] != _pID) {
            pIDxName_[_name] = _pID;
        }
        if (plyr_[_pID].addr != _addr) {
            plyr_[_pID].addr = _addr;
        }
        if (plyr_[_pID].name != _name) {
            plyr_[_pID].name = _name;
        }
        if (plyr_[_pID].laff != _laff) {
            plyr_[_pID].laff = _laff;
        }
        if (plyrNames_[_pID][_name] == false) {
            plyrNames_[_pID][_name] = true;
        }
    }

    function receivePlayerNameList(uint256 _pID, bytes32 _name) external {
        require (msg.sender == address(playerBook), "your not playerNames contract... hmmm..");
        if (plyrNames_[_pID][_name] == false) {
            plyrNames_[_pID][_name] = true;
        }
    }

    function determinePID(Datasets.EventData memory _eventData_) private returns (Datasets.EventData) {
        uint256 _pID = pIDxAddr_[msg.sender];
        if (_pID == 0) {
            _pID = playerBook.getPlayerID(msg.sender);
            bytes32 _name = playerBook.getPlayerName(_pID);
            uint256 _laff = playerBook.getPlayerLAff(_pID);

            pIDxAddr_[msg.sender] = _pID;
            plyr_[_pID].addr = msg.sender;

            if (_name != "") {
                pIDxName_[_name] = _pID;
                plyr_[_pID].name = _name;
                plyrNames_[_pID][_name] = true;
            }

            if (_laff != 0 && _laff != _pID) {
                plyr_[_pID].laff = _laff;
            }

            _eventData_.compressedData = _eventData_.compressedData + 1;
        }
        return (_eventData_);
    }

    function verifyTeam(uint256 _team) private pure returns (uint256) {
        if (_team < 0 || _team > 3) {
            return (2);
        } else {
            return (_team);
        }
    }

    function managePlayer(uint256 _pID, Datasets.EventData memory _eventData_) private returns (Datasets.EventData) {
        if (plyr_[_pID].lrnd != 0) {
            updateGenVault(_pID, plyr_[_pID].lrnd);
        }
        plyr_[_pID].lrnd = rID_;

        _eventData_.compressedData = _eventData_.compressedData + 10;

        return(_eventData_);
    }

    function endRound(Datasets.EventData memory _eventData_) private returns (Datasets.EventData) {
        uint256 _rID = rID_;

        uint256 _winPID = round_[_rID].plyr;
        uint256 _winTID = round_[_rID].team;

        uint256 _pot = round_[_rID].pot;

        // 中奖者拿走 58%
        uint256 _win = (_pot.mul(58)) / 100;

        // 提取社区基金 2%
        uint256 _com = (_pot / 50);

        // 所在团队分红
        uint256 _gen = (_pot.mul(potSplit_[_winTID])) / 100;

        // 进入下一轮奖池
        uint256 _res = ((_pot.sub(_win)).sub(_com)).sub(_gen);

        uint256 _ppt = (_gen.mul(1000000000000000000)) / (round_[_rID].keys);
        uint256 _dust = _gen.sub((_ppt.mul(round_[_rID].keys)) / 1000000000000000000);
        if (_dust > 0) {
            _gen = _gen.sub(_dust);
            _res = _res.add(_dust);
        }

        plyr_[_winPID].win = _win.add(plyr_[_winPID].win);

        foundation.deposit.value(_com)();

        round_[_rID].mask = _ppt.add(round_[_rID].mask);

        _eventData_.compressedData = _eventData_.compressedData + (round_[_rID].end * 1000000);
        _eventData_.compressedIDs = _eventData_.compressedIDs + (_winPID * 100000000000000000000000000) + (_winTID * 100000000000000000);
        _eventData_.winnerAddr = plyr_[_winPID].addr;
        _eventData_.winnerName = plyr_[_winPID].name;
        _eventData_.amountWon = _win;
        _eventData_.genAmount = _gen;
        _eventData_.newPot = _res;

        rID_++;
        _rID++;
        round_[_rID].strt = now;
        round_[_rID].end = now.add(rndInit_).add(rndGap_);
        round_[_rID].pot = _res;

        return (_eventData_);
    }

    function updateGenVault(uint256 _pID, uint256 _rIDlast) private {
        uint256 _earnings = calcUnMaskedEarnings(_pID, _rIDlast);
        if (_earnings > 0) {
            plyr_[_pID].gen = _earnings.add(plyr_[_pID].gen);
            plyrRnds_[_pID][_rIDlast].mask = _earnings.add(plyrRnds_[_pID][_rIDlast].mask);
        }
    }

    function updateTimer(uint256 _keys, uint256 _rID) private {
        uint256 _now = now;
        uint256 _newTime;
        if (_now > round_[_rID].end && round_[_rID].plyr == 0) {
            _newTime = (((_keys) / (1000000000000000000)).mul(rndInc_)).add(_now);
        } else {
            _newTime = (((_keys) / (1000000000000000000)).mul(rndInc_)).add(round_[_rID].end);
        }
        if (_newTime < (rndMax_).add(_now)) {
            round_[_rID].end = _newTime;
        } else {
            round_[_rID].end = rndMax_.add(_now);
        }
    }

    function airdrop() private view returns(bool) {
        uint256 seed = uint256(keccak256(abi.encodePacked(
            (now).add(block.difficulty).add(
                (uint256(keccak256(abi.encodePacked(block.coinbase)))) / (now)
            ).add(block.gaslimit).add(
                (uint256(keccak256(abi.encodePacked(msg.sender)))) / (now)
            ).add(block.number)
        )));
        if ((seed - ((seed / 1000) * 1000)) < airDropTracker_) {
            return true;
        } else {
            return false;
        }
    }

    function distributeExternal(uint256 _rID, uint256 _pID, uint256 _eth, uint256 _affID, Datasets.EventData memory _eventData_) private returns(Datasets.EventData) {
        // 社区基金 4%
        uint256 _com = _eth / 25;
        foundation.deposit.value(_com)();

        // 直接推荐人 5%
        uint256 _firstAff = _eth / 20;

        if (_affID == _pID || plyr_[_affID].name == "") {
            _affID = 1;
        }
        plyr_[_affID].aff = _firstAff.add(plyr_[_affID].aff);

        emit Events.onAffiliatePayout(_affID, plyr_[_affID].addr, plyr_[_affID].name, _rID, _pID, _firstAff, now);

        // 二级推荐人 10%
        uint256 _secondAff = _eth / 10;

        uint256 _secondAffID = plyr_[_affID].laff;
        if (_secondAffID == plyr_[_secondAffID].laff && plyr_[_secondAffID].name == "") {
            _secondAffID = 1;
        }
        plyr_[_secondAffID].aff = _secondAff.add(plyr_[_secondAffID].aff);

        emit Events.onAffiliatePayout(_secondAffID, plyr_[_secondAffID].addr, plyr_[_secondAffID].name, _rID, _affID, _secondAff, now);

        return (_eventData_);
    }

    function distributeInternal(uint256 _rID, uint256 _pID, uint256 _eth, uint256 _team, uint256 _keys, Datasets.EventData memory _eventData_) private returns(Datasets.EventData) {
        // 团队分红
        uint256 _gen = (_eth.mul(fees_[_team])) / 100;

        // 空投奖池 1%
        uint256 _air = (_eth / 100);
        airDropPot_ = airDropPot_.add(_air);

        // 奖池
        uint256 _pot = _eth.sub((_eth / 5).add(_gen));

        uint256 _dust = updateMasks(_rID, _pID, _gen, _keys);
        if (_dust > 0) {
            _gen = _gen.sub(_dust);
        }

        round_[_rID].pot = _pot.add(_dust).add(round_[_rID].pot);

        _eventData_.genAmount = _gen.add(_eventData_.genAmount);
        _eventData_.potAmount = _pot;

        return (_eventData_);
    }

    function updateMasks(uint256 _rID, uint256 _pID, uint256 _gen, uint256 _keys) private returns(uint256) {
        uint256 _ppt = (_gen.mul(1000000000000000000)) / (round_[_rID].keys);
        round_[_rID].mask = _ppt.add(round_[_rID].mask);

        uint256 _pearn = (_ppt.mul(_keys)) / (1000000000000000000);
        plyrRnds_[_pID][_rID].mask = (((round_[_rID].mask.mul(_keys)) / (1000000000000000000)).sub(_pearn)).add(plyrRnds_[_pID][_rID].mask);

        return(_gen.sub((_ppt.mul(round_[_rID].keys)) / (1000000000000000000)));
    }

    function withdrawEarnings(uint256 _pID) private returns(uint256) {
        updateGenVault(_pID, plyr_[_pID].lrnd);

        uint256 _earnings = (plyr_[_pID].win).add(plyr_[_pID].gen).add(plyr_[_pID].aff);
        if (_earnings > 0) {
            plyr_[_pID].win = 0;
            plyr_[_pID].gen = 0;
            plyr_[_pID].aff = 0;
        }

        return(_earnings);
    }

    function endTx(uint256 _pID, uint256 _team, uint256 _eth, uint256 _keys, Datasets.EventData memory _eventData_) private {
        _eventData_.compressedData = _eventData_.compressedData + (now * 1000000000000000000) + (_team * 100000000000000000000000000000);
        _eventData_.compressedIDs = _eventData_.compressedIDs + _pID + (rID_ * 10000000000000000000000000000000000000000000000000000);

        emit Events.onEndTx(
            _eventData_.compressedData,
            _eventData_.compressedIDs,
            plyr_[_pID].name,
            msg.sender,
            _eth,
            _keys,
            _eventData_.winnerAddr,
            _eventData_.winnerName,
            _eventData_.amountWon,
            _eventData_.newPot,
            _eventData_.genAmount,
            _eventData_.potAmount,
            airDropPot_
        );
    }

    function activate() public onlyOwner {
        require(activated_ == false, "fomo3d already activated");

        activated_ = true;

		rID_ = 1;
        round_[1].strt = now + rndExtra_ - rndGap_;
        round_[1].end = now + rndInit_ + rndExtra_;
    }
}

library Datasets {
    struct EventData {
        uint256 compressedData;
        uint256 compressedIDs;
        address winnerAddr;
        bytes32 winnerName;
        uint256 amountWon;
        uint256 newPot;
        uint256 genAmount;
        uint256 potAmount;
    }

    struct Player {
        address addr;
        bytes32 name;
        uint256 win;
        uint256 gen;
        uint256 aff;
        uint256 lrnd;
        uint256 laff;
    }

    struct PlayerRounds {
        uint256 eth;
        uint256 keys;
        uint256 mask;
        uint256 ico;
    }

    struct Round {
        uint256 plyr;
        uint256 team;
        uint256 end;
        bool ended;
        uint256 strt;
        uint256 keys;
        uint256 eth;
        uint256 pot;
        uint256 mask;
        uint256 ico;
        uint256 icoGen;
        uint256 icoAvg;
    }
}

library KeysCalcLong {
    using SafeMath for *;

    function keysRec(uint256 _curEth, uint256 _newEth) internal pure returns (uint256) {
        return(keys((_curEth).add(_newEth)).sub(keys(_curEth)));
    }

    function ethRec(uint256 _curKeys, uint256 _sellKeys) internal pure returns (uint256) {
        return((eth(_curKeys)).sub(eth(_curKeys.sub(_sellKeys))));
    }

    function keys(uint256 _eth) internal pure returns(uint256) {
        return ((((((_eth).mul(1000000000000000000)).mul(312500000000000000000000000)).add(5624988281256103515625000000000000000000000000000000000000000000)).sqrt()).sub(74999921875000000000000000000000)) / (156250000);
    }

    function eth(uint256 _keys) internal pure returns(uint256) {
        return ((78125000).mul(_keys.sq()).add(((149999843750000).mul(_keys.mul(1000000000000000000))) / (2))) / ((1000000000000000000).sq());
    }
}

library NameFilter {
    function nameFilter(string _input) internal pure returns(bytes32) {
        bytes memory _temp = bytes(_input);
        uint256 _length = _temp.length;

        require (_length <= 32 && _length > 0, "string must be between 1 and 32 characters");
        require(_temp[0] != 0x20 && _temp[_length-1] != 0x20, "string cannot start or end with space");
        if (_temp[0] == 0x30) {
            require(_temp[1] != 0x78, "string cannot start with 0x");
            require(_temp[1] != 0x58, "string cannot start with 0X");
        }

        bool _hasNonNumber;

        for (uint256 i = 0; i < _length; i++) {
            if (_temp[i] > 0x40 && _temp[i] < 0x5b) {
                _temp[i] = byte(uint(_temp[i]) + 32);

                if (_hasNonNumber == false) {
                    _hasNonNumber = true;
                }
            } else {
                require(_temp[i] == 0x20 || (_temp[i] > 0x60 && _temp[i] < 0x7b) || (_temp[i] > 0x2f && _temp[i] < 0x3a), "string contains invalid characters");

                if (_temp[i] == 0x20) {
                    require( _temp[i+1] != 0x20, "string cannot contain consecutive spaces");
                }

                if (_hasNonNumber == false && (_temp[i] < 0x30 || _temp[i] > 0x39)) {
                    _hasNonNumber = true;
                }
            }
        }

        require(_hasNonNumber == true, "string cannot be only numbers");

        bytes32 _ret;
        assembly {
            _ret := mload(add(_temp, 32))
        }

        return (_ret);
    }
}

library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        if (a == 0) {
            return 0;
        }
        c = a * b;
        require(c / a == b, "SafeMath mul failed");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath sub failed");
        return a - b;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
        c = a + b;
        require(c >= a, "SafeMath add failed");
        return c;
    }

    function sqrt(uint256 x) internal pure returns (uint256 y) {
        uint256 z = ((add(x,1)) / 2);
        y = x;
        while (z < y) {
            y = z;
            z = ((add((x / z), z)) / 2);
        }
    }

    function sq(uint256 x) internal pure returns (uint256) {
        return (mul(x, x));
    }

    function pwr(uint256 x, uint256 y) internal pure returns (uint256) {
        if (x == 0) {
            return (0);
        } else if (y == 0) {
            return (1);
        } else {
            uint256 z = x;
            for (uint256 i = 1; i < y; i++) {
                z = mul(z, x);
            }
            return (z);
        }
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"getBuyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_affCode","type":"bytes32"},{"name":"_team","type":"uint256"},{"name":"_eth","type":"uint256"}],"name":"reLoadXname","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"activate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_extSetting","type":"address"}],"name":"setExtSettingInterface","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"pIDxAddr_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"airDropTracker_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"round_","outputs":[{"name":"plyr","type":"uint256"},{"name":"team","type":"uint256"},{"name":"end","type":"uint256"},{"name":"ended","type":"bool"},{"name":"strt","type":"uint256"},{"name":"keys","type":"uint256"},{"name":"eth","type":"uint256"},{"name":"pot","type":"uint256"},{"name":"mask","type":"uint256"},{"name":"ico","type":"uint256"},{"name":"icoGen","type":"uint256"},{"name":"icoAvg","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"bytes32"}],"name":"plyrNames_","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_playerBook","type":"address"}],"name":"setPlayerBookInterface","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"fees_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"pIDxName_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_affCode","type":"uint256"},{"name":"_team","type":"uint256"},{"name":"_eth","type":"uint256"}],"name":"reLoadXid","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_nameString","type":"string"},{"name":"_affCode","type":"address"},{"name":"_all","type":"bool"}],"name":"registerNameXaddr","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_foundation","type":"address"}],"name":"setFoundationInterface","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_pID","type":"uint256"},{"name":"_addr","type":"address"},{"name":"_name","type":"bytes32"},{"name":"_laff","type":"uint256"}],"name":"receivePlayerInfo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"rndTmEth_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rID_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_pID","type":"uint256"}],"name":"getPlayerVaults","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_nameString","type":"string"},{"name":"_affCode","type":"bytes32"},{"name":"_all","type":"bool"}],"name":"registerNameXname","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentRoundInfo","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"address"},{"name":"","type":"bytes32"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_affCode","type":"address"},{"name":"_team","type":"uint256"},{"name":"_eth","type":"uint256"}],"name":"reLoadXaddr","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_affCode","type":"uint256"},{"name":"_team","type":"uint256"}],"name":"buyXid","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_pID","type":"uint256"},{"name":"_name","type":"bytes32"}],"name":"receivePlayerNameList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_nameString","type":"string"},{"name":"_affCode","type":"uint256"},{"name":"_all","type":"bool"}],"name":"registerNameXID","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_affCode","type":"address"},{"name":"_team","type":"uint256"}],"name":"buyXaddr","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"plyrRnds_","outputs":[{"name":"eth","type":"uint256"},{"name":"keys","type":"uint256"},{"name":"mask","type":"uint256"},{"name":"ico","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_affCode","type":"bytes32"},{"name":"_team","type":"uint256"}],"name":"buyXname","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"potSplit_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTimeLeft","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_rID","type":"uint256"},{"name":"_eth","type":"uint256"}],"name":"calcKeysReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_keys","type":"uint256"}],"name":"iWantXKeys","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"activated_","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"airDropPot_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"plyr_","outputs":[{"name":"addr","type":"address"},{"name":"name","type":"bytes32"},{"name":"win","type":"uint256"},{"name":"gen","type":"uint256"},{"name":"aff","type":"uint256"},{"name":"lrnd","type":"uint256"},{"name":"laff","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"getPlayerInfoByAddress","outputs":[{"name":"","type":"uint256"},{"name":"","type":"bytes32"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"playerID","type":"uint256"},{"indexed":true,"name":"playerAddress","type":"address"},{"indexed":true,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"isNewPlayer","type":"bool"},{"indexed":false,"name":"affiliateID","type":"uint256"},{"indexed":false,"name":"affiliateAddress","type":"address"},{"indexed":false,"name":"affiliateName","type":"bytes32"},{"indexed":false,"name":"amountPaid","type":"uint256"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onNewName","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"compressedData","type":"uint256"},{"indexed":false,"name":"compressedIDs","type":"uint256"},{"indexed":false,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"ethIn","type":"uint256"},{"indexed":false,"name":"keysBought","type":"uint256"},{"indexed":false,"name":"winnerAddr","type":"address"},{"indexed":false,"name":"winnerName","type":"bytes32"},{"indexed":false,"name":"amountWon","type":"uint256"},{"indexed":false,"name":"newPot","type":"uint256"},{"indexed":false,"name":"genAmount","type":"uint256"},{"indexed":false,"name":"potAmount","type":"uint256"},{"indexed":false,"name":"airDropPot","type":"uint256"}],"name":"onEndTx","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"playerID","type":"uint256"},{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"ethOut","type":"uint256"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"ethOut","type":"uint256"},{"indexed":false,"name":"compressedData","type":"uint256"},{"indexed":false,"name":"compressedIDs","type":"uint256"},{"indexed":false,"name":"winnerAddr","type":"address"},{"indexed":false,"name":"winnerName","type":"bytes32"},{"indexed":false,"name":"amountWon","type":"uint256"},{"indexed":false,"name":"newPot","type":"uint256"},{"indexed":false,"name":"genAmount","type":"uint256"}],"name":"onWithdrawAndDistribute","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"ethIn","type":"uint256"},{"indexed":false,"name":"compressedData","type":"uint256"},{"indexed":false,"name":"compressedIDs","type":"uint256"},{"indexed":false,"name":"winnerAddr","type":"address"},{"indexed":false,"name":"winnerName","type":"bytes32"},{"indexed":false,"name":"amountWon","type":"uint256"},{"indexed":false,"name":"newPot","type":"uint256"},{"indexed":false,"name":"genAmount","type":"uint256"}],"name":"onBuyAndDistribute","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"compressedData","type":"uint256"},{"indexed":false,"name":"compressedIDs","type":"uint256"},{"indexed":false,"name":"winnerAddr","type":"address"},{"indexed":false,"name":"winnerName","type":"bytes32"},{"indexed":false,"name":"amountWon","type":"uint256"},{"indexed":false,"name":"newPot","type":"uint256"},{"indexed":false,"name":"genAmount","type":"uint256"}],"name":"onReLoadAndDistribute","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"affiliateID","type":"uint256"},{"indexed":false,"name":"affiliateAddress","type":"address"},{"indexed":false,"name":"affiliateName","type":"bytes32"},{"indexed":true,"name":"roundID","type":"uint256"},{"indexed":true,"name":"buyerID","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onAffiliatePayout","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

6080604081905260018054600160a060020a031990811673b62ab70d1418c3dfad706c0fdea6499d2f380ce9179182905560028054821673c00c9ed7f35ca2373462fd46d672084a6a128e2b17905560038054909116736384fe27b7b6cc999aa750689c6b04acaeab78d71790557f4ccbe888000000000000000000000000000000000000000000000000000000008252600160a060020a031690634ccbe88890608490602090600481600087803b158015620000bb57600080fd5b505af1158015620000d0573d6000803e3d6000fd5b505050506040513d6020811015620000e757600080fd5b50516004908155600154604080517f114719c50000000000000000000000000000000000000000000000000000000081529051600160a060020a039092169263114719c59282820192602092908290030181600087803b1580156200014b57600080fd5b505af115801562000160573d6000803e3d6000fd5b505050506040513d60208110156200017757600080fd5b505160055560006007556009805460ff191690553480156200019857600080fd5b5060008054600160a060020a03191633178155601e7f4ad3b33220dddc71b994a52d72c06b10862965f7d926534c05c00fb7e819e7b781905560237f17bc176d2408558f6e4111feebc3cab4e16b63e967be91cde721f4c8a488b5525560327f08037d7b151cc412d25674a4e66b334d9ae9d2e5517a7feaae5cdb828bf1c62855602d7f9bfbaa59f8e10e7868f8b402de9d605a390c45ddaebd8c9de3c6f31e733c87ff5560126020527f7e7fa33969761a458e04f477e039a608702b4f924981d6653935a8319a08ad7b5560197f71a67924699a20698523213e55fe499d539379d7769cd5567e2c45d583f815a355600a7f8e1fee8c88a9e04123b21e90cae2727a7715bf522a1e46eb5934ccd05203a6b25560039052600f7f0f36ad39aee03e7108cc48f54934702a5f0d4066f10344cebf8198978d86976a5561545d80620002e46000396000f3006080604052600436106101ed5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663018a25e8811461038d57806306fdde03146103b4578063079ce3271461043e5780630f15f4c014610451578063107397441461046657806310f01eba1461048757806311a09ae7146104a857806324c33d33146104bd5780632660316e146105345780632a9b92a6146105635780632ce21999146105845780632e19ebdc1461059c578063349cdcac146105b45780633ccfd60b146105c55780633ddd4698146105da5780633f1092051461063657806349cc635d146106575780635893d48114610681578063624ae5c01461069c57806363066434146106b1578063685ffd83146106e7578063747dff421461073a57806382bfc739146107c55780638da5cb5b146107df5780638f38f309146108105780638f7140ea1461081e578063921dec211461083957806395d89b411461088c57806398a0871d146108a1578063a2bccae9146108b8578063a65b37a1146108f9578063c519500e14610907578063c7e284b81461091f578063ce89c80c14610934578063cf8080001461094f578063d53b267914610967578063d87574e01461097c578063de7874f314610991578063ee0b5d8b146109eb578063f2fde38b14610a44575b6101f561531f565b60095460009060ff161515600114610259576040805160e560020a62461bcd02815260206004820152602960248201526000805160206153d28339815191526044820152600080516020615372833981519152606482015290519081900360840190fd5b33803b80156102a0576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615412833981519152604482015290519081900360640190fd5b34633b9aca008110156102f8576040805160e560020a62461bcd0281526020600482015260216024820152600080516020615392833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af6800000811115610348576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206153f2833981519152604482015290519081900360640190fd5b61035185610a65565b336000908152600a6020908152604080832054808452600c909252909120600601549196509450610386908590600288610d05565b5050505050005b34801561039957600080fd5b506103a2610eeb565b60408051918252519081900360200190f35b3480156103c057600080fd5b506103c9610fb0565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104035781810151838201526020016103eb565b50505050905090810190601f1680156104305780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61044f600435602435604435610fe7565b005b34801561045d57600080fd5b5061044f6111f3565b34801561047257600080fd5b5061044f600160a060020a0360043516611315565b34801561049357600080fd5b506103a2600160a060020a0360043516611394565b3480156104b457600080fd5b506103a26113a6565b3480156104c957600080fd5b506104d56004356113ac565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e087015261010086015261012085015261014084015261016083015251908190036101800190f35b34801561054057600080fd5b5061054f60043560243561140f565b604080519115158252519081900360200190f35b34801561056f57600080fd5b5061044f600160a060020a036004351661142f565b34801561059057600080fd5b506103a26004356114ae565b3480156105a857600080fd5b506103a26004356114c0565b61044f6004356024356044356114d2565b3480156105d157600080fd5b5061044f6116b8565b6040805160206004803580820135601f810184900484028501840190955284845261044f94369492936024939284019190819084018382808284375094975050600160a060020a03853516955050505050602001351515611a2c565b34801561064257600080fd5b5061044f600160a060020a0360043516611bd9565b34801561066357600080fd5b5061044f600435600160a060020a0360243516604435606435611c58565b34801561068d57600080fd5b506103a2600435602435611e40565b3480156106a857600080fd5b506103a2611e5d565b3480156106bd57600080fd5b506106c9600435611e63565b60408051938452602084019290925282820152519081900360600190f35b6040805160206004803580820135601f810184900484028501840190955284845261044f943694929360249392840191908190840183828082843750949750508435955050505050602001351515612009565b34801561074657600080fd5b5061074f6120e3565b604080519e8f5260208f019d909d528d8d019b909b5260608d019990995260808c019790975260a08b019590955260c08a0193909352600160a060020a0390911660e08901526101008801526101208701526101408601526101608501526101808401526101a083015251908190036101c00190f35b61044f600160a060020a03600435166024356044356122e1565b3480156107eb57600080fd5b506107f46124dd565b60408051600160a060020a039092168252519081900360200190f35b61044f6004356024356124ec565b34801561082a57600080fd5b5061044f6004356024356126d3565b6040805160206004803580820135601f810184900484028501840190955284845261044f9436949293602493928401919081908401838280828437509497505084359550505050506020013515156127a7565b34801561089857600080fd5b506103c9612881565b61044f600160a060020a03600435166024356128b8565b3480156108c457600080fd5b506108d3600435602435612acf565b604080519485526020850193909352838301919091526060830152519081900360800190f35b61044f600435602435612b01565b34801561091357600080fd5b506103a2600435612cfe565b34801561092b57600080fd5b506103a2612d10565b34801561094057600080fd5b506103a2600435602435612d9f565b34801561095b57600080fd5b506103a2600435612e47565b34801561097357600080fd5b5061054f612ef9565b34801561098857600080fd5b506103a2612f02565b34801561099d57600080fd5b506109a9600435612f08565b60408051600160a060020a0390981688526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b3480156109f757600080fd5b50610a0c600160a060020a0360043516612f4f565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b348015610a5057600080fd5b5061044f600160a060020a0360043516613024565b610a6d61531f565b336000908152600a60205260408120549080821515610cfc57600354604080517fe56556a90000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163e56556a9916024808201926020929091908290030181600087803b158015610aec57600080fd5b505af1158015610b00573d6000803e3d6000fd5b505050506040513d6020811015610b1657600080fd5b5051600354604080517f82e37b2c000000000000000000000000000000000000000000000000000000008152600481018490529051929550600160a060020a03909116916382e37b2c916024808201926020929091908290030181600087803b158015610b8257600080fd5b505af1158015610b96573d6000803e3d6000fd5b505050506040513d6020811015610bac57600080fd5b5051600354604080517fe3c08adf000000000000000000000000000000000000000000000000000000008152600481018790529051929450600160a060020a039091169163e3c08adf916024808201926020929091908290030181600087803b158015610c1857600080fd5b505af1158015610c2c573d6000803e3d6000fd5b505050506040513d6020811015610c4257600080fd5b5051336000818152600a60209081526040808320889055878352600c9091529020805473ffffffffffffffffffffffffffffffffffffffff1916909117905590508115610ccb576000828152600b60209081526040808320869055858352600c82528083206001908101869055600e8352818420868552909252909120805460ff191690911790555b8015801590610cda5750828114155b15610cf4576000838152600c602052604090206006018190555b845160010185525b50929392505050565b6008546005546000828152600f602052604090206004015442910181118015610d7057506000828152600f602052604090206002015481111580610d7057506000828152600f602052604090206002015481118015610d7057506000828152600f6020526040902054155b15610d8857610d8382873488888861312f565b610ee3565b6000828152600f602052604090206002015481118015610dba57506000828152600f602052604090206003015460ff16155b15610eae576000828152600f60205260409020600301805460ff19166001179055610de4836136fd565b8051670de0b6b3a7640000830201815260208082018051890181526000898152600c83526040908190206001015484519251828601516060808801516080808a015160a0808c015160c0808e01518b513381529d8e019a909a52348d8c0152958c019a909a52918a0195909552600160a060020a039093169288019290925286015260e0850152610100840192909252610120830191909152519194507f5905265be09e3f6f7813c1dce4febfad76d4b3a46288aa344d2531532c3519c991908190036101400190a15b6000868152600c6020526040902060030154610ed0903463ffffffff613aa016565b6000878152600c60205260409020600301555b505050505050565b6008546005546000828152600f602052604081206004015490929142910181118015610f5957506000828152600f602052604090206002015481111580610f5957506000828152600f602052604090206002015481118015610f5957506000828152600f6020526040902054155b15610fa1576000828152600f6020526040902060050154610f9a90670de0b6b3a764000090610f8e908263ffffffff613aa016565b9063ffffffff613b0116565b9250610fab565b6544364c5bb00092505b505090565b60408051808201909152601681527f466f6d6f3344204173696120284f6666696369616c2900000000000000000000602082015281565b610fef61531f565b600954600090819060ff161515600114611055576040805160e560020a62461bcd02815260206004820152602960248201526000805160206153d28339815191526044820152600080516020615372833981519152606482015290519081900360840190fd5b33803b801561109c576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615412833981519152604482015290519081900360640190fd5b34633b9aca008110156110f4576040805160e560020a62461bcd0281526020600482015260216024820152600080516020615392833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af6800000811115611144576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206153f2833981519152604482015290519081900360640190fd5b336000908152600a6020526040902054945088158061117357506000858152600c602052604090206001015489145b15611191576000858152600c602052604090206006015493506111d0565b6000898152600b6020908152604080832054888452600c9092529091206006015490945084146111d0576000858152600c602052604090206006018490555b6111d988613b2e565b97506111e885858a8a8a613b53565b505050505050505050565b600054600160a060020a03163314611243576040805160e560020a62461bcd02815260206004820152601260248201526000805160206153b2833981519152604482015290519081900360640190fd5b60095460ff161561129e576040805160e560020a62461bcd02815260206004820152601860248201527f666f6d6f336420616c7265616479206163746976617465640000000000000000604482015290519081900360640190fd5b6009805460ff191660019081179091556008819055600554600454600092909252600f602052429091019081037f169f97de0d9a84d840042b17d3c6b9638b3d6fd9024c9eb0c7a306a17b49f89355610e10017f169f97de0d9a84d840042b17d3c6b9638b3d6fd9024c9eb0c7a306a17b49f89155565b600054600160a060020a03163314611365576040805160e560020a62461bcd02815260206004820152601260248201526000805160206153b2833981519152604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600a6020526000908152604090205481565b60075481565b600f60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a8b0154600b909b0154999a9899979860ff909716979596949593949293919290918c565b600e60209081526000928352604080842090915290825290205460ff1681565b600054600160a060020a0316331461147f576040805160e560020a62461bcd02815260206004820152601260248201526000805160206153b2833981519152604482015290519081900360640190fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60116020526000908152604090205481565b600b6020526000908152604090205481565b6114da61531f565b60095460009060ff16151560011461153e576040805160e560020a62461bcd02815260206004820152602960248201526000805160206153d28339815191526044820152600080516020615372833981519152606482015290519081900360840190fd5b33803b8015611585576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615412833981519152604482015290519081900360640190fd5b34633b9aca008110156115dd576040805160e560020a62461bcd0281526020600482015260216024820152600080516020615392833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af680000081111561162d576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206153f2833981519152604482015290519081900360640190fd5b336000908152600a6020526040902054935087158061164b57508388145b15611669576000848152600c60205260409020600601549750611696565b6000848152600c60205260409020600601548814611696576000848152600c602052604090206006018890555b61169f87613b2e565b96506116ae8489898989613b53565b5050505050505050565b6000806000806116c661531f565b60095460ff161515600114611727576040805160e560020a62461bcd02815260206004820152602960248201526000805160206153d28339815191526044820152600080516020615372833981519152606482015290519081900360840190fd5b33803b801561176e576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615412833981519152604482015290519081900360640190fd5b336000908152600a6020908152604080832054600854808552600f9093529220600201544299509196509450871180156117ba57506000848152600f602052604090206003015460ff16155b80156117d357506000848152600f602052604090205415155b1561196d576000848152600f60205260409020600301805460ff191660011790556117fd836136fd565b925061180885613d20565b95506000861115611859576000858152600c6020526040808220549051600160a060020a039091169188156108fc02918991818181858888f19350505050158015611857573d6000803e3d6000fd5b505b86670de0b6b3a764000002836000015101836000018181525050848360200151018360200181815250507f9e9c9331834267c84342f2dce38f9ba35eb0bfbcc207c64872e1e74f9706f2a333600c6000888152602001908152602001600020600101548886600001518760200151886040015189606001518a608001518b60a001518c60c00151604051808b600160a060020a0316600160a060020a031681526020018a6000191660001916815260200189815260200188815260200187815260200186600160a060020a0316600160a060020a0316815260200185600019166000191681526020018481526020018381526020018281526020019a505050505050505050505060405180910390a1611a23565b61197685613d20565b955060008611156119c7576000858152600c6020526040808220549051600160a060020a039091169188156108fc02918991818181858888f193505050501580156119c5573d6000803e3d6000fd5b505b6000858152600c60209081526040918290206001015482513381529182015280820188905260608101899052905186917f8f36579a548bc439baa172a6521207464154da77f411e2da3db2f53affe6cc3a919081900360800190a25b50505050505050565b6000808080808033803b8015611a7a576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615412833981519152604482015290519081900360640190fd5b611a838b613da7565b600354604080517faa4d490b000000000000000000000000000000000000000000000000000000008152336004820181905260248201859052600160a060020a038f811660448401528e151560648401528351959d50909b50349a509092169263aa4d490b928a92608480830193919282900301818588803b158015611b0857600080fd5b505af1158015611b1c573d6000803e3d6000fd5b50505050506040513d6040811015611b3357600080fd5b508051602091820151600160a060020a03808b166000818152600a8652604080822054858352600c8852918190208054600190910154825188151581529889018790529416878201526060870193909352608086018c90524260a0870152915193995091975095508a92909186917fdd6176433ff5026bbce96b068584b7bbe3514227e72df9c630b749ae87e64442919081900360c00190a45050505050505050505050565b600054600160a060020a03163314611c29576040805160e560020a62461bcd02815260206004820152601260248201526000805160206153b2833981519152604482015290519081900360640190fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600354600160a060020a03163314611ce0576040805160e560020a62461bcd02815260206004820152602760248201527f796f7572206e6f7420706c617965724e616d657320636f6e74726163742e2e2e60448201527f20686d6d6d2e2e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0383166000908152600a60205260409020548414611d1b57600160a060020a0383166000908152600a602052604090208490555b6000828152600b60205260409020548414611d42576000828152600b602052604090208490555b6000848152600c6020526040902054600160a060020a03848116911614611d98576000848152600c60205260409020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385161790555b6000848152600c60205260409020600101548214611dc5576000848152600c602052604090206001018290555b6000848152600c60205260409020600601548114611df2576000848152600c602052604090206006018190555b6000848152600e6020908152604080832085845290915290205460ff161515611e3a576000848152600e602090815260408083208584529091529020805460ff191660011790555b50505050565b601060209081526000928352604080842090915290825290205481565b60085481565b6008546000818152600f60205260408120600201549091829182919042118015611e9f57506000818152600f602052604090206003015460ff16155b8015611eb857506000818152600f602052604090205415155b15611fd9576000818152600f6020526040902054851415611f9d576000818152600f6020526040902060070154611f2690606490611efd90603063ffffffff6145ba16565b811515611f0657fe5b6000888152600c602052604090206002015491900463ffffffff613aa016565b6000868152600d60209081526040808320858452909152902060020154611f7f90611f6190611f558986614631565b9063ffffffff6146ff16565b6000888152600c60205260409020600301549063ffffffff613aa016565b6000878152600c602052604090206004015491955093509150612001565b6000858152600c60209081526040808320600290810154600d8452828520868652909352922090910154611f7f90611f6190611f558986614631565b6000858152600c602052604090206002810154600590910154611f7f90611f6190889061475f565b509193909250565b6000808080808033803b8015612057576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615412833981519152604482015290519081900360640190fd5b6120608b613da7565b600354604080517f745ea0c1000000000000000000000000000000000000000000000000000000008152336004820181905260248201859052604482018f90528d151560648301528251949c509a50349950600160a060020a039092169263745ea0c1928a92608480830193919282900301818588803b158015611b0857600080fd5b60008060008060008060008060008060008060008060006008549050600f60008281526020019081526020016000206009015481600f600084815260200190815260200160002060050154600f600085815260200190815260200160002060020154600f600086815260200190815260200160002060040154600f600087815260200190815260200160002060070154600f600088815260200190815260200160002060000154600a02600f60008981526020019081526020016000206001015401600c6000600f60008b815260200190815260200160002060000154815260200190815260200160002060000160009054906101000a9004600160a060020a0316600c6000600f60008c815260200190815260200160002060000154815260200190815260200160002060010154601060008b8152602001908152602001600020600080815260200190815260200160002054601060008c815260200190815260200160002060006001815260200190815260200160002054601060008d815260200190815260200160002060006002815260200190815260200160002054601060008e8152602001908152602001600020600060038152602001908152602001600020546006546103e802600754019e509e509e509e509e509e509e509e509e509e509e509e509e509e5050909192939495969798999a9b9c9d565b6122e961531f565b600954600090819060ff16151560011461234f576040805160e560020a62461bcd02815260206004820152602960248201526000805160206153d28339815191526044820152600080516020615372833981519152606482015290519081900360840190fd5b33803b8015612396576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615412833981519152604482015290519081900360640190fd5b34633b9aca008110156123ee576040805160e560020a62461bcd0281526020600482015260216024820152600080516020615392833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af680000081111561243e576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206153f2833981519152604482015290519081900360640190fd5b336000908152600a60205260409020549450600160a060020a038916158061246e5750600160a060020a03891633145b1561248c576000858152600c602052604090206006015493506111d0565b600160a060020a0389166000908152600a6020908152604080832054888452600c9092529091206006015490945084146111d0576000858152600c602052604090206006018490556111d988613b2e565b600054600160a060020a031681565b6124f461531f565b60095460009060ff161515600114612558576040805160e560020a62461bcd02815260206004820152602960248201526000805160206153d28339815191526044820152600080516020615372833981519152606482015290519081900360840190fd5b33803b801561259f576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615412833981519152604482015290519081900360640190fd5b34633b9aca008110156125f7576040805160e560020a62461bcd0281526020600482015260216024820152600080516020615392833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af6800000811115612647576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206153f2833981519152604482015290519081900360640190fd5b61265085610a65565b336000908152600a6020526040902054909550935086158061267157508387145b1561268f576000848152600c602052604090206006015496506126bc565b6000848152600c602052604090206006015487146126bc576000848152600c602052604090206006018790555b6126c586613b2e565b9550611a2384888888610d05565b600354600160a060020a0316331461275b576040805160e560020a62461bcd02815260206004820152602760248201527f796f7572206e6f7420706c617965724e616d657320636f6e74726163742e2e2e60448201527f20686d6d6d2e2e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000828152600e6020908152604080832084845290915290205460ff1615156127a3576000828152600e602090815260408083208484529091529020805460ff191660011790555b5050565b6000808080808033803b80156127f5576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615412833981519152604482015290519081900360640190fd5b6127fe8b613da7565b600354604080517fc0942dfd000000000000000000000000000000000000000000000000000000008152336004820181905260248201859052604482018f90528d151560648301528251949c509a50349950600160a060020a039092169263c0942dfd928a92608480830193919282900301818588803b158015611b0857600080fd5b60408051808201909152600481527f4633444100000000000000000000000000000000000000000000000000000000602082015281565b6128c061531f565b600954600090819060ff161515600114612926576040805160e560020a62461bcd02815260206004820152602960248201526000805160206153d28339815191526044820152600080516020615372833981519152606482015290519081900360840190fd5b33803b801561296d576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615412833981519152604482015290519081900360640190fd5b34633b9aca008110156129c5576040805160e560020a62461bcd0281526020600482015260216024820152600080516020615392833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af6800000811115612a15576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206153f2833981519152604482015290519081900360640190fd5b612a1e86610a65565b336000908152600a60205260409020549096509450600160a060020a0388161580612a515750600160a060020a03881633145b15612a6f576000858152600c60205260409020600601549350612ab8565b600160a060020a0388166000908152600a6020908152604080832054888452600c909252909120600601549094508414612ab8576000858152600c602052604090206006018490555b612ac187613b2e565b96506116ae85858989610d05565b600d60209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b612b0961531f565b600954600090819060ff161515600114612b6f576040805160e560020a62461bcd02815260206004820152602960248201526000805160206153d28339815191526044820152600080516020615372833981519152606482015290519081900360840190fd5b33803b8015612bb6576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615412833981519152604482015290519081900360640190fd5b34633b9aca00811015612c0e576040805160e560020a62461bcd0281526020600482015260216024820152600080516020615392833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af6800000811115612c5e576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206153f2833981519152604482015290519081900360640190fd5b612c6786610a65565b336000908152600a60205260409020549096509450871580612c9957506000858152600c602052604090206001015488145b15612cb7576000858152600c60205260409020600601549350612ab8565b6000888152600b6020908152604080832054888452600c909252909120600601549094508414612ab8576000858152600c60205260409020600601849055612ac187613b2e565b60126020526000908152604090205481565b6008546000818152600f60205260408120600201549091904290811015612d96576005546000838152600f602052604090206004015401811115612d70576000828152600f6020526040902060020154610f9a908263ffffffff6146ff16565b6005546000838152600f6020526040902060040154610f9a91018263ffffffff6146ff16565b60009250610fab565b6005546000838152600f6020526040812060040154909142910181118015612e0957506000848152600f602052604090206002015481111580612e0957506000848152600f602052604090206002015481118015612e0957506000848152600f6020526040902054155b15612e37576000848152600f6020526040902060060154612e30908463ffffffff6147bc16565b9150612e40565b612e30836147dd565b5092915050565b6008546005546000828152600f602052604081206004015490929142910181118015612eb557506000828152600f602052604090206002015481111580612eb557506000828152600f602052604090206002015481118015612eb557506000828152600f6020526040902054155b15612ee9576000828152600f6020526040902060050154612ee2908590610f8e908263ffffffff613aa016565b9250612ef2565b612ee284614855565b5050919050565b60095460ff1681565b60065481565b600c602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154600160a060020a039095169593949293919290919087565b6000806000806000806000806000600854915050600160a060020a0389166000908152600a6020908152604080832054808452600c808452828520600180820154600d8752858820898952875294872001549583905293526002830154600590930154909384939091612fe590612fc790869061475f565b6000878152600c60205260409020600301549063ffffffff613aa016565b6000958652600c6020908152604080882060040154600d83528189209989529890915290952054939e929d50909b509950919750919550909350915050565b600054600160a060020a03163314613074576040805160e560020a62461bcd02815260206004820152601260248201526000805160206153b2833981519152604482015290519081900360640190fd5b600160a060020a03811615156130d4576040805160e560020a62461bcd02815260206004820152601060248201527f496e76616c696420616464726573732e00000000000000000000000000000000604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600154604080517f977555ca000000000000000000000000000000000000000000000000000000008152600481018890529051600092839283928392600160a060020a03169163977555ca916024808301928692919082900301818387803b15801561319a57600080fd5b505af11580156131ae573d6000803e3d6000fd5b50505060008a8152600d602090815260408083208e8452909152902060010154151590506131e3576131e089866148c2565b94505b60008a8152600f602052604090206006015468056bc75e2d6310000011801561323d57506000898152600d602090815260408083208d8452909152902054670de0b6b3a76400009061323b908a63ffffffff613aa016565b115b156132c4576000898152600d602090815260408083208d845290915290205461327590670de0b6b3a76400009063ffffffff6146ff16565b9350613287888563ffffffff6146ff16565b60008a8152600c60205260409020600301549093506132ac908463ffffffff613aa016565b60008a8152600c602052604090206003015592965086925b633b9aca008811156136f15760008a8152600f60205260409020600601546132f2908963ffffffff6147bc16565b9150670de0b6b3a764000082106133695761330d828b614922565b60008a8152600f602052604090205489146133345760008a8152600f602052604090208990555b60008a8152600f602052604090206001015486146133615760008a8152600f602052604090206001018690555b845160640185525b67016345785d8a000088106135a957600780546001019055613389614a00565b1515600114156135a957678ac7230489e80000881061342a576006546064906133b990604b63ffffffff6145ba16565b8115156133c257fe5b60008b8152600c602052604090206002015491900491506133e9908263ffffffff613aa016565b60008a8152600c602052604090206002015560065461340e908263ffffffff6146ff16565b60065584516d0eca8847c4129106ce830000000001855261357e565b670de0b6b3a764000088101580156134495750678ac7230489e8000088105b156134d65760065460649061346590603263ffffffff6145ba16565b81151561346e57fe5b60008b8152600c60205260409020600201549190049150613495908263ffffffff613aa016565b60008a8152600c60205260409020600201556006546134ba908263ffffffff6146ff16565b60065584516d09dc5ada82b70b59df020000000001855261357e565b67016345785d8a000088101580156134f55750670de0b6b3a764000088105b1561357e5760065460649061351190601963ffffffff6145ba16565b81151561351a57fe5b60008b8152600c60205260409020600201549190049150613541908263ffffffff613aa016565b60008a8152600c6020526040902060020155600654613566908263ffffffff6146ff16565b60065584516d0eca8847c4129106ce83000000000185525b84516d314dc6448d9338c15b0a000000008202016c7e37be2022c0914b268000000001855260006007555b60075485516103e89091020185526000898152600d602090815260408083208d84529091529020600101546135e590839063ffffffff613aa016565b60008a8152600d602090815260408083208e84529091529020600181019190915554613612908990613aa0565b60008a8152600d602090815260408083208e8452825280832093909355600f9052206005015461364990839063ffffffff613aa016565b60008b8152600f6020526040902060058101919091556006015461367490899063ffffffff613aa016565b60008b8152600f602090815260408083206006019390935560108152828220898352905220546136ab90899063ffffffff613aa016565b60008b81526010602090815260408083208a84529091529020556136d28a8a8a8a89614c17565b94506136e28a8a8a89868a614e6d565b94506136f189878a8589614f77565b50505050505050505050565b61370561531f565b6008546000818152600f602052604081208054600182015460079092015490928080808080606461373d88603a63ffffffff6145ba16565b81151561374657fe5b04955060328760008a815260126020526040902054919004955060649061377490899063ffffffff6145ba16565b81151561377d57fe5b04935061379684611f5587818b8b63ffffffff6146ff16565b60008b8152600f60205260409020600501549093506137c385670de0b6b3a764000063ffffffff6145ba16565b8115156137cc57fe5b60008c8152600f6020526040902060050154919004925061381a90670de0b6b3a76400009061380290859063ffffffff6145ba16565b81151561380b57fe5b8691900463ffffffff6146ff16565b9050600081111561384a57613835848263ffffffff6146ff16565b9350613847838263ffffffff613aa016565b92505b6000898152600c602052604090206002015461386d90879063ffffffff613aa016565b60008a8152600c6020526040808220600290810193909355915482517fd0e30db00000000000000000000000000000000000000000000000000000000081529251600160a060020a039091169263d0e30db092899260048084019382900301818588803b1580156138dd57600080fd5b505af11580156138f1573d6000803e3d6000fd5b50505060008c8152600f6020526040902060080154613919925084915063ffffffff613aa016565b600f60008c815260200190815260200160002060080181905550600f60008b815260200190815260200160002060020154620f4240028c60000151018c60000181815250508767016345785d8a000002896a52b7d2dcc80cd2e4000000028d6020015101018c6020018181525050600c60008a815260200190815260200160002060000160009054906101000a9004600160a060020a03168c60400190600160a060020a03169081600160a060020a031681525050600c60008a8152602001908152602001600020600101548c606001906000191690816000191681525050858c6080018181525050838c60c0018181525050828c60a001818152505060086000815480929190600101919050555089806001019a505042600f60008c815260200190815260200160002060040181905550613a72600554613a66610e1042613aa090919063ffffffff16565b9063ffffffff613aa016565b60008b8152600f6020526040902060028101919091556007018390558b9a5050505050505050505050919050565b81810182811015613afb576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820616464206661696c656400000000000000000000000000604482015290519081900360640190fd5b92915050565b6000613b27613b1e613b19858563ffffffff6146ff16565b614855565b611f5585614855565b9392505050565b600080821080613b3e5750600382115b15613b4b57506002613b4e565b50805b919050565b6008546005546000828152600f602052604090206004015442910181118015613bbe57506000828152600f602052604090206002015481111580613bbe57506000828152600f602052604090206002015481118015613bbe57506000828152600f6020526040902054155b15613bf557613bd084611f5589613d20565b6000888152600c6020526040902060030155613bf082888689898861312f565b611a23565b6000828152600f602052604090206002015481118015613c2757506000828152600f602052604090206003015460ff16155b15611a23576000828152600f60205260409020600301805460ff19166001179055613c51836136fd565b8051670de0b6b3a76400008302018152602080820180518a01815260008a8152600c83526040908190206001015484519251828601516060808801516080808a015160a0808c015160c0808e01518b513381529d8e019a909a528c8b019b909b52948b0196909652600160a060020a0390941690890152928701929092529385019390935260e0840192909252610100830191909152519194507f603a740c9291cc914e0c8d16b355cdb091aefd5d9bbdf4f95371ce756f5e8a4091908190036101200190a150505050505050565b6000818152600c60205260408120600501548190613d3f9084906150d8565b6000838152600c6020526040902060048101546003820154600290920154613d7192613a66919063ffffffff613aa016565b90506000811115613d9d576000838152600c602052604081206002810182905560038101829055600401555b8091505b50919050565b8051600090829082808060208411801590613dc25750600084115b1515613e3e576040805160e560020a62461bcd02815260206004820152602a60248201527f737472696e67206d757374206265206265747765656e203120616e642033322060448201527f6368617261637465727300000000000000000000000000000000000000000000606482015290519081900360840190fd5b846000815181101515613e4d57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214158015613eb457508460018503815181101515613e8c57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214155b1515613f30576040805160e560020a62461bcd02815260206004820152602560248201527f737472696e672063616e6e6f74207374617274206f7220656e6420776974682060448201527f7370616365000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b846000815181101515613f3f57fe5b90602001015160f860020a900460f860020a02600160f860020a031916603060f860020a02141561408257846001815181101515613f7957fe5b90602001015160f860020a900460f860020a02600160f860020a031916607860f860020a0214151515613ff6576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030780000000000604482015290519081900360640190fd5b84600181518110151561400557fe5b90602001015160f860020a900460f860020a02600160f860020a031916605860f860020a0214151515614082576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030580000000000604482015290519081900360640190fd5b600091505b838210156145525784517f4000000000000000000000000000000000000000000000000000000000000000908690849081106140bf57fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015614133575084517f5b000000000000000000000000000000000000000000000000000000000000009086908490811061411457fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b156141a057848281518110151561414657fe5b90602001015160f860020a900460f860020a0260f860020a900460200160f860020a02858381518110151561417757fe5b906020010190600160f860020a031916908160001a90535082151561419b57600192505b614547565b84828151811015156141ae57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a02148061427e575084517f60000000000000000000000000000000000000000000000000000000000000009086908490811061420a57fe5b90602001015160f860020a900460f860020a02600160f860020a03191611801561427e575084517f7b000000000000000000000000000000000000000000000000000000000000009086908490811061425f57fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b80614328575084517f2f00000000000000000000000000000000000000000000000000000000000000908690849081106142b457fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015614328575084517f3a000000000000000000000000000000000000000000000000000000000000009086908490811061430957fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b15156143a4576040805160e560020a62461bcd02815260206004820152602260248201527f737472696e6720636f6e7461696e7320696e76616c696420636861726163746560448201527f7273000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b84828151811015156143b257fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214156144915784826001018151811015156143ee57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214151515614491576040805160e560020a62461bcd02815260206004820152602860248201527f737472696e672063616e6e6f7420636f6e7461696e20636f6e7365637574697660448201527f6520737061636573000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b8215801561453d575084517f3000000000000000000000000000000000000000000000000000000000000000908690849081106144ca57fe5b90602001015160f860020a900460f860020a02600160f860020a031916108061453d575084517f39000000000000000000000000000000000000000000000000000000000000009086908490811061451e57fe5b90602001015160f860020a900460f860020a02600160f860020a031916115b1561454757600192505b600190910190614087565b6001831515146145ac576040805160e560020a62461bcd02815260206004820152601d60248201527f737472696e672063616e6e6f74206265206f6e6c79206e756d62657273000000604482015290519081900360640190fd5b505050506020015192915050565b60008215156145cb57506000613afb565b508181028183828115156145db57fe5b0414613afb576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d617468206d756c206661696c656400000000000000000000000000604482015290519081900360640190fd5b6000828152600d602090815260408083208484528252808320600190810154600f808552838620600581015493810154875260128652938620548787529452600790920154670de0b6b3a7640000936146ee93926146e29290916146b99187916064916146a39163ffffffff6145ba16565b8115156146ac57fe5b049063ffffffff6145ba16565b8115156146c257fe5b6000888152600f602052604090206008015491900463ffffffff613aa016565b9063ffffffff6145ba16565b8115156146f757fe5b049392505050565b600082821115614759576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820737562206661696c656400000000000000000000000000604482015290519081900360640190fd5b50900390565b6000828152600d6020908152604080832084845282528083206002810154600190910154600f90935290832060080154613b2792670de0b6b3a7640000916147a6916145ba565b8115156147af57fe5b049063ffffffff6146ff16565b6000613b276147ca846147dd565b611f556147dd868663ffffffff613aa016565b60006309502f906148456d03b2a1d15167e7c5699bfde00000611f556148407a0dac7055469777a6122ee4310dd6c14410500f2904840000000000613a666b01027e72f1f12813088000006146e28a670de0b6b3a764000063ffffffff6145ba16565b61516f565b81151561484e57fe5b0492915050565b6000614868670de0b6b3a76400006151c2565b614845600261489b61488886670de0b6b3a764000063ffffffff6145ba16565b65886c8f6730709063ffffffff6145ba16565b8115156148a457fe5b04613a666148b1866151c2565b6304a817c89063ffffffff6145ba16565b6148ca61531f565b6000838152600c6020526040902060050154156148fe576000838152600c60205260409020600501546148fe9084906150d8565b506008546000838152600c60205260409020600501558051600a0181528092915050565b6000818152600f60205260408120600201544291908211801561495157506000838152600f6020526040902054155b156149755761496e82613a66601e670de0b6b3a7640000886146ac565b90506149a2565b6000838152600f602052604090206002015461499f90613a66601e670de0b6b3a7640000886146ac565b90505b6149b5620151808363ffffffff613aa016565b8110156149d5576000838152600f60205260409020600201819055611e3a565b6149e8620151808363ffffffff613aa016565b6000848152600f602052604090206002015550505050565b600080614b7143613a6642336040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b60208310614a7b5780518252601f199092019160209182019101614a5c565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912092505050811515614ab157fe5b04613a6645613a6642416040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b60208310614b2a5780518252601f199092019160209182019101614b0b565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912092505050811515614b6057fe5b04613a66424463ffffffff613aa016565b604051602001808281526020019150506040516020818303038152906040526040518082805190602001908083835b60208310614bbf5780518252601f199092019160209182019101614ba0565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912060075490945092506103e89150839050046103e80282031015614c0e5760019150614c13565b600091505b5090565b614c1f61531f565b6000808080601988049350600260009054906101000a9004600160a060020a0316600160a060020a031663d0e30db0856040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016000604051808303818588803b158015614c9657600080fd5b505af1158015614caa573d6000803e3d6000fd5b5050505050601488811515614cbb57fe5b04925088871480614cdb57506000878152600c6020526040902060010154155b15614ce557600196505b6000878152600c6020526040902060040154614d0890849063ffffffff613aa016565b6000888152600c6020908152604091829020600481019390935582546001909301548251600160a060020a03909416845290830152818101859052426060830152518a918c918a917f590bbc0fc16915a85269a48f74783c39842b7ae9eceb7c295c95dbe8b3ec7331919081900360800190a450506000858152600c60205260408082206006908101548084529190922090910154600a8804919081148015614dc057506000818152600c6020526040902060010154155b15614dc9575060015b6000818152600c6020526040902060040154614dec90839063ffffffff613aa016565b6000828152600c6020908152604091829020600481019390935582546001909301548251600160a060020a039094168452908301528181018490524260608301525188918c9184917f590bbc0fc16915a85269a48f74783c39842b7ae9eceb7c295c95dbe8b3ec7331919081900360800190a4509398975050505050505050565b614e7561531f565b600084815260116020526040812054819081908190606490614e9e908b9063ffffffff6145ba16565b811515614ea757fe5b049350606489049250614ec583600654613aa090919063ffffffff16565b600655614ee5614ed860058b0486613aa0565b8a9063ffffffff6146ff16565b9150614ef38b8b868a6151ce565b90506000811115614f1157614f0e848263ffffffff6146ff16565b93505b60008b8152600f6020526040902060070154614f3790613a66848463ffffffff613aa016565b60008c8152600f602052604090206007015560c0860151614f5f90859063ffffffff613aa016565b60c08701525060e08501525091979650505050505050565b836c01431e0fae6d7217caa00000000242670de0b6b3a76400000282600001510101816000018181525050600854751aba4714957d300d0e549208b31adb100000000000000285826020015101018160200181815250507f3671a735b2c7f1e43f1ab4385d4c5b480bbff437ad893b703fb0dfdbd24679e281600001518260200151600c6000898152602001908152602001600020600101543387878760400151886060015189608001518a60a001518b60c001518c60e00151600654604051808e81526020018d81526020018c600019166000191681526020018b600160a060020a0316600160a060020a031681526020018a815260200189815260200188600160a060020a0316600160a060020a0316815260200187600019166000191681526020018681526020018581526020018481526020018381526020018281526020019d505050505050505050505050505060405180910390a15050505050565b60006150e4838361475f565b9050600081111561516a576000838152600c602052604090206003015461511290829063ffffffff613aa016565b6000848152600c6020908152604080832060030193909355600d81528282208583529052206002015461514c90829063ffffffff613aa016565b6000848152600d602090815260408083208684529091529020600201555b505050565b600080600261517f846001613aa0565b81151561518857fe5b0490508291505b81811015613da15780915060026151b182858115156151aa57fe5b0483613aa0565b8115156151ba57fe5b04905061518f565b6000613afb82836145ba565b6000848152600f6020526040812060050154819081906151fc86670de0b6b3a764000063ffffffff6145ba16565b81151561520557fe5b6000898152600f6020526040902060080154919004925061522d90839063ffffffff613aa016565b6000888152600f6020526040902060080155670de0b6b3a7640000615258838663ffffffff6145ba16565b81151561526157fe5b6000888152600d602090815260408083208c8452825280832060020154600f909252909120600801549290910492506152b491613a66908490670de0b6b3a7640000906147a6908a63ffffffff6145ba16565b6000878152600d602090815260408083208b8452825280832060020193909355600f9052206005015461531490670de0b6b3a7640000906152fc90859063ffffffff6145ba16565b81151561530557fe5b8791900463ffffffff6146ff16565b979650505050505050565b6101006040519081016040528060008152602001600081526020016000600160a060020a031681526020016000801916815260200160008152602001600081526020016000815260200160008152509056006e20646973636f72640000000000000000000000000000000000000000000000706f636b6574206c696e743a206e6f7420612076616c69642063757272656e63596f7520617265206e6f74206f776e65722e0000000000000000000000000000697473206e6f74207265616479207965742e2020636865636b203f65746120696e6f20766974616c696b2c206e6f000000000000000000000000000000000000736f7272792068756d616e73206f6e6c79000000000000000000000000000000a165627a7a72305820920697f17c12fe2eddcbbd4f500f3c80dd53328ac281cf03d5c05984437cd1450029

Deployed Bytecode

0x6080604052600436106101ed5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663018a25e8811461038d57806306fdde03146103b4578063079ce3271461043e5780630f15f4c014610451578063107397441461046657806310f01eba1461048757806311a09ae7146104a857806324c33d33146104bd5780632660316e146105345780632a9b92a6146105635780632ce21999146105845780632e19ebdc1461059c578063349cdcac146105b45780633ccfd60b146105c55780633ddd4698146105da5780633f1092051461063657806349cc635d146106575780635893d48114610681578063624ae5c01461069c57806363066434146106b1578063685ffd83146106e7578063747dff421461073a57806382bfc739146107c55780638da5cb5b146107df5780638f38f309146108105780638f7140ea1461081e578063921dec211461083957806395d89b411461088c57806398a0871d146108a1578063a2bccae9146108b8578063a65b37a1146108f9578063c519500e14610907578063c7e284b81461091f578063ce89c80c14610934578063cf8080001461094f578063d53b267914610967578063d87574e01461097c578063de7874f314610991578063ee0b5d8b146109eb578063f2fde38b14610a44575b6101f561531f565b60095460009060ff161515600114610259576040805160e560020a62461bcd02815260206004820152602960248201526000805160206153d28339815191526044820152600080516020615372833981519152606482015290519081900360840190fd5b33803b80156102a0576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615412833981519152604482015290519081900360640190fd5b34633b9aca008110156102f8576040805160e560020a62461bcd0281526020600482015260216024820152600080516020615392833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af6800000811115610348576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206153f2833981519152604482015290519081900360640190fd5b61035185610a65565b336000908152600a6020908152604080832054808452600c909252909120600601549196509450610386908590600288610d05565b5050505050005b34801561039957600080fd5b506103a2610eeb565b60408051918252519081900360200190f35b3480156103c057600080fd5b506103c9610fb0565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104035781810151838201526020016103eb565b50505050905090810190601f1680156104305780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61044f600435602435604435610fe7565b005b34801561045d57600080fd5b5061044f6111f3565b34801561047257600080fd5b5061044f600160a060020a0360043516611315565b34801561049357600080fd5b506103a2600160a060020a0360043516611394565b3480156104b457600080fd5b506103a26113a6565b3480156104c957600080fd5b506104d56004356113ac565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e087015261010086015261012085015261014084015261016083015251908190036101800190f35b34801561054057600080fd5b5061054f60043560243561140f565b604080519115158252519081900360200190f35b34801561056f57600080fd5b5061044f600160a060020a036004351661142f565b34801561059057600080fd5b506103a26004356114ae565b3480156105a857600080fd5b506103a26004356114c0565b61044f6004356024356044356114d2565b3480156105d157600080fd5b5061044f6116b8565b6040805160206004803580820135601f810184900484028501840190955284845261044f94369492936024939284019190819084018382808284375094975050600160a060020a03853516955050505050602001351515611a2c565b34801561064257600080fd5b5061044f600160a060020a0360043516611bd9565b34801561066357600080fd5b5061044f600435600160a060020a0360243516604435606435611c58565b34801561068d57600080fd5b506103a2600435602435611e40565b3480156106a857600080fd5b506103a2611e5d565b3480156106bd57600080fd5b506106c9600435611e63565b60408051938452602084019290925282820152519081900360600190f35b6040805160206004803580820135601f810184900484028501840190955284845261044f943694929360249392840191908190840183828082843750949750508435955050505050602001351515612009565b34801561074657600080fd5b5061074f6120e3565b604080519e8f5260208f019d909d528d8d019b909b5260608d019990995260808c019790975260a08b019590955260c08a0193909352600160a060020a0390911660e08901526101008801526101208701526101408601526101608501526101808401526101a083015251908190036101c00190f35b61044f600160a060020a03600435166024356044356122e1565b3480156107eb57600080fd5b506107f46124dd565b60408051600160a060020a039092168252519081900360200190f35b61044f6004356024356124ec565b34801561082a57600080fd5b5061044f6004356024356126d3565b6040805160206004803580820135601f810184900484028501840190955284845261044f9436949293602493928401919081908401838280828437509497505084359550505050506020013515156127a7565b34801561089857600080fd5b506103c9612881565b61044f600160a060020a03600435166024356128b8565b3480156108c457600080fd5b506108d3600435602435612acf565b604080519485526020850193909352838301919091526060830152519081900360800190f35b61044f600435602435612b01565b34801561091357600080fd5b506103a2600435612cfe565b34801561092b57600080fd5b506103a2612d10565b34801561094057600080fd5b506103a2600435602435612d9f565b34801561095b57600080fd5b506103a2600435612e47565b34801561097357600080fd5b5061054f612ef9565b34801561098857600080fd5b506103a2612f02565b34801561099d57600080fd5b506109a9600435612f08565b60408051600160a060020a0390981688526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b3480156109f757600080fd5b50610a0c600160a060020a0360043516612f4f565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b348015610a5057600080fd5b5061044f600160a060020a0360043516613024565b610a6d61531f565b336000908152600a60205260408120549080821515610cfc57600354604080517fe56556a90000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163e56556a9916024808201926020929091908290030181600087803b158015610aec57600080fd5b505af1158015610b00573d6000803e3d6000fd5b505050506040513d6020811015610b1657600080fd5b5051600354604080517f82e37b2c000000000000000000000000000000000000000000000000000000008152600481018490529051929550600160a060020a03909116916382e37b2c916024808201926020929091908290030181600087803b158015610b8257600080fd5b505af1158015610b96573d6000803e3d6000fd5b505050506040513d6020811015610bac57600080fd5b5051600354604080517fe3c08adf000000000000000000000000000000000000000000000000000000008152600481018790529051929450600160a060020a039091169163e3c08adf916024808201926020929091908290030181600087803b158015610c1857600080fd5b505af1158015610c2c573d6000803e3d6000fd5b505050506040513d6020811015610c4257600080fd5b5051336000818152600a60209081526040808320889055878352600c9091529020805473ffffffffffffffffffffffffffffffffffffffff1916909117905590508115610ccb576000828152600b60209081526040808320869055858352600c82528083206001908101869055600e8352818420868552909252909120805460ff191690911790555b8015801590610cda5750828114155b15610cf4576000838152600c602052604090206006018190555b845160010185525b50929392505050565b6008546005546000828152600f602052604090206004015442910181118015610d7057506000828152600f602052604090206002015481111580610d7057506000828152600f602052604090206002015481118015610d7057506000828152600f6020526040902054155b15610d8857610d8382873488888861312f565b610ee3565b6000828152600f602052604090206002015481118015610dba57506000828152600f602052604090206003015460ff16155b15610eae576000828152600f60205260409020600301805460ff19166001179055610de4836136fd565b8051670de0b6b3a7640000830201815260208082018051890181526000898152600c83526040908190206001015484519251828601516060808801516080808a015160a0808c015160c0808e01518b513381529d8e019a909a52348d8c0152958c019a909a52918a0195909552600160a060020a039093169288019290925286015260e0850152610100840192909252610120830191909152519194507f5905265be09e3f6f7813c1dce4febfad76d4b3a46288aa344d2531532c3519c991908190036101400190a15b6000868152600c6020526040902060030154610ed0903463ffffffff613aa016565b6000878152600c60205260409020600301555b505050505050565b6008546005546000828152600f602052604081206004015490929142910181118015610f5957506000828152600f602052604090206002015481111580610f5957506000828152600f602052604090206002015481118015610f5957506000828152600f6020526040902054155b15610fa1576000828152600f6020526040902060050154610f9a90670de0b6b3a764000090610f8e908263ffffffff613aa016565b9063ffffffff613b0116565b9250610fab565b6544364c5bb00092505b505090565b60408051808201909152601681527f466f6d6f3344204173696120284f6666696369616c2900000000000000000000602082015281565b610fef61531f565b600954600090819060ff161515600114611055576040805160e560020a62461bcd02815260206004820152602960248201526000805160206153d28339815191526044820152600080516020615372833981519152606482015290519081900360840190fd5b33803b801561109c576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615412833981519152604482015290519081900360640190fd5b34633b9aca008110156110f4576040805160e560020a62461bcd0281526020600482015260216024820152600080516020615392833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af6800000811115611144576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206153f2833981519152604482015290519081900360640190fd5b336000908152600a6020526040902054945088158061117357506000858152600c602052604090206001015489145b15611191576000858152600c602052604090206006015493506111d0565b6000898152600b6020908152604080832054888452600c9092529091206006015490945084146111d0576000858152600c602052604090206006018490555b6111d988613b2e565b97506111e885858a8a8a613b53565b505050505050505050565b600054600160a060020a03163314611243576040805160e560020a62461bcd02815260206004820152601260248201526000805160206153b2833981519152604482015290519081900360640190fd5b60095460ff161561129e576040805160e560020a62461bcd02815260206004820152601860248201527f666f6d6f336420616c7265616479206163746976617465640000000000000000604482015290519081900360640190fd5b6009805460ff191660019081179091556008819055600554600454600092909252600f602052429091019081037f169f97de0d9a84d840042b17d3c6b9638b3d6fd9024c9eb0c7a306a17b49f89355610e10017f169f97de0d9a84d840042b17d3c6b9638b3d6fd9024c9eb0c7a306a17b49f89155565b600054600160a060020a03163314611365576040805160e560020a62461bcd02815260206004820152601260248201526000805160206153b2833981519152604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600a6020526000908152604090205481565b60075481565b600f60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a8b0154600b909b0154999a9899979860ff909716979596949593949293919290918c565b600e60209081526000928352604080842090915290825290205460ff1681565b600054600160a060020a0316331461147f576040805160e560020a62461bcd02815260206004820152601260248201526000805160206153b2833981519152604482015290519081900360640190fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60116020526000908152604090205481565b600b6020526000908152604090205481565b6114da61531f565b60095460009060ff16151560011461153e576040805160e560020a62461bcd02815260206004820152602960248201526000805160206153d28339815191526044820152600080516020615372833981519152606482015290519081900360840190fd5b33803b8015611585576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615412833981519152604482015290519081900360640190fd5b34633b9aca008110156115dd576040805160e560020a62461bcd0281526020600482015260216024820152600080516020615392833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af680000081111561162d576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206153f2833981519152604482015290519081900360640190fd5b336000908152600a6020526040902054935087158061164b57508388145b15611669576000848152600c60205260409020600601549750611696565b6000848152600c60205260409020600601548814611696576000848152600c602052604090206006018890555b61169f87613b2e565b96506116ae8489898989613b53565b5050505050505050565b6000806000806116c661531f565b60095460ff161515600114611727576040805160e560020a62461bcd02815260206004820152602960248201526000805160206153d28339815191526044820152600080516020615372833981519152606482015290519081900360840190fd5b33803b801561176e576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615412833981519152604482015290519081900360640190fd5b336000908152600a6020908152604080832054600854808552600f9093529220600201544299509196509450871180156117ba57506000848152600f602052604090206003015460ff16155b80156117d357506000848152600f602052604090205415155b1561196d576000848152600f60205260409020600301805460ff191660011790556117fd836136fd565b925061180885613d20565b95506000861115611859576000858152600c6020526040808220549051600160a060020a039091169188156108fc02918991818181858888f19350505050158015611857573d6000803e3d6000fd5b505b86670de0b6b3a764000002836000015101836000018181525050848360200151018360200181815250507f9e9c9331834267c84342f2dce38f9ba35eb0bfbcc207c64872e1e74f9706f2a333600c6000888152602001908152602001600020600101548886600001518760200151886040015189606001518a608001518b60a001518c60c00151604051808b600160a060020a0316600160a060020a031681526020018a6000191660001916815260200189815260200188815260200187815260200186600160a060020a0316600160a060020a0316815260200185600019166000191681526020018481526020018381526020018281526020019a505050505050505050505060405180910390a1611a23565b61197685613d20565b955060008611156119c7576000858152600c6020526040808220549051600160a060020a039091169188156108fc02918991818181858888f193505050501580156119c5573d6000803e3d6000fd5b505b6000858152600c60209081526040918290206001015482513381529182015280820188905260608101899052905186917f8f36579a548bc439baa172a6521207464154da77f411e2da3db2f53affe6cc3a919081900360800190a25b50505050505050565b6000808080808033803b8015611a7a576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615412833981519152604482015290519081900360640190fd5b611a838b613da7565b600354604080517faa4d490b000000000000000000000000000000000000000000000000000000008152336004820181905260248201859052600160a060020a038f811660448401528e151560648401528351959d50909b50349a509092169263aa4d490b928a92608480830193919282900301818588803b158015611b0857600080fd5b505af1158015611b1c573d6000803e3d6000fd5b50505050506040513d6040811015611b3357600080fd5b508051602091820151600160a060020a03808b166000818152600a8652604080822054858352600c8852918190208054600190910154825188151581529889018790529416878201526060870193909352608086018c90524260a0870152915193995091975095508a92909186917fdd6176433ff5026bbce96b068584b7bbe3514227e72df9c630b749ae87e64442919081900360c00190a45050505050505050505050565b600054600160a060020a03163314611c29576040805160e560020a62461bcd02815260206004820152601260248201526000805160206153b2833981519152604482015290519081900360640190fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600354600160a060020a03163314611ce0576040805160e560020a62461bcd02815260206004820152602760248201527f796f7572206e6f7420706c617965724e616d657320636f6e74726163742e2e2e60448201527f20686d6d6d2e2e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0383166000908152600a60205260409020548414611d1b57600160a060020a0383166000908152600a602052604090208490555b6000828152600b60205260409020548414611d42576000828152600b602052604090208490555b6000848152600c6020526040902054600160a060020a03848116911614611d98576000848152600c60205260409020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385161790555b6000848152600c60205260409020600101548214611dc5576000848152600c602052604090206001018290555b6000848152600c60205260409020600601548114611df2576000848152600c602052604090206006018190555b6000848152600e6020908152604080832085845290915290205460ff161515611e3a576000848152600e602090815260408083208584529091529020805460ff191660011790555b50505050565b601060209081526000928352604080842090915290825290205481565b60085481565b6008546000818152600f60205260408120600201549091829182919042118015611e9f57506000818152600f602052604090206003015460ff16155b8015611eb857506000818152600f602052604090205415155b15611fd9576000818152600f6020526040902054851415611f9d576000818152600f6020526040902060070154611f2690606490611efd90603063ffffffff6145ba16565b811515611f0657fe5b6000888152600c602052604090206002015491900463ffffffff613aa016565b6000868152600d60209081526040808320858452909152902060020154611f7f90611f6190611f558986614631565b9063ffffffff6146ff16565b6000888152600c60205260409020600301549063ffffffff613aa016565b6000878152600c602052604090206004015491955093509150612001565b6000858152600c60209081526040808320600290810154600d8452828520868652909352922090910154611f7f90611f6190611f558986614631565b6000858152600c602052604090206002810154600590910154611f7f90611f6190889061475f565b509193909250565b6000808080808033803b8015612057576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615412833981519152604482015290519081900360640190fd5b6120608b613da7565b600354604080517f745ea0c1000000000000000000000000000000000000000000000000000000008152336004820181905260248201859052604482018f90528d151560648301528251949c509a50349950600160a060020a039092169263745ea0c1928a92608480830193919282900301818588803b158015611b0857600080fd5b60008060008060008060008060008060008060008060006008549050600f60008281526020019081526020016000206009015481600f600084815260200190815260200160002060050154600f600085815260200190815260200160002060020154600f600086815260200190815260200160002060040154600f600087815260200190815260200160002060070154600f600088815260200190815260200160002060000154600a02600f60008981526020019081526020016000206001015401600c6000600f60008b815260200190815260200160002060000154815260200190815260200160002060000160009054906101000a9004600160a060020a0316600c6000600f60008c815260200190815260200160002060000154815260200190815260200160002060010154601060008b8152602001908152602001600020600080815260200190815260200160002054601060008c815260200190815260200160002060006001815260200190815260200160002054601060008d815260200190815260200160002060006002815260200190815260200160002054601060008e8152602001908152602001600020600060038152602001908152602001600020546006546103e802600754019e509e509e509e509e509e509e509e509e509e509e509e509e509e5050909192939495969798999a9b9c9d565b6122e961531f565b600954600090819060ff16151560011461234f576040805160e560020a62461bcd02815260206004820152602960248201526000805160206153d28339815191526044820152600080516020615372833981519152606482015290519081900360840190fd5b33803b8015612396576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615412833981519152604482015290519081900360640190fd5b34633b9aca008110156123ee576040805160e560020a62461bcd0281526020600482015260216024820152600080516020615392833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af680000081111561243e576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206153f2833981519152604482015290519081900360640190fd5b336000908152600a60205260409020549450600160a060020a038916158061246e5750600160a060020a03891633145b1561248c576000858152600c602052604090206006015493506111d0565b600160a060020a0389166000908152600a6020908152604080832054888452600c9092529091206006015490945084146111d0576000858152600c602052604090206006018490556111d988613b2e565b600054600160a060020a031681565b6124f461531f565b60095460009060ff161515600114612558576040805160e560020a62461bcd02815260206004820152602960248201526000805160206153d28339815191526044820152600080516020615372833981519152606482015290519081900360840190fd5b33803b801561259f576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615412833981519152604482015290519081900360640190fd5b34633b9aca008110156125f7576040805160e560020a62461bcd0281526020600482015260216024820152600080516020615392833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af6800000811115612647576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206153f2833981519152604482015290519081900360640190fd5b61265085610a65565b336000908152600a6020526040902054909550935086158061267157508387145b1561268f576000848152600c602052604090206006015496506126bc565b6000848152600c602052604090206006015487146126bc576000848152600c602052604090206006018790555b6126c586613b2e565b9550611a2384888888610d05565b600354600160a060020a0316331461275b576040805160e560020a62461bcd02815260206004820152602760248201527f796f7572206e6f7420706c617965724e616d657320636f6e74726163742e2e2e60448201527f20686d6d6d2e2e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000828152600e6020908152604080832084845290915290205460ff1615156127a3576000828152600e602090815260408083208484529091529020805460ff191660011790555b5050565b6000808080808033803b80156127f5576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615412833981519152604482015290519081900360640190fd5b6127fe8b613da7565b600354604080517fc0942dfd000000000000000000000000000000000000000000000000000000008152336004820181905260248201859052604482018f90528d151560648301528251949c509a50349950600160a060020a039092169263c0942dfd928a92608480830193919282900301818588803b158015611b0857600080fd5b60408051808201909152600481527f4633444100000000000000000000000000000000000000000000000000000000602082015281565b6128c061531f565b600954600090819060ff161515600114612926576040805160e560020a62461bcd02815260206004820152602960248201526000805160206153d28339815191526044820152600080516020615372833981519152606482015290519081900360840190fd5b33803b801561296d576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615412833981519152604482015290519081900360640190fd5b34633b9aca008110156129c5576040805160e560020a62461bcd0281526020600482015260216024820152600080516020615392833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af6800000811115612a15576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206153f2833981519152604482015290519081900360640190fd5b612a1e86610a65565b336000908152600a60205260409020549096509450600160a060020a0388161580612a515750600160a060020a03881633145b15612a6f576000858152600c60205260409020600601549350612ab8565b600160a060020a0388166000908152600a6020908152604080832054888452600c909252909120600601549094508414612ab8576000858152600c602052604090206006018490555b612ac187613b2e565b96506116ae85858989610d05565b600d60209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b612b0961531f565b600954600090819060ff161515600114612b6f576040805160e560020a62461bcd02815260206004820152602960248201526000805160206153d28339815191526044820152600080516020615372833981519152606482015290519081900360840190fd5b33803b8015612bb6576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615412833981519152604482015290519081900360640190fd5b34633b9aca00811015612c0e576040805160e560020a62461bcd0281526020600482015260216024820152600080516020615392833981519152604482015260f860020a607902606482015290519081900360840190fd5b69152d02c7e14af6800000811115612c5e576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206153f2833981519152604482015290519081900360640190fd5b612c6786610a65565b336000908152600a60205260409020549096509450871580612c9957506000858152600c602052604090206001015488145b15612cb7576000858152600c60205260409020600601549350612ab8565b6000888152600b6020908152604080832054888452600c909252909120600601549094508414612ab8576000858152600c60205260409020600601849055612ac187613b2e565b60126020526000908152604090205481565b6008546000818152600f60205260408120600201549091904290811015612d96576005546000838152600f602052604090206004015401811115612d70576000828152600f6020526040902060020154610f9a908263ffffffff6146ff16565b6005546000838152600f6020526040902060040154610f9a91018263ffffffff6146ff16565b60009250610fab565b6005546000838152600f6020526040812060040154909142910181118015612e0957506000848152600f602052604090206002015481111580612e0957506000848152600f602052604090206002015481118015612e0957506000848152600f6020526040902054155b15612e37576000848152600f6020526040902060060154612e30908463ffffffff6147bc16565b9150612e40565b612e30836147dd565b5092915050565b6008546005546000828152600f602052604081206004015490929142910181118015612eb557506000828152600f602052604090206002015481111580612eb557506000828152600f602052604090206002015481118015612eb557506000828152600f6020526040902054155b15612ee9576000828152600f6020526040902060050154612ee2908590610f8e908263ffffffff613aa016565b9250612ef2565b612ee284614855565b5050919050565b60095460ff1681565b60065481565b600c602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154600160a060020a039095169593949293919290919087565b6000806000806000806000806000600854915050600160a060020a0389166000908152600a6020908152604080832054808452600c808452828520600180820154600d8752858820898952875294872001549583905293526002830154600590930154909384939091612fe590612fc790869061475f565b6000878152600c60205260409020600301549063ffffffff613aa016565b6000958652600c6020908152604080882060040154600d83528189209989529890915290952054939e929d50909b509950919750919550909350915050565b600054600160a060020a03163314613074576040805160e560020a62461bcd02815260206004820152601260248201526000805160206153b2833981519152604482015290519081900360640190fd5b600160a060020a03811615156130d4576040805160e560020a62461bcd02815260206004820152601060248201527f496e76616c696420616464726573732e00000000000000000000000000000000604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600154604080517f977555ca000000000000000000000000000000000000000000000000000000008152600481018890529051600092839283928392600160a060020a03169163977555ca916024808301928692919082900301818387803b15801561319a57600080fd5b505af11580156131ae573d6000803e3d6000fd5b50505060008a8152600d602090815260408083208e8452909152902060010154151590506131e3576131e089866148c2565b94505b60008a8152600f602052604090206006015468056bc75e2d6310000011801561323d57506000898152600d602090815260408083208d8452909152902054670de0b6b3a76400009061323b908a63ffffffff613aa016565b115b156132c4576000898152600d602090815260408083208d845290915290205461327590670de0b6b3a76400009063ffffffff6146ff16565b9350613287888563ffffffff6146ff16565b60008a8152600c60205260409020600301549093506132ac908463ffffffff613aa016565b60008a8152600c602052604090206003015592965086925b633b9aca008811156136f15760008a8152600f60205260409020600601546132f2908963ffffffff6147bc16565b9150670de0b6b3a764000082106133695761330d828b614922565b60008a8152600f602052604090205489146133345760008a8152600f602052604090208990555b60008a8152600f602052604090206001015486146133615760008a8152600f602052604090206001018690555b845160640185525b67016345785d8a000088106135a957600780546001019055613389614a00565b1515600114156135a957678ac7230489e80000881061342a576006546064906133b990604b63ffffffff6145ba16565b8115156133c257fe5b60008b8152600c602052604090206002015491900491506133e9908263ffffffff613aa016565b60008a8152600c602052604090206002015560065461340e908263ffffffff6146ff16565b60065584516d0eca8847c4129106ce830000000001855261357e565b670de0b6b3a764000088101580156134495750678ac7230489e8000088105b156134d65760065460649061346590603263ffffffff6145ba16565b81151561346e57fe5b60008b8152600c60205260409020600201549190049150613495908263ffffffff613aa016565b60008a8152600c60205260409020600201556006546134ba908263ffffffff6146ff16565b60065584516d09dc5ada82b70b59df020000000001855261357e565b67016345785d8a000088101580156134f55750670de0b6b3a764000088105b1561357e5760065460649061351190601963ffffffff6145ba16565b81151561351a57fe5b60008b8152600c60205260409020600201549190049150613541908263ffffffff613aa016565b60008a8152600c6020526040902060020155600654613566908263ffffffff6146ff16565b60065584516d0eca8847c4129106ce83000000000185525b84516d314dc6448d9338c15b0a000000008202016c7e37be2022c0914b268000000001855260006007555b60075485516103e89091020185526000898152600d602090815260408083208d84529091529020600101546135e590839063ffffffff613aa016565b60008a8152600d602090815260408083208e84529091529020600181019190915554613612908990613aa0565b60008a8152600d602090815260408083208e8452825280832093909355600f9052206005015461364990839063ffffffff613aa016565b60008b8152600f6020526040902060058101919091556006015461367490899063ffffffff613aa016565b60008b8152600f602090815260408083206006019390935560108152828220898352905220546136ab90899063ffffffff613aa016565b60008b81526010602090815260408083208a84529091529020556136d28a8a8a8a89614c17565b94506136e28a8a8a89868a614e6d565b94506136f189878a8589614f77565b50505050505050505050565b61370561531f565b6008546000818152600f602052604081208054600182015460079092015490928080808080606461373d88603a63ffffffff6145ba16565b81151561374657fe5b04955060328760008a815260126020526040902054919004955060649061377490899063ffffffff6145ba16565b81151561377d57fe5b04935061379684611f5587818b8b63ffffffff6146ff16565b60008b8152600f60205260409020600501549093506137c385670de0b6b3a764000063ffffffff6145ba16565b8115156137cc57fe5b60008c8152600f6020526040902060050154919004925061381a90670de0b6b3a76400009061380290859063ffffffff6145ba16565b81151561380b57fe5b8691900463ffffffff6146ff16565b9050600081111561384a57613835848263ffffffff6146ff16565b9350613847838263ffffffff613aa016565b92505b6000898152600c602052604090206002015461386d90879063ffffffff613aa016565b60008a8152600c6020526040808220600290810193909355915482517fd0e30db00000000000000000000000000000000000000000000000000000000081529251600160a060020a039091169263d0e30db092899260048084019382900301818588803b1580156138dd57600080fd5b505af11580156138f1573d6000803e3d6000fd5b50505060008c8152600f6020526040902060080154613919925084915063ffffffff613aa016565b600f60008c815260200190815260200160002060080181905550600f60008b815260200190815260200160002060020154620f4240028c60000151018c60000181815250508767016345785d8a000002896a52b7d2dcc80cd2e4000000028d6020015101018c6020018181525050600c60008a815260200190815260200160002060000160009054906101000a9004600160a060020a03168c60400190600160a060020a03169081600160a060020a031681525050600c60008a8152602001908152602001600020600101548c606001906000191690816000191681525050858c6080018181525050838c60c0018181525050828c60a001818152505060086000815480929190600101919050555089806001019a505042600f60008c815260200190815260200160002060040181905550613a72600554613a66610e1042613aa090919063ffffffff16565b9063ffffffff613aa016565b60008b8152600f6020526040902060028101919091556007018390558b9a5050505050505050505050919050565b81810182811015613afb576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820616464206661696c656400000000000000000000000000604482015290519081900360640190fd5b92915050565b6000613b27613b1e613b19858563ffffffff6146ff16565b614855565b611f5585614855565b9392505050565b600080821080613b3e5750600382115b15613b4b57506002613b4e565b50805b919050565b6008546005546000828152600f602052604090206004015442910181118015613bbe57506000828152600f602052604090206002015481111580613bbe57506000828152600f602052604090206002015481118015613bbe57506000828152600f6020526040902054155b15613bf557613bd084611f5589613d20565b6000888152600c6020526040902060030155613bf082888689898861312f565b611a23565b6000828152600f602052604090206002015481118015613c2757506000828152600f602052604090206003015460ff16155b15611a23576000828152600f60205260409020600301805460ff19166001179055613c51836136fd565b8051670de0b6b3a76400008302018152602080820180518a01815260008a8152600c83526040908190206001015484519251828601516060808801516080808a015160a0808c015160c0808e01518b513381529d8e019a909a528c8b019b909b52948b0196909652600160a060020a0390941690890152928701929092529385019390935260e0840192909252610100830191909152519194507f603a740c9291cc914e0c8d16b355cdb091aefd5d9bbdf4f95371ce756f5e8a4091908190036101200190a150505050505050565b6000818152600c60205260408120600501548190613d3f9084906150d8565b6000838152600c6020526040902060048101546003820154600290920154613d7192613a66919063ffffffff613aa016565b90506000811115613d9d576000838152600c602052604081206002810182905560038101829055600401555b8091505b50919050565b8051600090829082808060208411801590613dc25750600084115b1515613e3e576040805160e560020a62461bcd02815260206004820152602a60248201527f737472696e67206d757374206265206265747765656e203120616e642033322060448201527f6368617261637465727300000000000000000000000000000000000000000000606482015290519081900360840190fd5b846000815181101515613e4d57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214158015613eb457508460018503815181101515613e8c57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214155b1515613f30576040805160e560020a62461bcd02815260206004820152602560248201527f737472696e672063616e6e6f74207374617274206f7220656e6420776974682060448201527f7370616365000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b846000815181101515613f3f57fe5b90602001015160f860020a900460f860020a02600160f860020a031916603060f860020a02141561408257846001815181101515613f7957fe5b90602001015160f860020a900460f860020a02600160f860020a031916607860f860020a0214151515613ff6576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030780000000000604482015290519081900360640190fd5b84600181518110151561400557fe5b90602001015160f860020a900460f860020a02600160f860020a031916605860f860020a0214151515614082576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030580000000000604482015290519081900360640190fd5b600091505b838210156145525784517f4000000000000000000000000000000000000000000000000000000000000000908690849081106140bf57fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015614133575084517f5b000000000000000000000000000000000000000000000000000000000000009086908490811061411457fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b156141a057848281518110151561414657fe5b90602001015160f860020a900460f860020a0260f860020a900460200160f860020a02858381518110151561417757fe5b906020010190600160f860020a031916908160001a90535082151561419b57600192505b614547565b84828151811015156141ae57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a02148061427e575084517f60000000000000000000000000000000000000000000000000000000000000009086908490811061420a57fe5b90602001015160f860020a900460f860020a02600160f860020a03191611801561427e575084517f7b000000000000000000000000000000000000000000000000000000000000009086908490811061425f57fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b80614328575084517f2f00000000000000000000000000000000000000000000000000000000000000908690849081106142b457fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015614328575084517f3a000000000000000000000000000000000000000000000000000000000000009086908490811061430957fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b15156143a4576040805160e560020a62461bcd02815260206004820152602260248201527f737472696e6720636f6e7461696e7320696e76616c696420636861726163746560448201527f7273000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b84828151811015156143b257fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214156144915784826001018151811015156143ee57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214151515614491576040805160e560020a62461bcd02815260206004820152602860248201527f737472696e672063616e6e6f7420636f6e7461696e20636f6e7365637574697660448201527f6520737061636573000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b8215801561453d575084517f3000000000000000000000000000000000000000000000000000000000000000908690849081106144ca57fe5b90602001015160f860020a900460f860020a02600160f860020a031916108061453d575084517f39000000000000000000000000000000000000000000000000000000000000009086908490811061451e57fe5b90602001015160f860020a900460f860020a02600160f860020a031916115b1561454757600192505b600190910190614087565b6001831515146145ac576040805160e560020a62461bcd02815260206004820152601d60248201527f737472696e672063616e6e6f74206265206f6e6c79206e756d62657273000000604482015290519081900360640190fd5b505050506020015192915050565b60008215156145cb57506000613afb565b508181028183828115156145db57fe5b0414613afb576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d617468206d756c206661696c656400000000000000000000000000604482015290519081900360640190fd5b6000828152600d602090815260408083208484528252808320600190810154600f808552838620600581015493810154875260128652938620548787529452600790920154670de0b6b3a7640000936146ee93926146e29290916146b99187916064916146a39163ffffffff6145ba16565b8115156146ac57fe5b049063ffffffff6145ba16565b8115156146c257fe5b6000888152600f602052604090206008015491900463ffffffff613aa016565b9063ffffffff6145ba16565b8115156146f757fe5b049392505050565b600082821115614759576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820737562206661696c656400000000000000000000000000604482015290519081900360640190fd5b50900390565b6000828152600d6020908152604080832084845282528083206002810154600190910154600f90935290832060080154613b2792670de0b6b3a7640000916147a6916145ba565b8115156147af57fe5b049063ffffffff6146ff16565b6000613b276147ca846147dd565b611f556147dd868663ffffffff613aa016565b60006309502f906148456d03b2a1d15167e7c5699bfde00000611f556148407a0dac7055469777a6122ee4310dd6c14410500f2904840000000000613a666b01027e72f1f12813088000006146e28a670de0b6b3a764000063ffffffff6145ba16565b61516f565b81151561484e57fe5b0492915050565b6000614868670de0b6b3a76400006151c2565b614845600261489b61488886670de0b6b3a764000063ffffffff6145ba16565b65886c8f6730709063ffffffff6145ba16565b8115156148a457fe5b04613a666148b1866151c2565b6304a817c89063ffffffff6145ba16565b6148ca61531f565b6000838152600c6020526040902060050154156148fe576000838152600c60205260409020600501546148fe9084906150d8565b506008546000838152600c60205260409020600501558051600a0181528092915050565b6000818152600f60205260408120600201544291908211801561495157506000838152600f6020526040902054155b156149755761496e82613a66601e670de0b6b3a7640000886146ac565b90506149a2565b6000838152600f602052604090206002015461499f90613a66601e670de0b6b3a7640000886146ac565b90505b6149b5620151808363ffffffff613aa016565b8110156149d5576000838152600f60205260409020600201819055611e3a565b6149e8620151808363ffffffff613aa016565b6000848152600f602052604090206002015550505050565b600080614b7143613a6642336040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b60208310614a7b5780518252601f199092019160209182019101614a5c565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912092505050811515614ab157fe5b04613a6645613a6642416040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b60208310614b2a5780518252601f199092019160209182019101614b0b565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912092505050811515614b6057fe5b04613a66424463ffffffff613aa016565b604051602001808281526020019150506040516020818303038152906040526040518082805190602001908083835b60208310614bbf5780518252601f199092019160209182019101614ba0565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912060075490945092506103e89150839050046103e80282031015614c0e5760019150614c13565b600091505b5090565b614c1f61531f565b6000808080601988049350600260009054906101000a9004600160a060020a0316600160a060020a031663d0e30db0856040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016000604051808303818588803b158015614c9657600080fd5b505af1158015614caa573d6000803e3d6000fd5b5050505050601488811515614cbb57fe5b04925088871480614cdb57506000878152600c6020526040902060010154155b15614ce557600196505b6000878152600c6020526040902060040154614d0890849063ffffffff613aa016565b6000888152600c6020908152604091829020600481019390935582546001909301548251600160a060020a03909416845290830152818101859052426060830152518a918c918a917f590bbc0fc16915a85269a48f74783c39842b7ae9eceb7c295c95dbe8b3ec7331919081900360800190a450506000858152600c60205260408082206006908101548084529190922090910154600a8804919081148015614dc057506000818152600c6020526040902060010154155b15614dc9575060015b6000818152600c6020526040902060040154614dec90839063ffffffff613aa016565b6000828152600c6020908152604091829020600481019390935582546001909301548251600160a060020a039094168452908301528181018490524260608301525188918c9184917f590bbc0fc16915a85269a48f74783c39842b7ae9eceb7c295c95dbe8b3ec7331919081900360800190a4509398975050505050505050565b614e7561531f565b600084815260116020526040812054819081908190606490614e9e908b9063ffffffff6145ba16565b811515614ea757fe5b049350606489049250614ec583600654613aa090919063ffffffff16565b600655614ee5614ed860058b0486613aa0565b8a9063ffffffff6146ff16565b9150614ef38b8b868a6151ce565b90506000811115614f1157614f0e848263ffffffff6146ff16565b93505b60008b8152600f6020526040902060070154614f3790613a66848463ffffffff613aa016565b60008c8152600f602052604090206007015560c0860151614f5f90859063ffffffff613aa016565b60c08701525060e08501525091979650505050505050565b836c01431e0fae6d7217caa00000000242670de0b6b3a76400000282600001510101816000018181525050600854751aba4714957d300d0e549208b31adb100000000000000285826020015101018160200181815250507f3671a735b2c7f1e43f1ab4385d4c5b480bbff437ad893b703fb0dfdbd24679e281600001518260200151600c6000898152602001908152602001600020600101543387878760400151886060015189608001518a60a001518b60c001518c60e00151600654604051808e81526020018d81526020018c600019166000191681526020018b600160a060020a0316600160a060020a031681526020018a815260200189815260200188600160a060020a0316600160a060020a0316815260200187600019166000191681526020018681526020018581526020018481526020018381526020018281526020019d505050505050505050505050505060405180910390a15050505050565b60006150e4838361475f565b9050600081111561516a576000838152600c602052604090206003015461511290829063ffffffff613aa016565b6000848152600c6020908152604080832060030193909355600d81528282208583529052206002015461514c90829063ffffffff613aa016565b6000848152600d602090815260408083208684529091529020600201555b505050565b600080600261517f846001613aa0565b81151561518857fe5b0490508291505b81811015613da15780915060026151b182858115156151aa57fe5b0483613aa0565b8115156151ba57fe5b04905061518f565b6000613afb82836145ba565b6000848152600f6020526040812060050154819081906151fc86670de0b6b3a764000063ffffffff6145ba16565b81151561520557fe5b6000898152600f6020526040902060080154919004925061522d90839063ffffffff613aa016565b6000888152600f6020526040902060080155670de0b6b3a7640000615258838663ffffffff6145ba16565b81151561526157fe5b6000888152600d602090815260408083208c8452825280832060020154600f909252909120600801549290910492506152b491613a66908490670de0b6b3a7640000906147a6908a63ffffffff6145ba16565b6000878152600d602090815260408083208b8452825280832060020193909355600f9052206005015461531490670de0b6b3a7640000906152fc90859063ffffffff6145ba16565b81151561530557fe5b8791900463ffffffff6146ff16565b979650505050505050565b6101006040519081016040528060008152602001600081526020016000600160a060020a031681526020016000801916815260200160008152602001600081526020016000815260200160008152509056006e20646973636f72640000000000000000000000000000000000000000000000706f636b6574206c696e743a206e6f7420612076616c69642063757272656e63596f7520617265206e6f74206f776e65722e0000000000000000000000000000697473206e6f74207265616479207965742e2020636865636b203f65746120696e6f20766974616c696b2c206e6f000000000000000000000000000000000000736f7272792068756d616e73206f6e6c79000000000000000000000000000000a165627a7a72305820920697f17c12fe2eddcbbd4f500f3c80dd53328ac281cf03d5c05984437cd1450029

Swarm Source

bzzr://920697f17c12fe2eddcbbd4f500f3c80dd53328ac281cf03d5c05984437cd145

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.