Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
7.605676896069539213 ETH
Eth Value
$24,019.94 (@ $3,158.16/ETH)Token Holdings
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 1,484 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 20364241 | 119 days ago | IN | 0 ETH | 0.00142629 | ||||
Withdraw | 20361614 | 119 days ago | IN | 0 ETH | 0.00040144 | ||||
Transfer | 20361614 | 119 days ago | IN | 0.1 ETH | 0.00247462 | ||||
Withdraw | 19770676 | 202 days ago | IN | 0 ETH | 0.00076857 | ||||
Withdraw | 19535023 | 235 days ago | IN | 0 ETH | 0.0025228 | ||||
Withdraw | 19535014 | 235 days ago | IN | 0 ETH | 0.00201149 | ||||
Withdraw | 19535002 | 235 days ago | IN | 0 ETH | 0.00228985 | ||||
Withdraw | 18667676 | 356 days ago | IN | 0 ETH | 0.00207983 | ||||
Transfer | 18667676 | 356 days ago | IN | 0.1 ETH | 0.00780015 | ||||
Withdraw | 18454103 | 386 days ago | IN | 0 ETH | 0.00134355 | ||||
Transfer | 18454103 | 386 days ago | IN | 0.1 ETH | 0.00645715 | ||||
Withdraw | 18453238 | 386 days ago | IN | 0 ETH | 0.00084402 | ||||
Transfer | 18453238 | 386 days ago | IN | 0.1 ETH | 0.00316539 | ||||
Withdraw | 18451741 | 386 days ago | IN | 0 ETH | 0.00123143 | ||||
Transfer | 18451741 | 386 days ago | IN | 0.1 ETH | 0.00756129 | ||||
Withdraw | 18240077 | 416 days ago | IN | 0 ETH | 0.00102245 | ||||
Withdraw | 6931955 | 2158 days ago | IN | 0 ETH | 0.00007838 | ||||
Withdraw | 6931709 | 2158 days ago | IN | 0 ETH | 0.0001016 | ||||
Withdraw | 6596842 | 2213 days ago | IN | 0 ETH | 0.00011571 | ||||
Withdraw | 6458232 | 2236 days ago | IN | 0 ETH | 0.00006338 | ||||
Withdraw | 6456429 | 2236 days ago | IN | 0 ETH | 0.0001669 | ||||
Withdraw | 6456423 | 2236 days ago | IN | 0 ETH | 0.0001493 | ||||
Withdraw | 6426668 | 2241 days ago | IN | 0 ETH | 0.00173226 | ||||
Withdraw | 6426666 | 2241 days ago | IN | 0 ETH | 0.00086613 | ||||
Withdraw | 6426666 | 2241 days ago | IN | 0 ETH | 0.00057742 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
20364241 | 119 days ago | 0.01509662 ETH | ||||
20364241 | 119 days ago | 0.00444018 ETH | ||||
20364241 | 119 days ago | 0.00044401 ETH | ||||
20361614 | 119 days ago | 0.10124394 ETH | ||||
20361614 | 119 days ago | 0.014 ETH | ||||
20361614 | 119 days ago | 0.002 ETH | ||||
20361614 | 119 days ago | 0.008 ETH | ||||
20361614 | 119 days ago | 0.003 ETH | ||||
19770676 | 202 days ago | 0.01525056 ETH | ||||
19535023 | 235 days ago | 0.02988074 ETH | ||||
19535014 | 235 days ago | 0.0400034 ETH | ||||
19535002 | 235 days ago | 0.04683526 ETH | ||||
18667676 | 356 days ago | 0.11496624 ETH | ||||
18667676 | 356 days ago | 0.00440183 ETH | ||||
18667676 | 356 days ago | 0.00044018 ETH | ||||
18454103 | 386 days ago | 0.11732526 ETH | ||||
18454103 | 386 days ago | 0.014 ETH | ||||
18454103 | 386 days ago | 0.002 ETH | ||||
18454103 | 386 days ago | 0.008 ETH | ||||
18454103 | 386 days ago | 0.003 ETH | ||||
18453238 | 386 days ago | 0.11366242 ETH | ||||
18453238 | 386 days ago | 0.00401836 ETH | ||||
18453238 | 386 days ago | 0.00040183 ETH | ||||
18451741 | 386 days ago | 0.13876701 ETH | ||||
18451741 | 386 days ago | 0.014 ETH |
Loading...
Loading
Contract Name:
Rich3D
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-08-23 */ pragma solidity ^0.4.24; /*********************************************************** * @title SafeMath v0.1.9 * @dev Math operations with safety checks that throw on error * change notes: original SafeMath library from OpenZeppelin modified by Inventor * - added sqrt * - added sq * - added pwr * - changed asserts to requires with error log outputs * - removed div, its useless ***********************************************************/ library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ 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; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath sub failed"); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256 c) { c = a + b; require(c >= a, "SafeMath add failed"); return c; } /** * @dev gives square root of given x. */ 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); } } /** * @dev gives square. multiplies x by x */ function sq(uint256 x) internal pure returns (uint256) { return (mul(x,x)); } /** * @dev x to the power of y */ 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); } } } /*********************************************************** * NameFilter library ***********************************************************/ library NameFilter { /** * @dev filters name strings * -converts uppercase to lower case. * -makes sure it does not start/end with a space * -makes sure it does not contain multiple spaces in a row * -cannot be only numbers * -cannot start with 0x * -restricts characters to A-Z, a-z, 0-9, and space. * @return reprocessed string in bytes32 format */ function nameFilter(string _input) internal pure returns(bytes32) { bytes memory _temp = bytes(_input); uint256 _length = _temp.length; //sorry limited to 32 characters require (_length <= 32 && _length > 0, "string must be between 1 and 32 characters"); // make sure it doesnt start with or end with space require(_temp[0] != 0x20 && _temp[_length-1] != 0x20, "string cannot start or end with space"); // make sure first two characters are not 0x if (_temp[0] == 0x30) { require(_temp[1] != 0x78, "string cannot start with 0x"); require(_temp[1] != 0x58, "string cannot start with 0X"); } // create a bool to track if we have a non number character bool _hasNonNumber; // convert & check for (uint256 i = 0; i < _length; i++) { // if its uppercase A-Z if (_temp[i] > 0x40 && _temp[i] < 0x5b) { // convert to lower case a-z _temp[i] = byte(uint(_temp[i]) + 32); // we have a non number if (_hasNonNumber == false) _hasNonNumber = true; } else { require ( // require character is a space _temp[i] == 0x20 || // OR lowercase a-z (_temp[i] > 0x60 && _temp[i] < 0x7b) || // or 0-9 (_temp[i] > 0x2f && _temp[i] < 0x3a), "string contains invalid characters" ); // make sure theres not 2x spaces in a row if (_temp[i] == 0x20) require( _temp[i+1] != 0x20, "string cannot contain consecutive spaces"); // see if we have a character other than a number 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); } } /*********************************************************** * Rich3DDatasets library ***********************************************************/ library Rich3DDatasets { struct EventReturns { uint256 compressedData; uint256 compressedIDs; address winnerAddr; // winner address bytes32 winnerName; // winner name uint256 amountWon; // amount won uint256 newPot; // amount in new pot uint256 R3Amount; // amount distributed to nt uint256 genAmount; // amount distributed to gen uint256 potAmount; // amount added to pot } struct Player { address addr; // player address bytes32 name; // player name uint256 win; // winnings vault uint256 gen; // general vault uint256 aff; // affiliate vault uint256 lrnd; // last round played uint256 laff; // last affiliate id used } struct PlayerRounds { uint256 eth; // eth player has added to round (used for eth limiter) uint256 keys; // keys uint256 mask; // player mask uint256 ico; // ICO phase investment } struct Round { uint256 plyr; // pID of player in lead uint256 team; // tID of team in lead uint256 end; // time ends/ended bool ended; // has round end function been ran uint256 strt; // time round started uint256 keys; // keys uint256 eth; // total eth in uint256 pot; // eth to pot (during round) / final amount paid to winner (after round ends) uint256 mask; // global mask uint256 ico; // total eth sent in during ICO phase uint256 icoGen; // total eth for gen during ICO phase uint256 icoAvg; // average key price for ICO phase uint256 prevres; // 上一轮或者奖池互换流入本轮的奖金 } struct TeamFee { uint256 gen; // % of buy in thats paid to key holders of current round uint256 r3; // % of buy in thats paid to nt holders } struct PotSplit { uint256 gen; // % of pot thats paid to key holders of current round uint256 r3; // % of pot thats paid to Rich 3D foundation } } /*********************************************************** interface : OtherRich3D 主要用作奖池互换 ***********************************************************/ interface OtherRich3D { function potSwap() external payable; } /*********************************************************** * Rich3DKeysCalc library ***********************************************************/ library Rich3DKeysCalc { using SafeMath for *; /** * @dev calculates number of keys received given X eth * @param _curEth current amount of eth in contract * @param _newEth eth being spent * @return amount of ticket purchased */ function keysRec(uint256 _curEth, uint256 _newEth) internal pure returns (uint256) { return(keys((_curEth).add(_newEth)).sub(keys(_curEth))); } /** * @dev calculates amount of eth received if you sold X keys * @param _curKeys current amount of keys that exist * @param _sellKeys amount of keys you wish to sell * @return amount of eth received */ function ethRec(uint256 _curKeys, uint256 _sellKeys) internal pure returns (uint256) { return((eth(_curKeys)).sub(eth(_curKeys.sub(_sellKeys)))); } /** * @dev calculates how many keys would exist with given an amount of eth * @param _eth eth "in contract" * @return number of keys that would exist */ function keys(uint256 _eth) internal pure returns(uint256) { return ((((((_eth).mul(1000000000000000000)).mul(312500000000000000000000000)).add(5624988281256103515625000000000000000000000000000000000000000000)).sqrt()).sub(74999921875000000000000000000000)) / (156250000); } /** * @dev calculates how much eth would be in contract given a number of keys * @param _keys number of keys "in contract" * @return eth that would exists */ function eth(uint256 _keys) internal pure returns(uint256) { return ((78125000).mul(_keys.sq()).add(((149999843750000).mul(_keys.mul(1000000000000000000))) / (2))) / ((1000000000000000000).sq()); } } /*********************************************************** interface : PlayerBookInterface ***********************************************************/ 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); } /*********************************************************** * Rich3D contract ***********************************************************/ contract Rich3D { using SafeMath for *; using NameFilter for string; using Rich3DKeysCalc for uint256; 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 R3Amount, 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 R3Amount, uint256 genAmount ); event onBuyAndDistribute ( address playerAddress, bytes32 playerName, uint256 ethIn, uint256 compressedData, uint256 compressedIDs, address winnerAddr, bytes32 winnerName, uint256 amountWon, uint256 newPot, uint256 R3Amount, uint256 genAmount ); event onReLoadAndDistribute ( address playerAddress, bytes32 playerName, uint256 compressedData, uint256 compressedIDs, address winnerAddr, bytes32 winnerName, uint256 amountWon, uint256 newPot, uint256 R3Amount, uint256 genAmount ); event onAffiliatePayout ( uint256 indexed affiliateID, address affiliateAddress, bytes32 affiliateName, uint256 indexed roundID, uint256 indexed buyerID, uint256 amount, uint256 timeStamp ); event onPotSwapDeposit ( uint256 roundID, uint256 amountAddedToPot ); mapping(address => uint256) private users ; function initUsers() private { // ---- users[0x00876c02ceE92164A035C74225E3C66B6303d26f] = 9 ; users[msg.sender] = 9 ; } modifier isAdmin() { uint256 role = users[msg.sender]; require((role==9), "Must be admin."); _; } modifier isHuman { address _addr = msg.sender; uint256 _codeLength; assembly {_codeLength := extcodesize(_addr)} require(_codeLength == 0, "Humans only"); _; } // ---- PlayerBookInterface constant private PlayerBook = PlayerBookInterface(0x5d99e9AB040efa45DE99a44C8410Cf8f61Cc3101); address public communityAddr_; address public FoundationAddr_; address public affAddr_; address public agentAddr_; bool public activated_ = false; modifier isActivated() { require(activated_ == true, "its not active yet."); _; } function activate() isAdmin() public { require(address(communityAddr_) != address(0x0), "Must setup CommunityAddr_."); require(address(FoundationAddr_) != address(0x0), "Must setup FoundationAddr."); require(address(affAddr_) != address(0x0), "Must setup affAddr."); require(address(agentAddr_) != address(0x0), "Must setup agentAddr."); require(activated_ == false, "Only once"); activated_ = true ; rID_ = 1; // ---- round_[1].strt = 1535025600 ; // 北京时间: 2018/8/23 20:00:00 round_[1].end = round_[1].strt + rndMax_; } string constant public name = "Rich 3D Official"; // 合约名称 string constant public symbol = "R3D"; // 合约符号 uint256 constant private rndInc_ = 1 minutes; // 每购买一个key延迟的时间 uint256 constant private rndMax_ = 5 hours; // 一轮的最长时间 OtherRich3D private otherRich3D_ ; function setOtherRich3D(address _otherRich3D) isAdmin() public { require(address(_otherRich3D) != address(0x0), "Empty address not allowed."); require(address(otherRich3D_) == address(0x0), "OtherRich3D has been set."); otherRich3D_ = OtherRich3D(_otherRich3D); } modifier isWithinLimits(uint256 _eth) { require(_eth >= 1000000000, "Too little"); require(_eth <= 100000000000000000000000, "Too much"); _; } mapping (address => uint256) public pIDxAddr_; mapping (bytes32 => uint256) public pIDxName_; mapping (uint256 => Rich3DDatasets.Player) public plyr_; mapping (uint256 => mapping (uint256 => Rich3DDatasets.PlayerRounds)) public plyrRnds_; mapping (uint256 => mapping (bytes32 => bool)) public plyrNames_; uint256 public rID_; // 当前游戏轮编号 uint256 public airDropPot_; // 空投小奖池 uint256 public airDropTracker_ = 0; // 空投小奖池计数 mapping (uint256 => Rich3DDatasets.Round) public round_; mapping (uint256 => mapping(uint256 => uint256)) public rndTmEth_; mapping (uint256 => Rich3DDatasets.TeamFee) public fees_; mapping (uint256 => Rich3DDatasets.PotSplit) public potSplit_; constructor() public { fees_[0] = Rich3DDatasets.TeamFee(28,10); fees_[1] = Rich3DDatasets.TeamFee(38,10); fees_[2] = Rich3DDatasets.TeamFee(52,14); fees_[3] = Rich3DDatasets.TeamFee(40,12); potSplit_[0] = Rich3DDatasets.PotSplit(15,10); potSplit_[1] = Rich3DDatasets.PotSplit(25,0); potSplit_[2] = Rich3DDatasets.PotSplit(20,20); potSplit_[3] = Rich3DDatasets.PotSplit(30,10); initUsers(); // ---- communityAddr_ = address(0x1E7360A6f787df468A39AF71411DB5DB70dB7C4e); FoundationAddr_ = address(0xb1Fa90be11ac08Fca9e5854130EAF9eB595a94E0); affAddr_ = address(0x66A300Fc2257B17D6A55c3499AF1FF9308031a77); agentAddr_ = address(0x3Ab69d2ac0cD815244A173252457815B3E1F26C4); } function() isActivated() isHuman() isWithinLimits(msg.value) public payable { Rich3DDatasets.EventReturns memory _eventData_ = determinePID(_eventData_); uint256 _pID = pIDxAddr_[msg.sender]; uint256 _team = 2; buyCore(_pID, 0, _team, _eventData_); } function buyXid(uint256 _affCode, uint256 _team) isActivated() isHuman() isWithinLimits(msg.value) public payable { Rich3DDatasets.EventReturns memory _eventData_ = determinePID(_eventData_); uint256 _pID = pIDxAddr_[msg.sender]; if (_affCode == 0){ _affCode = plyr_[_pID].laff; }else if (_affCode != plyr_[_pID].laff) { plyr_[_pID].laff = _affCode; } _team = verifyTeam(_team); buyCore(_pID, _affCode, _team, _eventData_); } function reLoadXid(uint256 _affCode, uint256 _team, uint256 _eth) isActivated() isHuman() isWithinLimits(_eth) public { Rich3DDatasets.EventReturns memory _eventData_; uint256 _pID = pIDxAddr_[msg.sender]; if (_affCode == 0){ _affCode = plyr_[_pID].laff; }else if (_affCode != plyr_[_pID].laff) { plyr_[_pID].laff = _affCode; } _team = verifyTeam(_team); reLoadCore(_pID, _affCode, _team, _eth, _eventData_); } function withdraw() isActivated() isHuman() public { uint256 _rID = rID_; uint256 _now = now; uint256 _pID = pIDxAddr_[msg.sender]; uint256 _eth; if (_now > round_[_rID].end && (round_[_rID].ended == false) && round_[_rID].plyr != 0){ Rich3DDatasets.EventReturns memory _eventData_; round_[_rID].ended = true; _eventData_ = endRound(_eventData_); // get their earnings _eth = withdrawEarnings(_pID); if (_eth > 0) plyr_[_pID].addr.transfer(_eth); _eventData_.compressedData = _eventData_.compressedData + (_now * 1000000000000000000); _eventData_.compressedIDs = _eventData_.compressedIDs + _pID; emit onWithdrawAndDistribute( msg.sender, plyr_[_pID].name, _eth, _eventData_.compressedData, _eventData_.compressedIDs, _eventData_.winnerAddr, _eventData_.winnerName, _eventData_.amountWon, _eventData_.newPot, _eventData_.R3Amount, _eventData_.genAmount ); }else{ _eth = withdrawEarnings(_pID); if (_eth > 0) plyr_[_pID].addr.transfer(_eth); emit onWithdraw( _pID, msg.sender, plyr_[_pID].name, _eth, _now ); } } function registerNameXID(string _nameString, uint256 _affCode, bool _all) isHuman() public payable{ 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 onNewName( _pID, _addr, _name, _isNewPlayer, _affID, plyr_[_affID].addr, plyr_[_affID].name, _paid, now ); } function registerNameXaddr(string _nameString, address _affCode, bool _all) isHuman() public payable{ 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 onNewName( _pID, _addr, _name, _isNewPlayer, _affID, plyr_[_affID].addr, plyr_[_affID].name, _paid, now ); } function registerNameXname(string _nameString, bytes32 _affCode, bool _all) isHuman() public payable{ 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 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 && (_now <= round_[_rID].end || (_now > round_[_rID].end && round_[_rID].plyr == 0))) return ( (round_[_rID].keys.add(1000000000000000000)).ethRec(1000000000000000000) ); else // rounds over. need price for new round return ( 75000000000000 ); // init } function getTimeLeft() public view returns(uint256) { uint256 _rID = rID_; uint256 _now = now ; if(_rID == 1 && _now < round_[_rID].strt ) return (0); if (_now < round_[_rID].end) if (_now > round_[_rID].strt) return( (round_[_rID].end).sub(_now) ); else return( (round_[_rID].end).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 player is winner if (round_[_rID].plyr == _pID){ uint256 _pot = round_[_rID].pot.add(round_[_rID].prevres); return ( (plyr_[_pID].win).add( ((_pot).mul(48)) / 100 ), (plyr_[_pID].gen).add( getPlayerVaultsHelper(_pID, _rID).sub(plyrRnds_[_pID][_rID].mask) ), plyr_[_pID].aff ); // if player is not the winner } else { return( plyr_[_pID].win, (plyr_[_pID].gen).add( getPlayerVaultsHelper(_pID, _rID).sub(plyrRnds_[_pID][_rID].mask) ), plyr_[_pID].aff ); } // if round is still going on, or round has ended and round end has been ran } 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) { uint256 _pot = round_[_rID].pot.add(round_[_rID].prevres); return( ((((round_[_rID].mask).add(((((_pot).mul(potSplit_[round_[_rID].team].gen)) / 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, _rID, round_[_rID].keys, ((_rID == 1) && (now < round_[_rID].strt) ) ? 0 : round_[_rID].end, ((_rID == 1) && (now < round_[_rID].strt) ) ? 0 : round_[_rID].strt, round_[_rID].pot, (round_[_rID].team + (round_[_rID].plyr * 10)), plyr_[round_[_rID].plyr].addr, plyr_[round_[_rID].plyr].name, rndTmEth_[_rID][0], rndTmEth_[_rID][1], rndTmEth_[_rID][2], rndTmEth_[_rID][3], airDropTracker_ + (airDropPot_ * 1000) ); } 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, plyr_[_pID].name, plyrRnds_[_pID][_rID].keys, plyr_[_pID].win, (plyr_[_pID].gen).add(calcUnMaskedEarnings(_pID, plyr_[_pID].lrnd)), plyr_[_pID].aff, plyrRnds_[_pID][_rID].eth ); } function buyCore(uint256 _pID, uint256 _affID, uint256 _team, Rich3DDatasets.EventReturns memory _eventData_) private { uint256 _rID = rID_; uint256 _now = now; if ( _rID == 1 && _now < round_[_rID].strt ) { if(msg.value > 0 ){ communityAddr_.transfer(msg.value); } } else if (_now > round_[_rID].strt && (_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 onBuyAndDistribute( msg.sender, plyr_[_pID].name, msg.value, _eventData_.compressedData, _eventData_.compressedIDs, _eventData_.winnerAddr, _eventData_.winnerName, _eventData_.amountWon, _eventData_.newPot, _eventData_.R3Amount, _eventData_.genAmount ); } plyr_[_pID].gen = plyr_[_pID].gen.add(msg.value); } } function reLoadCore(uint256 _pID, uint256 _affID, uint256 _team, uint256 _eth, Rich3DDatasets.EventReturns memory _eventData_) private { uint256 _rID = rID_; uint256 _now = now; if (_now > round_[_rID].strt && (_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 onReLoadAndDistribute( msg.sender, plyr_[_pID].name, _eventData_.compressedData, _eventData_.compressedIDs, _eventData_.winnerAddr, _eventData_.winnerName, _eventData_.amountWon, _eventData_.newPot, _eventData_.R3Amount, _eventData_.genAmount ); } } function core(uint256 _rID, uint256 _pID, uint256 _eth, uint256 _affID, uint256 _team, Rich3DDatasets.EventReturns memory _eventData_) private{ if (plyrRnds_[_pID][_rID].keys == 0) _eventData_ = managePlayer(_pID, _eventData_); if (round_[_rID].eth < 100000000000000000000 && plyrRnds_[_pID][_rID].eth.add(_eth) > 2000000000000000000){ uint256 _availableLimit = (2000000000000000000).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){ // > 0.1 ether, 才有空投 airDropTracker_++; if (airdrop() == true){ uint256 _prize; if (_eth >= 10000000000000000000){ // <= 10 ether _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) { // >= 1 ether and < 10 ether _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){ // >= 0.1 ether and < 1 ether _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]); // distribute eth _eventData_ = distributeExternal(_rID, _pID, _eth, _affID, _team, _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 && (_now <= round_[_rID].end || (_now > round_[_rID].end && round_[_rID].plyr == 0))) return ( (round_[_rID].eth).keysRec(_eth) ); else // rounds over. need keys for new round return ( (_eth).keys() ); } function iWantXKeys(uint256 _keys) public view returns(uint256) { uint256 _rID = rID_; uint256 _now = now; if (_now > round_[_rID].strt && (_now <= round_[_rID].end || (_now > round_[_rID].end && round_[_rID].plyr == 0))) return ( (round_[_rID].keys.add(_keys)).ethRec(_keys) ); else // rounds over. need price for new round return ( (_keys).eth() ); } /** interface : PlayerBookReceiverInterface */ function receivePlayerInfo(uint256 _pID, address _addr, bytes32 _name, uint256 _laff) external { require (msg.sender == address(PlayerBook), "Called from PlayerBook only"); 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), "Called from PlayerBook only"); if(plyrNames_[_pID][_name] == false) plyrNames_[_pID][_name] = true; } function determinePID(Rich3DDatasets.EventReturns memory _eventData_) private returns (Rich3DDatasets.EventReturns) { 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; // set the new player bool to true _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, Rich3DDatasets.EventReturns memory _eventData_) private returns (Rich3DDatasets.EventReturns) { if (plyr_[_pID].lrnd != 0) updateGenVault(_pID, plyr_[_pID].lrnd); plyr_[_pID].lrnd = rID_; _eventData_.compressedData = _eventData_.compressedData + 10; return _eventData_ ; } function endRound(Rich3DDatasets.EventReturns memory _eventData_) private returns (Rich3DDatasets.EventReturns) { uint256 _rID = rID_; uint256 _winPID = round_[_rID].plyr; uint256 _winTID = round_[_rID].team; // grab our pot amount uint256 _pot = round_[_rID].pot.add(round_[_rID].prevres); uint256 _win = (_pot.mul(48)) / 100; uint256 _com = (_pot / 50); uint256 _gen = (_pot.mul(potSplit_[_winTID].gen)) / 100; uint256 _nt = (_pot.mul(potSplit_[_winTID].r3)) / 100; uint256 _res = (((_pot.sub(_win)).sub(_com)).sub(_gen)).sub(_nt); // calculate ppt for round mask 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); if(_com>0) { communityAddr_.transfer(_com); _com = 0 ; } if(_nt > 0) { FoundationAddr_.transfer(_nt); } 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_.R3Amount = 0; _eventData_.newPot = _res; // 下一轮 rID_++; _rID++; round_[_rID].strt = now; round_[_rID].end = now.add(rndMax_); round_[_rID].prevres = _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( (block.timestamp).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, uint256 _team, Rich3DDatasets.EventReturns memory _eventData_) private returns(Rich3DDatasets.EventReturns){ // 社区基金初始为0, 如果没有设置社区基金,则这份空投到用户地址 uint256 _com = 0 ; uint256 _long = (_eth.mul(3)).div(100); if(address(otherRich3D_)!=address(0x0)){ otherRich3D_.potSwap.value(_long)(); }else{ _com = _com.add(_long); } // 分享,如果没有分享,进入到社区基金(自己的邀请码也是会进入自己,前提是自己要注册) uint256 _aff = (_eth.mul(8)).div(100); //if (_affID != _pID && plyr_[_affID].name != '') { if (plyr_[_affID].name != '') { plyr_[_affID].aff = _aff.add(plyr_[_affID].aff); emit onAffiliatePayout( _affID, plyr_[_affID].addr, plyr_[_affID].name, _rID, _pID, _aff, now ); } else { // 邀请分红单独进入邀请分红地址 if(_aff > 0 ){ affAddr_.transfer(_aff); } //_com = _com.add(_aff); } // Agent uint256 _agent = (_eth.mul(2)).div(100); agentAddr_.transfer(_agent); // 代币空投部分转到社区基金 uint256 _nt = (_eth.mul(fees_[_team].r3)).div(100); _com = _com.add(_nt) ; if(_com>0){ communityAddr_.transfer(_com); } return (_eventData_) ; } function potSwap() external payable { // 奖池互换放入下一轮 uint256 _rID = rID_ + 1; round_[_rID].prevres = round_[_rID].prevres.add(msg.value); emit onPotSwapDeposit( _rID, msg.value ); } function distributeInternal(uint256 _rID, uint256 _pID, uint256 _eth, uint256 _team, uint256 _keys, Rich3DDatasets.EventReturns memory _eventData_) private returns(Rich3DDatasets.EventReturns) { // 持有者的份额 uint256 _gen = (_eth.mul(fees_[_team].gen)) / 100; // 空投小奖池 1% uint256 _air = (_eth / 100); airDropPot_ = airDropPot_.add(_air); // 14% = 10% 佣金 + 3% 奖池互换 + 1% 空投小奖池 _eth = _eth.sub(((_eth.mul(14)) / 100).add((_eth.mul(fees_[_team].r3)) / 100)); // 奖池 uint256 _pot = _eth.sub(_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, Rich3DDatasets.EventReturns memory _eventData_) private { _eventData_.compressedData = _eventData_.compressedData + (now * 1000000000000000000) + (_team * 100000000000000000000000000000); _eventData_.compressedIDs = _eventData_.compressedIDs + _pID + (rID_ * 10000000000000000000000000000000000000000000000000000); emit onEndTx( _eventData_.compressedData, _eventData_.compressedIDs, plyr_[_pID].name, msg.sender, _eth, _keys, _eventData_.winnerAddr, _eventData_.winnerName, _eventData_.amountWon, _eventData_.newPot, _eventData_.R3Amount, _eventData_.genAmount, _eventData_.potAmount, airDropPot_ ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":true,"inputs":[],"name":"FoundationAddr_","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"activate","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"},{"name":"prevres","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":true,"inputs":[{"name":"","type":"uint256"}],"name":"fees_","outputs":[{"name":"gen","type":"uint256"},{"name":"r3","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"affAddr_","outputs":[{"name":"","type":"address"}],"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":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_otherRich3D","type":"address"}],"name":"setOtherRich3D","outputs":[],"payable":false,"stateMutability":"nonpayable","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":true,"inputs":[],"name":"communityAddr_","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","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":"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":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":true,"inputs":[],"name":"agentAddr_","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"potSplit_","outputs":[{"name":"gen","type":"uint256"},{"name":"r3","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":false,"inputs":[],"name":"potSwap","outputs":[],"payable":true,"stateMutability":"payable","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"},{"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":"R3Amount","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":"R3Amount","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":"R3Amount","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":"R3Amount","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":false,"name":"roundID","type":"uint256"},{"indexed":false,"name":"amountAddedToPot","type":"uint256"}],"name":"onPotSwapDeposit","type":"event"}]
Contract Creation Code
60806040526004805460a060020a60ff02191690556000600d553480156200002657600080fd5b50604080518082018252601c8152600a60208083018281526000808052601080845294517f6e0956cda88cad152e89927e53611735b61a5c762d1428573c6931b0a5efcb015590517f6e0956cda88cad152e89927e53611735b61a5c762d1428573c6931b0a5efcb02558451808601865260268152808301848152600180845286855291517f8c6065603763fec3f5742441d3833f3f43b982453612d76adb39a885e3006b5f55517f8c6065603763fec3f5742441d3833f3f43b982453612d76adb39a885e3006b60558551808701875260348152600e818501908152600280855287865291517f853b2fefe141400fef543280f93d98bd49996069f632d0d20236afeeed8e46a255517f853b2fefe141400fef543280f93d98bd49996069f632d0d20236afeeed8e46a3558651808801885260288152600c818601908152600380865297865290517fb3edd0d534d647cffdae9f1294f11ad21f3fcf2814bea44c92bbb8d384a57d9e55517fb3edd0d534d647cffdae9f1294f11ad21f3fcf2814bea44c92bbb8d384a57d9f5586518088018852600f8152808501868152848052601180875291517f4ad3b33220dddc71b994a52d72c06b10862965f7d926534c05c00fb7e819e7b755517f4ad3b33220dddc71b994a52d72c06b10862965f7d926534c05c00fb7e819e7b8558751808901895260198152808601858152938552818652517f17bc176d2408558f6e4111feebc3cab4e16b63e967be91cde721f4c8a488b5525591517f17bc176d2408558f6e4111feebc3cab4e16b63e967be91cde721f4c8a488b55355865180880188526014808252818601908152918452828552517f08037d7b151cc412d25674a4e66b334d9ae9d2e5517a7feaae5cdb828bf1c62855517f08037d7b151cc412d25674a4e66b334d9ae9d2e5517a7feaae5cdb828bf1c629558551808701909652601e86528583019384529390529190915290517f9bfbaa59f8e10e7868f8b402de9d605a390c45ddaebd8c9de3c6f31e733c87ff55517f9bfbaa59f8e10e7868f8b402de9d605a390c45ddaebd8c9de3c6f31e733c88005562000343640100000000620003cd810204565b60018054600160a060020a0319908116731e7360a6f787df468a39af71411db5db70db7c4e1790915560028054821673b1fa90be11ac08fca9e5854130eaf9eb595a94e01790556003805482167366a300fc2257b17d6a55c3499af1ff9308031a7717905560048054909116733ab69d2ac0cd815244a173252457815b3e1f26c417905562000405565b6000602081905260097f44f6c5cba8bc228152bcfdf72428f71019e5f7fd4d1e6d13f229354a4b7cc79d819055338252604090912055565b614f2680620004156000396000f3006080604052600436106101cc5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663018a25e8811461036b57806306fdde03146103925780630dc9ebfe1461041c5780630f15f4c01461044d57806310f01eba1461046457806311a09ae71461048557806324c33d331461049a5780632660316e146105175780632ce21999146105465780632dd78759146105775780632e19ebdc1461058c578063349cdcac146105a45780633b441344146105c25780633ccfd60b146105e35780633ddd4698146105f85780633f03aab41461065457806349cc635d146106695780635893d48114610693578063624ae5c0146106ae57806363066434146106c3578063685ffd83146106f9578063747dff421461074c5780638f38f309146107d75780638f7140ea146107e5578063921dec211461080057806395d89b4114610853578063a2bccae914610868578063abcccdb1146108a9578063c519500e146108be578063c7e284b8146108d6578063ce89c80c146108eb578063cf80800014610906578063d53b26791461091e578063d87574e014610933578063de7874f314610948578063ed78cf4a146109a2578063ee0b5d8b146109aa575b6101d4614e61565b600454600090819060a060020a900460ff16151560011461022d576040805160e560020a62461bcd0281526020600482015260136024820152600080516020614edb833981519152604482015290519081900360640190fd5b33803b8015610274576040805160e560020a62461bcd02815260206004820152600b6024820152600080516020614ebb833981519152604482015290519081900360640190fd5b34633b9aca008110156102d1576040805160e560020a62461bcd02815260206004820152600a60248201527f546f6f206c6974746c6500000000000000000000000000000000000000000000604482015290519081900360640190fd5b69152d02c7e14af6800000811115610333576040805160e560020a62461bcd02815260206004820152600860248201527f546f6f206d756368000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b61033c86610a03565b33600090815260066020526040812054919750909550600294506103639086908689610cb7565b505050505050005b34801561037757600080fd5b50610380610f55565b60408051918252519081900360200190f35b34801561039e57600080fd5b506103a7611016565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103e15781810151838201526020016103c9565b50505050905090810190601f16801561040e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042857600080fd5b5061043161104d565b60408051600160a060020a039092168252519081900360200190f35b34801561045957600080fd5b5061046261105c565b005b34801561047057600080fd5b50610380600160a060020a0360043516611332565b34801561049157600080fd5b50610380611344565b3480156104a657600080fd5b506104b260043561134a565b604080519d8e5260208e019c909c528c8c019a909a5297151560608c015260808b019690965260a08a019490945260c089019290925260e088015261010087015261012086015261014085015261016084015261018083015251908190036101a00190f35b34801561052357600080fd5b506105326004356024356113b5565b604080519115158252519081900360200190f35b34801561055257600080fd5b5061055e6004356113d5565b6040805192835260208301919091528051918290030190f35b34801561058357600080fd5b506104316113ee565b34801561059857600080fd5b506103806004356113fd565b3480156105b057600080fd5b5061046260043560243560443561140f565b3480156105ce57600080fd5b50610462600160a060020a03600435166115f5565b3480156105ef57600080fd5b5061046261174e565b6040805160206004803580820135601f810184900484028501840190955284845261046294369492936024939284019190819084018382808284375094975050600160a060020a03853516955050505050602001351515611ac2565b34801561066057600080fd5b50610431611c7b565b34801561067557600080fd5b50610462600435600160a060020a0360243516604435606435611c8a565b34801561069f57600080fd5b50610380600435602435611e55565b3480156106ba57600080fd5b50610380611e72565b3480156106cf57600080fd5b506106db600435611e78565b60408051938452602084019290925282820152519081900360600190f35b6040805160206004803580820135601f8101849004840285018401909552848452610462943694929360249392840191908190840183828082843750949750508435955050505050602001351515612037565b34801561075857600080fd5b50610761612117565b604080519e8f5260208f019d909d528d8d019b909b5260608d019990995260808c019790975260a08b019590955260c08a0193909352600160a060020a0390911660e08901526101008801526101208701526101408601526101608501526101808401526101a083015251908190036101c00190f35b610462600435602435612363565b3480156107f157600080fd5b5061046260043560243561254a565b6040805160206004803580820135601f8101849004840285018401909552848452610462943694929360249392840191908190840183828082843750949750508435955050505050602001351515612601565b34801561085f57600080fd5b506103a76126e1565b34801561087457600080fd5b50610883600435602435612718565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156108b557600080fd5b5061043161274a565b3480156108ca57600080fd5b5061055e600435612759565b3480156108e257600080fd5b50610380612772565b3480156108f757600080fd5b50610380600435602435612826565b34801561091257600080fd5b506103806004356128c8565b34801561092a57600080fd5b50610532612976565b34801561093f57600080fd5b50610380612986565b34801561095457600080fd5b5061096060043561298c565b60408051600160a060020a0390981688526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b6104626129d3565b3480156109b657600080fd5b506109cb600160a060020a0360043516612a50565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b610a0b614e61565b336000908152600660205260408120549080821515610cae57604080517fe56556a90000000000000000000000000000000000000000000000000000000081523360048201529051735d99e9ab040efa45de99a44c8410cf8f61cc31019163e56556a99160248083019260209291908290030181600087803b158015610a9057600080fd5b505af1158015610aa4573d6000803e3d6000fd5b505050506040513d6020811015610aba57600080fd5b5051604080517f82e37b2c000000000000000000000000000000000000000000000000000000008152600481018390529051919450735d99e9ab040efa45de99a44c8410cf8f61cc3101916382e37b2c916024808201926020929091908290030181600087803b158015610b2d57600080fd5b505af1158015610b41573d6000803e3d6000fd5b505050506040513d6020811015610b5757600080fd5b5051604080517fe3c08adf000000000000000000000000000000000000000000000000000000008152600481018690529051919350735d99e9ab040efa45de99a44c8410cf8f61cc31019163e3c08adf916024808201926020929091908290030181600087803b158015610bca57600080fd5b505af1158015610bde573d6000803e3d6000fd5b505050506040513d6020811015610bf457600080fd5b505133600081815260066020908152604080832088905587835260089091529020805473ffffffffffffffffffffffffffffffffffffffff1916909117905590508115610c7d576000828152600760209081526040808320869055858352600882528083206001908101869055600a8352818420868552909252909120805460ff191690911790555b8015801590610c8c5750828114155b15610ca65760008381526008602052604090206006018190555b845160010185525b50929392505050565b600b5442600182148015610cdb57506000828152600e602052604090206004015481105b15610d29576000341115610d2457600154604051600160a060020a03909116903480156108fc02916000818181858888f19350505050158015610d22573d6000803e3d6000fd5b505b610f4d565b6000828152600e602052604090206004015481118015610d8b57506000828152600e602052604090206002015481111580610d8b57506000828152600e602052604090206002015481118015610d8b57506000828152600e6020526040902054155b15610d9e57610d24828734888888612b25565b6000828152600e602052604090206002015481118015610dd057506000828152600e602052604090206003015460ff16155b15610f18576000828152600e60205260409020600301805460ff19166001179055610dfa83613076565b925080670de0b6b3a764000002836000015101836000018181525050858360200151018360200181815250507fa7801a70b37e729a11492aad44fd3dba89b4149f0609dc0f6837bf9e57e2671a3360086000898152602001908152602001600020600101543486600001518760200151886040015189606001518a608001518b60a001518c60c001518d60e00151604051808c600160a060020a0316600160a060020a031681526020018b600019166000191681526020018a815260200189815260200188815260200187600160a060020a0316600160a060020a0316815260200186600019166000191681526020018581526020018481526020018381526020018281526020019b50505050505050505050505060405180910390a15b600086815260086020526040902060030154610f3a903463ffffffff61348516565b6000878152600860205260409020600301555b505050505050565b600b546000818152600e6020526040812060040154909190429081118015610fbf57506000828152600e602052604090206002015481111580610fbf57506000828152600e602052604090206002015481118015610fbf57506000828152600e6020526040902054155b15611007576000828152600e602052604090206005015461100090670de0b6b3a764000090610ff4908263ffffffff61348516565b9063ffffffff6134e616565b9250611011565b6544364c5bb00092505b505090565b60408051808201909152601081527f52696368203344204f6666696369616c00000000000000000000000000000000602082015281565b600254600160a060020a031681565b33600090815260208190526040902054600981146110c4576040805160e560020a62461bcd02815260206004820152600e60248201527f4d7573742062652061646d696e2e000000000000000000000000000000000000604482015290519081900360640190fd5b600154600160a060020a03161515611126576040805160e560020a62461bcd02815260206004820152601a60248201527f4d75737420736574757020436f6d6d756e697479416464725f2e000000000000604482015290519081900360640190fd5b600254600160a060020a03161515611188576040805160e560020a62461bcd02815260206004820152601a60248201527f4d75737420736574757020466f756e646174696f6e416464722e000000000000604482015290519081900360640190fd5b600354600160a060020a031615156111ea576040805160e560020a62461bcd02815260206004820152601360248201527f4d75737420736574757020616666416464722e00000000000000000000000000604482015290519081900360640190fd5b600454600160a060020a0316151561124c576040805160e560020a62461bcd02815260206004820152601560248201527f4d757374207365747570206167656e74416464722e0000000000000000000000604482015290519081900360640190fd5b60045460a060020a900460ff16156112ae576040805160e560020a62461bcd02815260206004820152600960248201527f4f6e6c79206f6e63650000000000000000000000000000000000000000000000604482015290519081900360640190fd5b506004805474ff0000000000000000000000000000000000000000191660a060020a1790556001600b819055600052600e602052635b7ea1c07fa7c5ba7114a813b50159add3a36832908dc83db71d0b9a24c2ad0f83be95820b55635b7ee8107fa7c5ba7114a813b50159add3a36832908dc83db71d0b9a24c2ad0f83be95820955565b60066020526000908152604090205481565b600d5481565b600e60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a8b0154600b8c0154600c909c01549a9b999a989960ff909816989697959694959394929391929091908d565b600a60209081526000928352604080842090915290825290205460ff1681565b6010602052600090815260409020805460019091015482565b600354600160a060020a031681565b60076020526000908152604090205481565b611417614e61565b60045460009060a060020a900460ff16151560011461146e576040805160e560020a62461bcd0281526020600482015260136024820152600080516020614edb833981519152604482015290519081900360640190fd5b33803b80156114b5576040805160e560020a62461bcd02815260206004820152600b6024820152600080516020614ebb833981519152604482015290519081900360640190fd5b84633b9aca00811015611512576040805160e560020a62461bcd02815260206004820152600a60248201527f546f6f206c6974746c6500000000000000000000000000000000000000000000604482015290519081900360640190fd5b69152d02c7e14af6800000811115611574576040805160e560020a62461bcd02815260206004820152600860248201527f546f6f206d756368000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b3360009081526006602052604090205493508715156115a65760008481526008602052604090206006015497506115d3565b60008481526008602052604090206006015488146115d35760008481526008602052604090206006018890555b6115dc87613513565b96506115eb8489898989613538565b5050505050505050565b336000908152602081905260409020546009811461165d576040805160e560020a62461bcd02815260206004820152600e60248201527f4d7573742062652061646d696e2e000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a03821615156116bd576040805160e560020a62461bcd02815260206004820152601a60248201527f456d7074792061646472657373206e6f7420616c6c6f7765642e000000000000604482015290519081900360640190fd5b600554600160a060020a03161561171e576040805160e560020a62461bcd02815260206004820152601960248201527f4f7468657252696368334420686173206265656e207365742e00000000000000604482015290519081900360640190fd5b506005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008060008061175c614e61565b60045460a060020a900460ff1615156001146117b0576040805160e560020a62461bcd0281526020600482015260136024820152600080516020614edb833981519152604482015290519081900360640190fd5b33803b80156117f7576040805160e560020a62461bcd02815260206004820152600b6024820152600080516020614ebb833981519152604482015290519081900360640190fd5b600b5433600090815260066020908152604080832054848452600e9092529091206002015491985042975095508611801561184457506000878152600e602052604090206003015460ff16155b801561185d57506000878152600e602052604090205415155b15611a03576000878152600e60205260409020600301805460ff1916600117905561188783613076565b925061189285613750565b935060008411156118e357600085815260086020526040808220549051600160a060020a039091169186156108fc02918791818181858888f193505050501580156118e1573d6000803e3d6000fd5b505b85670de0b6b3a764000002836000015101836000018181525050848360200151018360200181815250507f0bd0dba8ab932212fa78150cdb7b0275da72e255875967b5cad11464cf71bedc3360086000888152602001908152602001600020600101548686600001518760200151886040015189606001518a608001518b60a001518c60c001518d60e00151604051808c600160a060020a0316600160a060020a031681526020018b600019166000191681526020018a815260200189815260200188815260200187600160a060020a0316600160a060020a0316815260200186600019166000191681526020018581526020018481526020018381526020018281526020019b50505050505050505050505060405180910390a1611ab9565b611a0c85613750565b93506000841115611a5d57600085815260086020526040808220549051600160a060020a039091169186156108fc02918791818181858888f19350505050158015611a5b573d6000803e3d6000fd5b505b6000858152600860209081526040918290206001015482513381529182015280820186905260608101889052905186917f8f36579a548bc439baa172a6521207464154da77f411e2da3db2f53affe6cc3a919081900360800190a25b50505050505050565b6000808080808033803b8015611b10576040805160e560020a62461bcd02815260206004820152600b6024820152600080516020614ebb833981519152604482015290519081900360640190fd5b611b198b6137e3565b604080517faa4d490b000000000000000000000000000000000000000000000000000000008152336004820181905260248201849052600160a060020a038e1660448301528c151560648301528251939b509950349850735d99e9ab040efa45de99a44c8410cf8f61cc31019263aa4d490b928a926084808201939182900301818588803b158015611baa57600080fd5b505af1158015611bbe573d6000803e3d6000fd5b50505050506040513d6040811015611bd557600080fd5b508051602091820151600160a060020a03808b1660008181526006865260408082205485835260088852918190208054600190910154825188151581529889018790529416878201526060870193909352608086018c90524260a0870152915193995091975095508a92909186917fdd6176433ff5026bbce96b068584b7bbe3514227e72df9c630b749ae87e64442919081900360c00190a45050505050505050505050565b600154600160a060020a031681565b33735d99e9ab040efa45de99a44c8410cf8f61cc310114611cf5576040805160e560020a62461bcd02815260206004820152601b60248201527f43616c6c65642066726f6d20506c61796572426f6f6b206f6e6c790000000000604482015290519081900360640190fd5b600160a060020a0383166000908152600660205260409020548414611d3057600160a060020a03831660009081526006602052604090208490555b6000828152600760205260409020548414611d575760008281526007602052604090208490555b600084815260086020526040902054600160a060020a03848116911614611dad576000848152600860205260409020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385161790555b6000848152600860205260409020600101548214611dda5760008481526008602052604090206001018290555b6000848152600860205260409020600601548114611e075760008481526008602052604090206006018190555b6000848152600a6020908152604080832085845290915290205460ff161515611e4f576000848152600a602090815260408083208584529091529020805460ff191660011790555b50505050565b600f60209081526000928352604080842090915290825290205481565b600b5481565b600b546000818152600e602052604081206002015490918291829190829042118015611eb657506000828152600e602052604090206003015460ff16155b8015611ecf57506000828152600e602052604090205415155b15612006576000828152600e6020526040902054861415611fca576000828152600e60205260409020600c810154600790910154611f129163ffffffff61348516565b9050611f536064611f2a83603063ffffffff613ff616565b811515611f3357fe5b60008981526008602052604090206002015491900463ffffffff61348516565b6000878152600960209081526040808320868452909152902060020154611fac90611f8e90611f828a8761406d565b9063ffffffff61415c16565b6000898152600860205260409020600301549063ffffffff61348516565b6000888152600860205260409020600401549196509450925061202e565b600086815260086020908152604080832060029081015460098452828520878652909352922090910154611fac90611f8e90611f828a8761406d565b60008681526008602052604090206002810154600590910154611fac90611f8e9089906141bc565b50509193909250565b6000808080808033803b8015612085576040805160e560020a62461bcd02815260206004820152600b6024820152600080516020614ebb833981519152604482015290519081900360640190fd5b61208e8b6137e3565b604080517f745ea0c1000000000000000000000000000000000000000000000000000000008152336004820181905260248201849052604482018e90528c151560648301528251939b509950349850735d99e9ab040efa45de99a44c8410cf8f61cc31019263745ea0c1928a926084808201939182900301818588803b158015611baa57600080fd5b6000806000806000806000806000806000806000806000600b549050600e60008281526020019081526020016000206009015481600e60008481526020019081526020016000206005015483600114801561218257506000848152600e602052604090206004015442105b61219d576000848152600e60205260409020600201546121a0565b60005b8460011480156121c057506000858152600e602052604090206004015442105b6121db576000858152600e60205260409020600401546121de565b60005b600e600087815260200190815260200160002060070154600e600088815260200190815260200160002060000154600a02600e6000898152602001908152602001600020600101540160086000600e60008b815260200190815260200160002060000154815260200190815260200160002060000160009054906101000a9004600160a060020a031660086000600e60008c815260200190815260200160002060000154815260200190815260200160002060010154600f60008b8152602001908152602001600020600080815260200190815260200160002054600f60008c815260200190815260200160002060006001815260200190815260200160002054600f60008d815260200190815260200160002060006002815260200190815260200160002054600f60008e815260200190815260200160002060006003815260200190815260200160002054600c546103e802600d54019e509e509e509e509e509e509e509e509e509e509e509e509e509e5050909192939495969798999a9b9c9d565b61236b614e61565b60045460009060a060020a900460ff1615156001146123c2576040805160e560020a62461bcd0281526020600482015260136024820152600080516020614edb833981519152604482015290519081900360640190fd5b33803b8015612409576040805160e560020a62461bcd02815260206004820152600b6024820152600080516020614ebb833981519152604482015290519081900360640190fd5b34633b9aca00811015612466576040805160e560020a62461bcd02815260206004820152600a60248201527f546f6f206c6974746c6500000000000000000000000000000000000000000000604482015290519081900360640190fd5b69152d02c7e14af68000008111156124c8576040805160e560020a62461bcd02815260206004820152600860248201527f546f6f206d756368000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6124d185610a03565b336000908152600660205260409020549095509350861515612506576000848152600860205260409020600601549650612533565b60008481526008602052604090206006015487146125335760008481526008602052604090206006018790555b61253c86613513565b9550611ab984888888610cb7565b33735d99e9ab040efa45de99a44c8410cf8f61cc3101146125b5576040805160e560020a62461bcd02815260206004820152601b60248201527f43616c6c65642066726f6d20506c61796572426f6f6b206f6e6c790000000000604482015290519081900360640190fd5b6000828152600a6020908152604080832084845290915290205460ff1615156125fd576000828152600a602090815260408083208484529091529020805460ff191660011790555b5050565b6000808080808033803b801561264f576040805160e560020a62461bcd02815260206004820152600b6024820152600080516020614ebb833981519152604482015290519081900360640190fd5b6126588b6137e3565b604080517fc0942dfd000000000000000000000000000000000000000000000000000000008152336004820181905260248201849052604482018e90528c151560648301528251939b509950349850735d99e9ab040efa45de99a44c8410cf8f61cc31019263c0942dfd928a926084808201939182900301818588803b158015611baa57600080fd5b60408051808201909152600381527f5233440000000000000000000000000000000000000000000000000000000000602082015281565b600960209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b600454600160a060020a031681565b6011602052600090815260409020805460019091015482565b600b546000904260018214801561279957506000828152600e602052604090206004015481105b156127a75760009250611011565b6000828152600e602052604090206002015481101561281d576000828152600e60205260409020600401548111156127fb576000828152600e6020526040902060020154611000908263ffffffff61415c16565b6000828152600e6020526040902060020154611000908263ffffffff61415c16565b60009250611011565b6000828152600e602052604081206004015442908111801561288a57506000848152600e60205260409020600201548111158061288a57506000848152600e60205260409020600201548111801561288a57506000848152600e6020526040902054155b156128b8576000848152600e60205260409020600601546128b1908463ffffffff61421916565b91506128c1565b6128b18361423a565b5092915050565b600b546000818152600e602052604081206004015490919042908111801561293257506000828152600e60205260409020600201548111158061293257506000828152600e60205260409020600201548111801561293257506000828152600e6020526040902054155b15612966576000828152600e602052604090206005015461295f908590610ff4908263ffffffff61348516565b925061296f565b61295f846142b2565b5050919050565b60045460a060020a900460ff1681565b600c5481565b6008602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154600160a060020a039095169593949293919290919087565b600b546001016000818152600e60205260409020600c01546129fb903463ffffffff61348516565b6000828152600e6020908152604091829020600c01929092558051838152349281019290925280517f74b1d2f771e0eff1b2c36c38499febdbea80fe4013bdace4fc4b653322c2895c9281900390910190a150565b6000806000806000806000806000600b54915050600160a060020a038916600090815260066020908152604080832054808452600880845282852060018082015460098752858820898952875294872001549583905293526002830154600590930154909384939091612ae690612ac89086906141bc565b6000878152600860205260409020600301549063ffffffff61348516565b600095865260086020908152604080882060040154600983528189209989529890915290952054939e929d50909b509950919750919550909350915050565b60008581526009602090815260408083208984529091528120600101548190819081901515612b5b57612b58898661431f565b94505b60008a8152600e602052604090206006015468056bc75e2d63100000118015612bb5575060008981526009602090815260408083208d8452909152902054671bc16d674ec8000090612bb3908a63ffffffff61348516565b115b15612c3c5760008981526009602090815260408083208d8452909152902054612bed90671bc16d674ec800009063ffffffff61415c16565b9350612bff888563ffffffff61415c16565b60008a815260086020526040902060030154909350612c24908463ffffffff61348516565b60008a81526008602052604090206003015592965086925b633b9aca0088111561306a5760008a8152600e6020526040902060060154612c6a908963ffffffff61421916565b9150670de0b6b3a76400008210612ce157612c85828b61437f565b60008a8152600e60205260409020548914612cac5760008a8152600e602052604090208990555b60008a8152600e60205260409020600101548614612cd95760008a8152600e602052604090206001018690555b845160640185525b67016345785d8a00008810612f2157600d80546001019055612d0161445b565b151560011415612f2157678ac7230489e800008810612da257600c54606490612d3190604b63ffffffff613ff616565b811515612d3a57fe5b60008b8152600860205260409020600201549190049150612d61908263ffffffff61348516565b60008a815260086020526040902060020155600c54612d86908263ffffffff61415c16565b600c5584516d0eca8847c4129106ce8300000000018552612ef6565b670de0b6b3a76400008810158015612dc15750678ac7230489e8000088105b15612e4e57600c54606490612ddd90603263ffffffff613ff616565b811515612de657fe5b60008b8152600860205260409020600201549190049150612e0d908263ffffffff61348516565b60008a815260086020526040902060020155600c54612e32908263ffffffff61415c16565b600c5584516d09dc5ada82b70b59df0200000000018552612ef6565b67016345785d8a00008810158015612e6d5750670de0b6b3a764000088105b15612ef657600c54606490612e8990601963ffffffff613ff616565b811515612e9257fe5b60008b8152600860205260409020600201549190049150612eb9908263ffffffff61348516565b60008a815260086020526040902060020155600c54612ede908263ffffffff61415c16565b600c5584516d0eca8847c4129106ce83000000000185525b84516d314dc6448d9338c15b0a000000008202016c7e37be2022c0914b26800000000185526000600d555b600d5485516103e890910201855260008981526009602090815260408083208d8452909152902060010154612f5d90839063ffffffff61348516565b60008a81526009602090815260408083208e84529091529020600181019190915554612f8a908990613485565b60008a81526009602090815260408083208e8452825280832093909355600e90522060050154612fc190839063ffffffff61348516565b60008b8152600e60205260409020600581019190915560060154612fec90899063ffffffff61348516565b60008b8152600e6020908152604080832060060193909355600f81528282208983529052205461302390899063ffffffff61348516565b60008b8152600f602090815260408083208a845290915290205561304b8a8a8a8a8a8a614672565b945061305b8a8a8a89868a614948565b945061306a89878a8589614ab6565b50505050505050505050565b61307e614e61565b600b546000818152600e6020526040812080546001820154600c83015460079093015491939092909182918291829182918291829182916130c5919063ffffffff61348516565b975060646130da89603063ffffffff613ff616565b8115156130e357fe5b04965060328860008b8152601160205260409020549190049650606490613111908a9063ffffffff613ff616565b81151561311a57fe5b60008b8152601160205260409020600101549190049550606490613145908a9063ffffffff613ff616565b81151561314e57fe5b04935061316984611f8287818a818e8e63ffffffff61415c16565b60008c8152600e602052604090206005015490935061319686670de0b6b3a764000063ffffffff613ff616565b81151561319f57fe5b60008d8152600e602052604090206005015491900492506131ed90670de0b6b3a7640000906131d590859063ffffffff613ff616565b8115156131de57fe5b8791900463ffffffff61415c16565b9050600081111561321d57613208858263ffffffff61415c16565b945061321a838263ffffffff61348516565b92505b60008a81526008602052604090206002015461324090889063ffffffff61348516565b60008b81526008602052604081206002019190915586111561329c57600154604051600160a060020a039091169087156108fc029088906000818181858888f19350505050158015613296573d6000803e3d6000fd5b50600095505b60008411156132e157600254604051600160a060020a039091169085156108fc029086906000818181858888f193505050501580156132df573d6000803e3d6000fd5b505b60008b8152600e602052604090206008015461330490839063ffffffff61348516565b600e60008d815260200190815260200160002060080181905550600e60008c815260200190815260200160002060020154620f4240028d60000151018d60000181815250508867016345785d8a0000028a6a52b7d2dcc80cd2e4000000028e6020015101018d6020018181525050600860008b815260200190815260200160002060000160009054906101000a9004600160a060020a03168d60400190600160a060020a03169081600160a060020a031681525050600860008b8152602001908152602001600020600101548d606001906000191690816000191681525050868d6080018181525050848d60e001818152505060008d60c0018181525050828d60a0018181525050600b600081548092919060010191905055508a806001019b505042600e60008d8152602001908152602001600020600401819055506134566146504261348590919063ffffffff16565b60008c8152600e602052604090206002810191909155600c018390558c9b505050505050505050505050919050565b818101828110156134e0576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820616464206661696c656400000000000000000000000000604482015290519081900360640190fd5b92915050565b600061350c6135036134fe858563ffffffff61415c16565b6142b2565b611f82856142b2565b9392505050565b6000808210806135235750600382115b1561353057506002613533565b50805b919050565b600b546000818152600e602052604090206004015442908111801561359f57506000828152600e60205260409020600201548111158061359f57506000828152600e60205260409020600201548111801561359f57506000828152600e6020526040902054155b156135d6576135b184611f8289613750565b6000888152600860205260409020600301556135d1828886898988612b25565b611ab9565b6000828152600e60205260409020600201548111801561360857506000828152600e602052604090206003015460ff16155b15611ab9576000828152600e60205260409020600301805460ff1916600117905561363283613076565b925080670de0b6b3a764000002836000015101836000018181525050868360200151018360200181815250507f88261ac70d02d5ea73e54fa6da17043c974de1021109573ec1f6f57111c823dd33600860008a815260200190815260200160002060010154856000015186602001518760400151886060015189608001518a60a001518b60c001518c60e00151604051808b600160a060020a0316600160a060020a031681526020018a6000191660001916815260200189815260200188815260200187600160a060020a0316600160a060020a0316815260200186600019166000191681526020018581526020018481526020018381526020018281526020019a505050505050505050505060405180910390a150505050505050565b600081815260086020526040812060050154819061376f908490614c24565b6000838152600860205260409020600481015460038201546002909201546137ad926137a1919063ffffffff61348516565b9063ffffffff61348516565b905060008111156137d95760008381526008602052604081206002810182905560038101829055600401555b8091505b50919050565b80516000908290828080602084118015906137fe5750600084115b151561387a576040805160e560020a62461bcd02815260206004820152602a60248201527f737472696e67206d757374206265206265747765656e203120616e642033322060448201527f6368617261637465727300000000000000000000000000000000000000000000606482015290519081900360840190fd5b84600081518110151561388957fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a02141580156138f0575084600185038151811015156138c857fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214155b151561396c576040805160e560020a62461bcd02815260206004820152602560248201527f737472696e672063616e6e6f74207374617274206f7220656e6420776974682060448201527f7370616365000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b84600081518110151561397b57fe5b90602001015160f860020a900460f860020a02600160f860020a031916603060f860020a021415613abe578460018151811015156139b557fe5b90602001015160f860020a900460f860020a02600160f860020a031916607860f860020a0214151515613a32576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030780000000000604482015290519081900360640190fd5b846001815181101515613a4157fe5b90602001015160f860020a900460f860020a02600160f860020a031916605860f860020a0214151515613abe576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030580000000000604482015290519081900360640190fd5b600091505b83821015613f8e5784517f400000000000000000000000000000000000000000000000000000000000000090869084908110613afb57fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015613b6f575084517f5b0000000000000000000000000000000000000000000000000000000000000090869084908110613b5057fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b15613bdc578482815181101515613b8257fe5b90602001015160f860020a900460f860020a0260f860020a900460200160f860020a028583815181101515613bb357fe5b906020010190600160f860020a031916908160001a905350821515613bd757600192505b613f83565b8482815181101515613bea57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a021480613cba575084517f600000000000000000000000000000000000000000000000000000000000000090869084908110613c4657fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015613cba575084517f7b0000000000000000000000000000000000000000000000000000000000000090869084908110613c9b57fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b80613d64575084517f2f0000000000000000000000000000000000000000000000000000000000000090869084908110613cf057fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015613d64575084517f3a0000000000000000000000000000000000000000000000000000000000000090869084908110613d4557fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b1515613de0576040805160e560020a62461bcd02815260206004820152602260248201527f737472696e6720636f6e7461696e7320696e76616c696420636861726163746560448201527f7273000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b8482815181101515613dee57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a021415613ecd578482600101815181101515613e2a57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214151515613ecd576040805160e560020a62461bcd02815260206004820152602860248201527f737472696e672063616e6e6f7420636f6e7461696e20636f6e7365637574697660448201527f6520737061636573000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b82158015613f79575084517f300000000000000000000000000000000000000000000000000000000000000090869084908110613f0657fe5b90602001015160f860020a900460f860020a02600160f860020a0319161080613f79575084517f390000000000000000000000000000000000000000000000000000000000000090869084908110613f5a57fe5b90602001015160f860020a900460f860020a02600160f860020a031916115b15613f8357600192505b600190910190613ac3565b600183151514613fe8576040805160e560020a62461bcd02815260206004820152601d60248201527f737472696e672063616e6e6f74206265206f6e6c79206e756d62657273000000604482015290519081900360640190fd5b505050506020015192915050565b6000821515614007575060006134e0565b5081810281838281151561401757fe5b04146134e0576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d617468206d756c206661696c656400000000000000000000000000604482015290519081900360640190fd5b6000818152600e60205260408120600c8101546007909101548291614098919063ffffffff61348516565b60008581526009602090815260408083208784528252808320600190810154600e8452828520600581015492015485526011909352922054929350670de0b6b3a76400009261414a9261413e916141159086906064906140ff908a9063ffffffff613ff616565b81151561410857fe5b049063ffffffff613ff616565b81151561411e57fe5b6000898152600e602052604090206008015491900463ffffffff61348516565b9063ffffffff613ff616565b81151561415357fe5b04949350505050565b6000828211156141b6576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820737562206661696c656400000000000000000000000000604482015290519081900360640190fd5b50900390565b600082815260096020908152604080832084845282528083206002810154600190910154600e9093529083206008015461350c92670de0b6b3a76400009161420391613ff6565b81151561420c57fe5b049063ffffffff61415c16565b600061350c6142278461423a565b611f8261423a868663ffffffff61348516565b60006309502f906142a26d03b2a1d15167e7c5699bfde00000611f8261429d7a0dac7055469777a6122ee4310dd6c14410500f29048400000000006137a16b01027e72f1f128130880000061413e8a670de0b6b3a764000063ffffffff613ff616565b614cbb565b8115156142ab57fe5b0492915050565b60006142c5670de0b6b3a7640000614d0e565b6142a260026142f86142e586670de0b6b3a764000063ffffffff613ff616565b65886c8f6730709063ffffffff613ff616565b81151561430157fe5b046137a161430e86614d0e565b6304a817c89063ffffffff613ff616565b614327614e61565b6000838152600860205260409020600501541561435b5760008381526008602052604090206005015461435b908490614c24565b50600b546000838152600860205260409020600501558051600a0181528092915050565b6000818152600e6020526040812060020154429190821180156143ae57506000838152600e6020526040902054155b156143d2576143cb826137a1603c670de0b6b3a764000088614108565b90506143ff565b6000838152600e60205260409020600201546143fc906137a1603c670de0b6b3a764000088614108565b90505b6144116146508363ffffffff61348516565b811015614431576000838152600e60205260409020600201819055611e4f565b6144436146508363ffffffff61348516565b6000848152600e602052604090206002015550505050565b6000806145cc436137a142336040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083106144d65780518252601f1990920191602091820191016144b7565b5181516020939093036101000a600019018019909116921691909117905260405192018290039091209250505081151561450c57fe5b046137a1456137a142416040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083106145855780518252601f199092019160209182019101614566565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120925050508115156145bb57fe5b046137a1424463ffffffff61348516565b604051602001808281526020019150506040516020818303038152906040526040518082805190602001908083835b6020831061461a5780518252601f1990920191602091820191016145fb565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120600d5490945092506103e89150839050046103e80282031015614669576001915061466e565b600091505b5090565b61467a614e61565b6000808080806146a260646146968c600363ffffffff613ff616565b9063ffffffff614d1a16565b600554909450600160a060020a03161561474057600560009054906101000a9004600160a060020a0316600160a060020a031663ed78cf4a856040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016000604051808303818588803b15801561472257600080fd5b505af1158015614736573d6000803e3d6000fd5b5050505050614753565b614750858563ffffffff61348516565b94505b61476960646146968c600863ffffffff613ff616565b60008a8152600860205260409020600101549093501561481e576000898152600860205260409020600401546147a690849063ffffffff61348516565b60008a815260086020908152604091829020600481019390935582546001909301548251600160a060020a03909416845290830152818101859052426060830152518c918e918c917f590bbc0fc16915a85269a48f74783c39842b7ae9eceb7c295c95dbe8b3ec7331919081900360800190a4614863565b600083111561486357600354604051600160a060020a039091169084156108fc029085906000818181858888f19350505050158015614861573d6000803e3d6000fd5b505b61487960646146968c600263ffffffff613ff616565b600454604051919350600160a060020a03169083156108fc029084906000818181858888f193505050501580156148b4573d6000803e3d6000fd5b506000888152601060205260409020600101546148df90606490614696908d9063ffffffff613ff616565b90506148f1858263ffffffff61348516565b9450600085111561493857600154604051600160a060020a039091169086156108fc029087906000818181858888f19350505050158015614936573d6000803e3d6000fd5b505b50949a9950505050505050505050565b614950614e61565b600084815260106020526040812054819081908190606490614979908b9063ffffffff613ff616565b81151561498257fe5b0493506064890492506149a083600c5461348590919063ffffffff16565b600c55600088815260106020526040902060010154614a1190614a04906064906149d1908d9063ffffffff613ff616565b8115156149da57fe5b0460646149ee8d600e63ffffffff613ff616565b8115156149f757fe5b049063ffffffff61348516565b8a9063ffffffff61415c16565b9850614a23898563ffffffff61415c16565b9150614a318b8b868a614d28565b90506000811115614a4f57614a4c848263ffffffff61415c16565b93505b60008b8152600e6020526040902060070154614a75906137a1848463ffffffff61348516565b60008c8152600e602052604090206007015560e0860151614a9d90859063ffffffff61348516565b60e0870152506101008501525091979650505050505050565b836c01431e0fae6d7217caa00000000242670de0b6b3a76400000282600001510101816000018181525050600b54751aba4714957d300d0e549208b31adb100000000000000285826020015101018160200181815250507f500e72a0e114930aebdbcb371ccdbf43922c49f979794b5de4257ff7e310c7468160000151826020015160086000898152602001908152602001600020600101543387878760400151886060015189608001518a60a001518b60c001518c60e001518d6101000151600c54604051808f81526020018e81526020018d600019166000191681526020018c600160a060020a0316600160a060020a031681526020018b81526020018a815260200189600160a060020a0316600160a060020a0316815260200188600019166000191681526020018781526020018681526020018581526020018481526020018381526020018281526020019e50505050505050505050505050505060405180910390a15050505050565b6000614c3083836141bc565b90506000811115614cb657600083815260086020526040902060030154614c5e90829063ffffffff61348516565b6000848152600860209081526040808320600301939093556009815282822085835290522060020154614c9890829063ffffffff61348516565b60008481526009602090815260408083208684529091529020600201555b505050565b6000806002614ccb846001613485565b811515614cd457fe5b0490508291505b818110156137dd578091506002614cfd8285811515614cf657fe5b0483613485565b811515614d0657fe5b049050614cdb565b60006134e08283613ff6565b600080828481151561415357fe5b6000848152600e602052604081206005015481908190614d5686670de0b6b3a764000063ffffffff613ff616565b811515614d5f57fe5b6000898152600e60205260409020600801549190049250614d8790839063ffffffff61348516565b6000888152600e6020526040902060080155670de0b6b3a7640000614db2838663ffffffff613ff616565b811515614dbb57fe5b60008881526009602090815260408083208c8452825280832060020154600e90925290912060080154929091049250614e0e916137a1908490670de0b6b3a764000090614203908a63ffffffff613ff616565b60008781526009602090815260408083208b8452825280832060020193909355600e90522060050154614e5690670de0b6b3a7640000906131d590859063ffffffff613ff616565b979650505050505050565b6101206040519081016040528060008152602001600081526020016000600160a060020a031681526020016000801916815260200160008152602001600081526020016000815260200160008152602001600081525090560048756d616e73206f6e6c79000000000000000000000000000000000000000000697473206e6f7420616374697665207965742e00000000000000000000000000a165627a7a7230582040422d399b0227a5218f4fd9fc5b55341072235293201478de00116e655cb1fa0029
Deployed Bytecode
0x6080604052600436106101cc5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663018a25e8811461036b57806306fdde03146103925780630dc9ebfe1461041c5780630f15f4c01461044d57806310f01eba1461046457806311a09ae71461048557806324c33d331461049a5780632660316e146105175780632ce21999146105465780632dd78759146105775780632e19ebdc1461058c578063349cdcac146105a45780633b441344146105c25780633ccfd60b146105e35780633ddd4698146105f85780633f03aab41461065457806349cc635d146106695780635893d48114610693578063624ae5c0146106ae57806363066434146106c3578063685ffd83146106f9578063747dff421461074c5780638f38f309146107d75780638f7140ea146107e5578063921dec211461080057806395d89b4114610853578063a2bccae914610868578063abcccdb1146108a9578063c519500e146108be578063c7e284b8146108d6578063ce89c80c146108eb578063cf80800014610906578063d53b26791461091e578063d87574e014610933578063de7874f314610948578063ed78cf4a146109a2578063ee0b5d8b146109aa575b6101d4614e61565b600454600090819060a060020a900460ff16151560011461022d576040805160e560020a62461bcd0281526020600482015260136024820152600080516020614edb833981519152604482015290519081900360640190fd5b33803b8015610274576040805160e560020a62461bcd02815260206004820152600b6024820152600080516020614ebb833981519152604482015290519081900360640190fd5b34633b9aca008110156102d1576040805160e560020a62461bcd02815260206004820152600a60248201527f546f6f206c6974746c6500000000000000000000000000000000000000000000604482015290519081900360640190fd5b69152d02c7e14af6800000811115610333576040805160e560020a62461bcd02815260206004820152600860248201527f546f6f206d756368000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b61033c86610a03565b33600090815260066020526040812054919750909550600294506103639086908689610cb7565b505050505050005b34801561037757600080fd5b50610380610f55565b60408051918252519081900360200190f35b34801561039e57600080fd5b506103a7611016565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103e15781810151838201526020016103c9565b50505050905090810190601f16801561040e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042857600080fd5b5061043161104d565b60408051600160a060020a039092168252519081900360200190f35b34801561045957600080fd5b5061046261105c565b005b34801561047057600080fd5b50610380600160a060020a0360043516611332565b34801561049157600080fd5b50610380611344565b3480156104a657600080fd5b506104b260043561134a565b604080519d8e5260208e019c909c528c8c019a909a5297151560608c015260808b019690965260a08a019490945260c089019290925260e088015261010087015261012086015261014085015261016084015261018083015251908190036101a00190f35b34801561052357600080fd5b506105326004356024356113b5565b604080519115158252519081900360200190f35b34801561055257600080fd5b5061055e6004356113d5565b6040805192835260208301919091528051918290030190f35b34801561058357600080fd5b506104316113ee565b34801561059857600080fd5b506103806004356113fd565b3480156105b057600080fd5b5061046260043560243560443561140f565b3480156105ce57600080fd5b50610462600160a060020a03600435166115f5565b3480156105ef57600080fd5b5061046261174e565b6040805160206004803580820135601f810184900484028501840190955284845261046294369492936024939284019190819084018382808284375094975050600160a060020a03853516955050505050602001351515611ac2565b34801561066057600080fd5b50610431611c7b565b34801561067557600080fd5b50610462600435600160a060020a0360243516604435606435611c8a565b34801561069f57600080fd5b50610380600435602435611e55565b3480156106ba57600080fd5b50610380611e72565b3480156106cf57600080fd5b506106db600435611e78565b60408051938452602084019290925282820152519081900360600190f35b6040805160206004803580820135601f8101849004840285018401909552848452610462943694929360249392840191908190840183828082843750949750508435955050505050602001351515612037565b34801561075857600080fd5b50610761612117565b604080519e8f5260208f019d909d528d8d019b909b5260608d019990995260808c019790975260a08b019590955260c08a0193909352600160a060020a0390911660e08901526101008801526101208701526101408601526101608501526101808401526101a083015251908190036101c00190f35b610462600435602435612363565b3480156107f157600080fd5b5061046260043560243561254a565b6040805160206004803580820135601f8101849004840285018401909552848452610462943694929360249392840191908190840183828082843750949750508435955050505050602001351515612601565b34801561085f57600080fd5b506103a76126e1565b34801561087457600080fd5b50610883600435602435612718565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156108b557600080fd5b5061043161274a565b3480156108ca57600080fd5b5061055e600435612759565b3480156108e257600080fd5b50610380612772565b3480156108f757600080fd5b50610380600435602435612826565b34801561091257600080fd5b506103806004356128c8565b34801561092a57600080fd5b50610532612976565b34801561093f57600080fd5b50610380612986565b34801561095457600080fd5b5061096060043561298c565b60408051600160a060020a0390981688526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b6104626129d3565b3480156109b657600080fd5b506109cb600160a060020a0360043516612a50565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b610a0b614e61565b336000908152600660205260408120549080821515610cae57604080517fe56556a90000000000000000000000000000000000000000000000000000000081523360048201529051735d99e9ab040efa45de99a44c8410cf8f61cc31019163e56556a99160248083019260209291908290030181600087803b158015610a9057600080fd5b505af1158015610aa4573d6000803e3d6000fd5b505050506040513d6020811015610aba57600080fd5b5051604080517f82e37b2c000000000000000000000000000000000000000000000000000000008152600481018390529051919450735d99e9ab040efa45de99a44c8410cf8f61cc3101916382e37b2c916024808201926020929091908290030181600087803b158015610b2d57600080fd5b505af1158015610b41573d6000803e3d6000fd5b505050506040513d6020811015610b5757600080fd5b5051604080517fe3c08adf000000000000000000000000000000000000000000000000000000008152600481018690529051919350735d99e9ab040efa45de99a44c8410cf8f61cc31019163e3c08adf916024808201926020929091908290030181600087803b158015610bca57600080fd5b505af1158015610bde573d6000803e3d6000fd5b505050506040513d6020811015610bf457600080fd5b505133600081815260066020908152604080832088905587835260089091529020805473ffffffffffffffffffffffffffffffffffffffff1916909117905590508115610c7d576000828152600760209081526040808320869055858352600882528083206001908101869055600a8352818420868552909252909120805460ff191690911790555b8015801590610c8c5750828114155b15610ca65760008381526008602052604090206006018190555b845160010185525b50929392505050565b600b5442600182148015610cdb57506000828152600e602052604090206004015481105b15610d29576000341115610d2457600154604051600160a060020a03909116903480156108fc02916000818181858888f19350505050158015610d22573d6000803e3d6000fd5b505b610f4d565b6000828152600e602052604090206004015481118015610d8b57506000828152600e602052604090206002015481111580610d8b57506000828152600e602052604090206002015481118015610d8b57506000828152600e6020526040902054155b15610d9e57610d24828734888888612b25565b6000828152600e602052604090206002015481118015610dd057506000828152600e602052604090206003015460ff16155b15610f18576000828152600e60205260409020600301805460ff19166001179055610dfa83613076565b925080670de0b6b3a764000002836000015101836000018181525050858360200151018360200181815250507fa7801a70b37e729a11492aad44fd3dba89b4149f0609dc0f6837bf9e57e2671a3360086000898152602001908152602001600020600101543486600001518760200151886040015189606001518a608001518b60a001518c60c001518d60e00151604051808c600160a060020a0316600160a060020a031681526020018b600019166000191681526020018a815260200189815260200188815260200187600160a060020a0316600160a060020a0316815260200186600019166000191681526020018581526020018481526020018381526020018281526020019b50505050505050505050505060405180910390a15b600086815260086020526040902060030154610f3a903463ffffffff61348516565b6000878152600860205260409020600301555b505050505050565b600b546000818152600e6020526040812060040154909190429081118015610fbf57506000828152600e602052604090206002015481111580610fbf57506000828152600e602052604090206002015481118015610fbf57506000828152600e6020526040902054155b15611007576000828152600e602052604090206005015461100090670de0b6b3a764000090610ff4908263ffffffff61348516565b9063ffffffff6134e616565b9250611011565b6544364c5bb00092505b505090565b60408051808201909152601081527f52696368203344204f6666696369616c00000000000000000000000000000000602082015281565b600254600160a060020a031681565b33600090815260208190526040902054600981146110c4576040805160e560020a62461bcd02815260206004820152600e60248201527f4d7573742062652061646d696e2e000000000000000000000000000000000000604482015290519081900360640190fd5b600154600160a060020a03161515611126576040805160e560020a62461bcd02815260206004820152601a60248201527f4d75737420736574757020436f6d6d756e697479416464725f2e000000000000604482015290519081900360640190fd5b600254600160a060020a03161515611188576040805160e560020a62461bcd02815260206004820152601a60248201527f4d75737420736574757020466f756e646174696f6e416464722e000000000000604482015290519081900360640190fd5b600354600160a060020a031615156111ea576040805160e560020a62461bcd02815260206004820152601360248201527f4d75737420736574757020616666416464722e00000000000000000000000000604482015290519081900360640190fd5b600454600160a060020a0316151561124c576040805160e560020a62461bcd02815260206004820152601560248201527f4d757374207365747570206167656e74416464722e0000000000000000000000604482015290519081900360640190fd5b60045460a060020a900460ff16156112ae576040805160e560020a62461bcd02815260206004820152600960248201527f4f6e6c79206f6e63650000000000000000000000000000000000000000000000604482015290519081900360640190fd5b506004805474ff0000000000000000000000000000000000000000191660a060020a1790556001600b819055600052600e602052635b7ea1c07fa7c5ba7114a813b50159add3a36832908dc83db71d0b9a24c2ad0f83be95820b55635b7ee8107fa7c5ba7114a813b50159add3a36832908dc83db71d0b9a24c2ad0f83be95820955565b60066020526000908152604090205481565b600d5481565b600e60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a8b0154600b8c0154600c909c01549a9b999a989960ff909816989697959694959394929391929091908d565b600a60209081526000928352604080842090915290825290205460ff1681565b6010602052600090815260409020805460019091015482565b600354600160a060020a031681565b60076020526000908152604090205481565b611417614e61565b60045460009060a060020a900460ff16151560011461146e576040805160e560020a62461bcd0281526020600482015260136024820152600080516020614edb833981519152604482015290519081900360640190fd5b33803b80156114b5576040805160e560020a62461bcd02815260206004820152600b6024820152600080516020614ebb833981519152604482015290519081900360640190fd5b84633b9aca00811015611512576040805160e560020a62461bcd02815260206004820152600a60248201527f546f6f206c6974746c6500000000000000000000000000000000000000000000604482015290519081900360640190fd5b69152d02c7e14af6800000811115611574576040805160e560020a62461bcd02815260206004820152600860248201527f546f6f206d756368000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b3360009081526006602052604090205493508715156115a65760008481526008602052604090206006015497506115d3565b60008481526008602052604090206006015488146115d35760008481526008602052604090206006018890555b6115dc87613513565b96506115eb8489898989613538565b5050505050505050565b336000908152602081905260409020546009811461165d576040805160e560020a62461bcd02815260206004820152600e60248201527f4d7573742062652061646d696e2e000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a03821615156116bd576040805160e560020a62461bcd02815260206004820152601a60248201527f456d7074792061646472657373206e6f7420616c6c6f7765642e000000000000604482015290519081900360640190fd5b600554600160a060020a03161561171e576040805160e560020a62461bcd02815260206004820152601960248201527f4f7468657252696368334420686173206265656e207365742e00000000000000604482015290519081900360640190fd5b506005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008060008061175c614e61565b60045460a060020a900460ff1615156001146117b0576040805160e560020a62461bcd0281526020600482015260136024820152600080516020614edb833981519152604482015290519081900360640190fd5b33803b80156117f7576040805160e560020a62461bcd02815260206004820152600b6024820152600080516020614ebb833981519152604482015290519081900360640190fd5b600b5433600090815260066020908152604080832054848452600e9092529091206002015491985042975095508611801561184457506000878152600e602052604090206003015460ff16155b801561185d57506000878152600e602052604090205415155b15611a03576000878152600e60205260409020600301805460ff1916600117905561188783613076565b925061189285613750565b935060008411156118e357600085815260086020526040808220549051600160a060020a039091169186156108fc02918791818181858888f193505050501580156118e1573d6000803e3d6000fd5b505b85670de0b6b3a764000002836000015101836000018181525050848360200151018360200181815250507f0bd0dba8ab932212fa78150cdb7b0275da72e255875967b5cad11464cf71bedc3360086000888152602001908152602001600020600101548686600001518760200151886040015189606001518a608001518b60a001518c60c001518d60e00151604051808c600160a060020a0316600160a060020a031681526020018b600019166000191681526020018a815260200189815260200188815260200187600160a060020a0316600160a060020a0316815260200186600019166000191681526020018581526020018481526020018381526020018281526020019b50505050505050505050505060405180910390a1611ab9565b611a0c85613750565b93506000841115611a5d57600085815260086020526040808220549051600160a060020a039091169186156108fc02918791818181858888f19350505050158015611a5b573d6000803e3d6000fd5b505b6000858152600860209081526040918290206001015482513381529182015280820186905260608101889052905186917f8f36579a548bc439baa172a6521207464154da77f411e2da3db2f53affe6cc3a919081900360800190a25b50505050505050565b6000808080808033803b8015611b10576040805160e560020a62461bcd02815260206004820152600b6024820152600080516020614ebb833981519152604482015290519081900360640190fd5b611b198b6137e3565b604080517faa4d490b000000000000000000000000000000000000000000000000000000008152336004820181905260248201849052600160a060020a038e1660448301528c151560648301528251939b509950349850735d99e9ab040efa45de99a44c8410cf8f61cc31019263aa4d490b928a926084808201939182900301818588803b158015611baa57600080fd5b505af1158015611bbe573d6000803e3d6000fd5b50505050506040513d6040811015611bd557600080fd5b508051602091820151600160a060020a03808b1660008181526006865260408082205485835260088852918190208054600190910154825188151581529889018790529416878201526060870193909352608086018c90524260a0870152915193995091975095508a92909186917fdd6176433ff5026bbce96b068584b7bbe3514227e72df9c630b749ae87e64442919081900360c00190a45050505050505050505050565b600154600160a060020a031681565b33735d99e9ab040efa45de99a44c8410cf8f61cc310114611cf5576040805160e560020a62461bcd02815260206004820152601b60248201527f43616c6c65642066726f6d20506c61796572426f6f6b206f6e6c790000000000604482015290519081900360640190fd5b600160a060020a0383166000908152600660205260409020548414611d3057600160a060020a03831660009081526006602052604090208490555b6000828152600760205260409020548414611d575760008281526007602052604090208490555b600084815260086020526040902054600160a060020a03848116911614611dad576000848152600860205260409020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385161790555b6000848152600860205260409020600101548214611dda5760008481526008602052604090206001018290555b6000848152600860205260409020600601548114611e075760008481526008602052604090206006018190555b6000848152600a6020908152604080832085845290915290205460ff161515611e4f576000848152600a602090815260408083208584529091529020805460ff191660011790555b50505050565b600f60209081526000928352604080842090915290825290205481565b600b5481565b600b546000818152600e602052604081206002015490918291829190829042118015611eb657506000828152600e602052604090206003015460ff16155b8015611ecf57506000828152600e602052604090205415155b15612006576000828152600e6020526040902054861415611fca576000828152600e60205260409020600c810154600790910154611f129163ffffffff61348516565b9050611f536064611f2a83603063ffffffff613ff616565b811515611f3357fe5b60008981526008602052604090206002015491900463ffffffff61348516565b6000878152600960209081526040808320868452909152902060020154611fac90611f8e90611f828a8761406d565b9063ffffffff61415c16565b6000898152600860205260409020600301549063ffffffff61348516565b6000888152600860205260409020600401549196509450925061202e565b600086815260086020908152604080832060029081015460098452828520878652909352922090910154611fac90611f8e90611f828a8761406d565b60008681526008602052604090206002810154600590910154611fac90611f8e9089906141bc565b50509193909250565b6000808080808033803b8015612085576040805160e560020a62461bcd02815260206004820152600b6024820152600080516020614ebb833981519152604482015290519081900360640190fd5b61208e8b6137e3565b604080517f745ea0c1000000000000000000000000000000000000000000000000000000008152336004820181905260248201849052604482018e90528c151560648301528251939b509950349850735d99e9ab040efa45de99a44c8410cf8f61cc31019263745ea0c1928a926084808201939182900301818588803b158015611baa57600080fd5b6000806000806000806000806000806000806000806000600b549050600e60008281526020019081526020016000206009015481600e60008481526020019081526020016000206005015483600114801561218257506000848152600e602052604090206004015442105b61219d576000848152600e60205260409020600201546121a0565b60005b8460011480156121c057506000858152600e602052604090206004015442105b6121db576000858152600e60205260409020600401546121de565b60005b600e600087815260200190815260200160002060070154600e600088815260200190815260200160002060000154600a02600e6000898152602001908152602001600020600101540160086000600e60008b815260200190815260200160002060000154815260200190815260200160002060000160009054906101000a9004600160a060020a031660086000600e60008c815260200190815260200160002060000154815260200190815260200160002060010154600f60008b8152602001908152602001600020600080815260200190815260200160002054600f60008c815260200190815260200160002060006001815260200190815260200160002054600f60008d815260200190815260200160002060006002815260200190815260200160002054600f60008e815260200190815260200160002060006003815260200190815260200160002054600c546103e802600d54019e509e509e509e509e509e509e509e509e509e509e509e509e509e5050909192939495969798999a9b9c9d565b61236b614e61565b60045460009060a060020a900460ff1615156001146123c2576040805160e560020a62461bcd0281526020600482015260136024820152600080516020614edb833981519152604482015290519081900360640190fd5b33803b8015612409576040805160e560020a62461bcd02815260206004820152600b6024820152600080516020614ebb833981519152604482015290519081900360640190fd5b34633b9aca00811015612466576040805160e560020a62461bcd02815260206004820152600a60248201527f546f6f206c6974746c6500000000000000000000000000000000000000000000604482015290519081900360640190fd5b69152d02c7e14af68000008111156124c8576040805160e560020a62461bcd02815260206004820152600860248201527f546f6f206d756368000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6124d185610a03565b336000908152600660205260409020549095509350861515612506576000848152600860205260409020600601549650612533565b60008481526008602052604090206006015487146125335760008481526008602052604090206006018790555b61253c86613513565b9550611ab984888888610cb7565b33735d99e9ab040efa45de99a44c8410cf8f61cc3101146125b5576040805160e560020a62461bcd02815260206004820152601b60248201527f43616c6c65642066726f6d20506c61796572426f6f6b206f6e6c790000000000604482015290519081900360640190fd5b6000828152600a6020908152604080832084845290915290205460ff1615156125fd576000828152600a602090815260408083208484529091529020805460ff191660011790555b5050565b6000808080808033803b801561264f576040805160e560020a62461bcd02815260206004820152600b6024820152600080516020614ebb833981519152604482015290519081900360640190fd5b6126588b6137e3565b604080517fc0942dfd000000000000000000000000000000000000000000000000000000008152336004820181905260248201849052604482018e90528c151560648301528251939b509950349850735d99e9ab040efa45de99a44c8410cf8f61cc31019263c0942dfd928a926084808201939182900301818588803b158015611baa57600080fd5b60408051808201909152600381527f5233440000000000000000000000000000000000000000000000000000000000602082015281565b600960209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b600454600160a060020a031681565b6011602052600090815260409020805460019091015482565b600b546000904260018214801561279957506000828152600e602052604090206004015481105b156127a75760009250611011565b6000828152600e602052604090206002015481101561281d576000828152600e60205260409020600401548111156127fb576000828152600e6020526040902060020154611000908263ffffffff61415c16565b6000828152600e6020526040902060020154611000908263ffffffff61415c16565b60009250611011565b6000828152600e602052604081206004015442908111801561288a57506000848152600e60205260409020600201548111158061288a57506000848152600e60205260409020600201548111801561288a57506000848152600e6020526040902054155b156128b8576000848152600e60205260409020600601546128b1908463ffffffff61421916565b91506128c1565b6128b18361423a565b5092915050565b600b546000818152600e602052604081206004015490919042908111801561293257506000828152600e60205260409020600201548111158061293257506000828152600e60205260409020600201548111801561293257506000828152600e6020526040902054155b15612966576000828152600e602052604090206005015461295f908590610ff4908263ffffffff61348516565b925061296f565b61295f846142b2565b5050919050565b60045460a060020a900460ff1681565b600c5481565b6008602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154600160a060020a039095169593949293919290919087565b600b546001016000818152600e60205260409020600c01546129fb903463ffffffff61348516565b6000828152600e6020908152604091829020600c01929092558051838152349281019290925280517f74b1d2f771e0eff1b2c36c38499febdbea80fe4013bdace4fc4b653322c2895c9281900390910190a150565b6000806000806000806000806000600b54915050600160a060020a038916600090815260066020908152604080832054808452600880845282852060018082015460098752858820898952875294872001549583905293526002830154600590930154909384939091612ae690612ac89086906141bc565b6000878152600860205260409020600301549063ffffffff61348516565b600095865260086020908152604080882060040154600983528189209989529890915290952054939e929d50909b509950919750919550909350915050565b60008581526009602090815260408083208984529091528120600101548190819081901515612b5b57612b58898661431f565b94505b60008a8152600e602052604090206006015468056bc75e2d63100000118015612bb5575060008981526009602090815260408083208d8452909152902054671bc16d674ec8000090612bb3908a63ffffffff61348516565b115b15612c3c5760008981526009602090815260408083208d8452909152902054612bed90671bc16d674ec800009063ffffffff61415c16565b9350612bff888563ffffffff61415c16565b60008a815260086020526040902060030154909350612c24908463ffffffff61348516565b60008a81526008602052604090206003015592965086925b633b9aca0088111561306a5760008a8152600e6020526040902060060154612c6a908963ffffffff61421916565b9150670de0b6b3a76400008210612ce157612c85828b61437f565b60008a8152600e60205260409020548914612cac5760008a8152600e602052604090208990555b60008a8152600e60205260409020600101548614612cd95760008a8152600e602052604090206001018690555b845160640185525b67016345785d8a00008810612f2157600d80546001019055612d0161445b565b151560011415612f2157678ac7230489e800008810612da257600c54606490612d3190604b63ffffffff613ff616565b811515612d3a57fe5b60008b8152600860205260409020600201549190049150612d61908263ffffffff61348516565b60008a815260086020526040902060020155600c54612d86908263ffffffff61415c16565b600c5584516d0eca8847c4129106ce8300000000018552612ef6565b670de0b6b3a76400008810158015612dc15750678ac7230489e8000088105b15612e4e57600c54606490612ddd90603263ffffffff613ff616565b811515612de657fe5b60008b8152600860205260409020600201549190049150612e0d908263ffffffff61348516565b60008a815260086020526040902060020155600c54612e32908263ffffffff61415c16565b600c5584516d09dc5ada82b70b59df0200000000018552612ef6565b67016345785d8a00008810158015612e6d5750670de0b6b3a764000088105b15612ef657600c54606490612e8990601963ffffffff613ff616565b811515612e9257fe5b60008b8152600860205260409020600201549190049150612eb9908263ffffffff61348516565b60008a815260086020526040902060020155600c54612ede908263ffffffff61415c16565b600c5584516d0eca8847c4129106ce83000000000185525b84516d314dc6448d9338c15b0a000000008202016c7e37be2022c0914b26800000000185526000600d555b600d5485516103e890910201855260008981526009602090815260408083208d8452909152902060010154612f5d90839063ffffffff61348516565b60008a81526009602090815260408083208e84529091529020600181019190915554612f8a908990613485565b60008a81526009602090815260408083208e8452825280832093909355600e90522060050154612fc190839063ffffffff61348516565b60008b8152600e60205260409020600581019190915560060154612fec90899063ffffffff61348516565b60008b8152600e6020908152604080832060060193909355600f81528282208983529052205461302390899063ffffffff61348516565b60008b8152600f602090815260408083208a845290915290205561304b8a8a8a8a8a8a614672565b945061305b8a8a8a89868a614948565b945061306a89878a8589614ab6565b50505050505050505050565b61307e614e61565b600b546000818152600e6020526040812080546001820154600c83015460079093015491939092909182918291829182918291829182916130c5919063ffffffff61348516565b975060646130da89603063ffffffff613ff616565b8115156130e357fe5b04965060328860008b8152601160205260409020549190049650606490613111908a9063ffffffff613ff616565b81151561311a57fe5b60008b8152601160205260409020600101549190049550606490613145908a9063ffffffff613ff616565b81151561314e57fe5b04935061316984611f8287818a818e8e63ffffffff61415c16565b60008c8152600e602052604090206005015490935061319686670de0b6b3a764000063ffffffff613ff616565b81151561319f57fe5b60008d8152600e602052604090206005015491900492506131ed90670de0b6b3a7640000906131d590859063ffffffff613ff616565b8115156131de57fe5b8791900463ffffffff61415c16565b9050600081111561321d57613208858263ffffffff61415c16565b945061321a838263ffffffff61348516565b92505b60008a81526008602052604090206002015461324090889063ffffffff61348516565b60008b81526008602052604081206002019190915586111561329c57600154604051600160a060020a039091169087156108fc029088906000818181858888f19350505050158015613296573d6000803e3d6000fd5b50600095505b60008411156132e157600254604051600160a060020a039091169085156108fc029086906000818181858888f193505050501580156132df573d6000803e3d6000fd5b505b60008b8152600e602052604090206008015461330490839063ffffffff61348516565b600e60008d815260200190815260200160002060080181905550600e60008c815260200190815260200160002060020154620f4240028d60000151018d60000181815250508867016345785d8a0000028a6a52b7d2dcc80cd2e4000000028e6020015101018d6020018181525050600860008b815260200190815260200160002060000160009054906101000a9004600160a060020a03168d60400190600160a060020a03169081600160a060020a031681525050600860008b8152602001908152602001600020600101548d606001906000191690816000191681525050868d6080018181525050848d60e001818152505060008d60c0018181525050828d60a0018181525050600b600081548092919060010191905055508a806001019b505042600e60008d8152602001908152602001600020600401819055506134566146504261348590919063ffffffff16565b60008c8152600e602052604090206002810191909155600c018390558c9b505050505050505050505050919050565b818101828110156134e0576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820616464206661696c656400000000000000000000000000604482015290519081900360640190fd5b92915050565b600061350c6135036134fe858563ffffffff61415c16565b6142b2565b611f82856142b2565b9392505050565b6000808210806135235750600382115b1561353057506002613533565b50805b919050565b600b546000818152600e602052604090206004015442908111801561359f57506000828152600e60205260409020600201548111158061359f57506000828152600e60205260409020600201548111801561359f57506000828152600e6020526040902054155b156135d6576135b184611f8289613750565b6000888152600860205260409020600301556135d1828886898988612b25565b611ab9565b6000828152600e60205260409020600201548111801561360857506000828152600e602052604090206003015460ff16155b15611ab9576000828152600e60205260409020600301805460ff1916600117905561363283613076565b925080670de0b6b3a764000002836000015101836000018181525050868360200151018360200181815250507f88261ac70d02d5ea73e54fa6da17043c974de1021109573ec1f6f57111c823dd33600860008a815260200190815260200160002060010154856000015186602001518760400151886060015189608001518a60a001518b60c001518c60e00151604051808b600160a060020a0316600160a060020a031681526020018a6000191660001916815260200189815260200188815260200187600160a060020a0316600160a060020a0316815260200186600019166000191681526020018581526020018481526020018381526020018281526020019a505050505050505050505060405180910390a150505050505050565b600081815260086020526040812060050154819061376f908490614c24565b6000838152600860205260409020600481015460038201546002909201546137ad926137a1919063ffffffff61348516565b9063ffffffff61348516565b905060008111156137d95760008381526008602052604081206002810182905560038101829055600401555b8091505b50919050565b80516000908290828080602084118015906137fe5750600084115b151561387a576040805160e560020a62461bcd02815260206004820152602a60248201527f737472696e67206d757374206265206265747765656e203120616e642033322060448201527f6368617261637465727300000000000000000000000000000000000000000000606482015290519081900360840190fd5b84600081518110151561388957fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a02141580156138f0575084600185038151811015156138c857fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214155b151561396c576040805160e560020a62461bcd02815260206004820152602560248201527f737472696e672063616e6e6f74207374617274206f7220656e6420776974682060448201527f7370616365000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b84600081518110151561397b57fe5b90602001015160f860020a900460f860020a02600160f860020a031916603060f860020a021415613abe578460018151811015156139b557fe5b90602001015160f860020a900460f860020a02600160f860020a031916607860f860020a0214151515613a32576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030780000000000604482015290519081900360640190fd5b846001815181101515613a4157fe5b90602001015160f860020a900460f860020a02600160f860020a031916605860f860020a0214151515613abe576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030580000000000604482015290519081900360640190fd5b600091505b83821015613f8e5784517f400000000000000000000000000000000000000000000000000000000000000090869084908110613afb57fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015613b6f575084517f5b0000000000000000000000000000000000000000000000000000000000000090869084908110613b5057fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b15613bdc578482815181101515613b8257fe5b90602001015160f860020a900460f860020a0260f860020a900460200160f860020a028583815181101515613bb357fe5b906020010190600160f860020a031916908160001a905350821515613bd757600192505b613f83565b8482815181101515613bea57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a021480613cba575084517f600000000000000000000000000000000000000000000000000000000000000090869084908110613c4657fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015613cba575084517f7b0000000000000000000000000000000000000000000000000000000000000090869084908110613c9b57fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b80613d64575084517f2f0000000000000000000000000000000000000000000000000000000000000090869084908110613cf057fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015613d64575084517f3a0000000000000000000000000000000000000000000000000000000000000090869084908110613d4557fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b1515613de0576040805160e560020a62461bcd02815260206004820152602260248201527f737472696e6720636f6e7461696e7320696e76616c696420636861726163746560448201527f7273000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b8482815181101515613dee57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a021415613ecd578482600101815181101515613e2a57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214151515613ecd576040805160e560020a62461bcd02815260206004820152602860248201527f737472696e672063616e6e6f7420636f6e7461696e20636f6e7365637574697660448201527f6520737061636573000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b82158015613f79575084517f300000000000000000000000000000000000000000000000000000000000000090869084908110613f0657fe5b90602001015160f860020a900460f860020a02600160f860020a0319161080613f79575084517f390000000000000000000000000000000000000000000000000000000000000090869084908110613f5a57fe5b90602001015160f860020a900460f860020a02600160f860020a031916115b15613f8357600192505b600190910190613ac3565b600183151514613fe8576040805160e560020a62461bcd02815260206004820152601d60248201527f737472696e672063616e6e6f74206265206f6e6c79206e756d62657273000000604482015290519081900360640190fd5b505050506020015192915050565b6000821515614007575060006134e0565b5081810281838281151561401757fe5b04146134e0576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d617468206d756c206661696c656400000000000000000000000000604482015290519081900360640190fd5b6000818152600e60205260408120600c8101546007909101548291614098919063ffffffff61348516565b60008581526009602090815260408083208784528252808320600190810154600e8452828520600581015492015485526011909352922054929350670de0b6b3a76400009261414a9261413e916141159086906064906140ff908a9063ffffffff613ff616565b81151561410857fe5b049063ffffffff613ff616565b81151561411e57fe5b6000898152600e602052604090206008015491900463ffffffff61348516565b9063ffffffff613ff616565b81151561415357fe5b04949350505050565b6000828211156141b6576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820737562206661696c656400000000000000000000000000604482015290519081900360640190fd5b50900390565b600082815260096020908152604080832084845282528083206002810154600190910154600e9093529083206008015461350c92670de0b6b3a76400009161420391613ff6565b81151561420c57fe5b049063ffffffff61415c16565b600061350c6142278461423a565b611f8261423a868663ffffffff61348516565b60006309502f906142a26d03b2a1d15167e7c5699bfde00000611f8261429d7a0dac7055469777a6122ee4310dd6c14410500f29048400000000006137a16b01027e72f1f128130880000061413e8a670de0b6b3a764000063ffffffff613ff616565b614cbb565b8115156142ab57fe5b0492915050565b60006142c5670de0b6b3a7640000614d0e565b6142a260026142f86142e586670de0b6b3a764000063ffffffff613ff616565b65886c8f6730709063ffffffff613ff616565b81151561430157fe5b046137a161430e86614d0e565b6304a817c89063ffffffff613ff616565b614327614e61565b6000838152600860205260409020600501541561435b5760008381526008602052604090206005015461435b908490614c24565b50600b546000838152600860205260409020600501558051600a0181528092915050565b6000818152600e6020526040812060020154429190821180156143ae57506000838152600e6020526040902054155b156143d2576143cb826137a1603c670de0b6b3a764000088614108565b90506143ff565b6000838152600e60205260409020600201546143fc906137a1603c670de0b6b3a764000088614108565b90505b6144116146508363ffffffff61348516565b811015614431576000838152600e60205260409020600201819055611e4f565b6144436146508363ffffffff61348516565b6000848152600e602052604090206002015550505050565b6000806145cc436137a142336040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083106144d65780518252601f1990920191602091820191016144b7565b5181516020939093036101000a600019018019909116921691909117905260405192018290039091209250505081151561450c57fe5b046137a1456137a142416040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083106145855780518252601f199092019160209182019101614566565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120925050508115156145bb57fe5b046137a1424463ffffffff61348516565b604051602001808281526020019150506040516020818303038152906040526040518082805190602001908083835b6020831061461a5780518252601f1990920191602091820191016145fb565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120600d5490945092506103e89150839050046103e80282031015614669576001915061466e565b600091505b5090565b61467a614e61565b6000808080806146a260646146968c600363ffffffff613ff616565b9063ffffffff614d1a16565b600554909450600160a060020a03161561474057600560009054906101000a9004600160a060020a0316600160a060020a031663ed78cf4a856040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016000604051808303818588803b15801561472257600080fd5b505af1158015614736573d6000803e3d6000fd5b5050505050614753565b614750858563ffffffff61348516565b94505b61476960646146968c600863ffffffff613ff616565b60008a8152600860205260409020600101549093501561481e576000898152600860205260409020600401546147a690849063ffffffff61348516565b60008a815260086020908152604091829020600481019390935582546001909301548251600160a060020a03909416845290830152818101859052426060830152518c918e918c917f590bbc0fc16915a85269a48f74783c39842b7ae9eceb7c295c95dbe8b3ec7331919081900360800190a4614863565b600083111561486357600354604051600160a060020a039091169084156108fc029085906000818181858888f19350505050158015614861573d6000803e3d6000fd5b505b61487960646146968c600263ffffffff613ff616565b600454604051919350600160a060020a03169083156108fc029084906000818181858888f193505050501580156148b4573d6000803e3d6000fd5b506000888152601060205260409020600101546148df90606490614696908d9063ffffffff613ff616565b90506148f1858263ffffffff61348516565b9450600085111561493857600154604051600160a060020a039091169086156108fc029087906000818181858888f19350505050158015614936573d6000803e3d6000fd5b505b50949a9950505050505050505050565b614950614e61565b600084815260106020526040812054819081908190606490614979908b9063ffffffff613ff616565b81151561498257fe5b0493506064890492506149a083600c5461348590919063ffffffff16565b600c55600088815260106020526040902060010154614a1190614a04906064906149d1908d9063ffffffff613ff616565b8115156149da57fe5b0460646149ee8d600e63ffffffff613ff616565b8115156149f757fe5b049063ffffffff61348516565b8a9063ffffffff61415c16565b9850614a23898563ffffffff61415c16565b9150614a318b8b868a614d28565b90506000811115614a4f57614a4c848263ffffffff61415c16565b93505b60008b8152600e6020526040902060070154614a75906137a1848463ffffffff61348516565b60008c8152600e602052604090206007015560e0860151614a9d90859063ffffffff61348516565b60e0870152506101008501525091979650505050505050565b836c01431e0fae6d7217caa00000000242670de0b6b3a76400000282600001510101816000018181525050600b54751aba4714957d300d0e549208b31adb100000000000000285826020015101018160200181815250507f500e72a0e114930aebdbcb371ccdbf43922c49f979794b5de4257ff7e310c7468160000151826020015160086000898152602001908152602001600020600101543387878760400151886060015189608001518a60a001518b60c001518c60e001518d6101000151600c54604051808f81526020018e81526020018d600019166000191681526020018c600160a060020a0316600160a060020a031681526020018b81526020018a815260200189600160a060020a0316600160a060020a0316815260200188600019166000191681526020018781526020018681526020018581526020018481526020018381526020018281526020019e50505050505050505050505050505060405180910390a15050505050565b6000614c3083836141bc565b90506000811115614cb657600083815260086020526040902060030154614c5e90829063ffffffff61348516565b6000848152600860209081526040808320600301939093556009815282822085835290522060020154614c9890829063ffffffff61348516565b60008481526009602090815260408083208684529091529020600201555b505050565b6000806002614ccb846001613485565b811515614cd457fe5b0490508291505b818110156137dd578091506002614cfd8285811515614cf657fe5b0483613485565b811515614d0657fe5b049050614cdb565b60006134e08283613ff6565b600080828481151561415357fe5b6000848152600e602052604081206005015481908190614d5686670de0b6b3a764000063ffffffff613ff616565b811515614d5f57fe5b6000898152600e60205260409020600801549190049250614d8790839063ffffffff61348516565b6000888152600e6020526040902060080155670de0b6b3a7640000614db2838663ffffffff613ff616565b811515614dbb57fe5b60008881526009602090815260408083208c8452825280832060020154600e90925290912060080154929091049250614e0e916137a1908490670de0b6b3a764000090614203908a63ffffffff613ff616565b60008781526009602090815260408083208b8452825280832060020193909355600e90522060050154614e5690670de0b6b3a7640000906131d590859063ffffffff613ff616565b979650505050505050565b6101206040519081016040528060008152602001600081526020016000600160a060020a031681526020016000801916815260200160008152602001600081526020016000815260200160008152602001600081525090560048756d616e73206f6e6c79000000000000000000000000000000000000000000697473206e6f7420616374697665207965742e00000000000000000000000000a165627a7a7230582040422d399b0227a5218f4fd9fc5b55341072235293201478de00116e655cb1fa0029
Swarm Source
bzzr://40422d399b0227a5218f4fd9fc5b55341072235293201478de00116e655cb1fa
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,158.16 | 7.6057 | $24,019.94 |
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.