Contract Overview
Balance: 61.38 Ether
Transactions: 78 txns
Token Tracker: AiKey (AiKey)
 Latest 25 transactions from a total of 78 transactions

TxHash Age From To Value [TxFee]
0x07457f56af14ee3b00ff296ac3e934fadaa7274ffbebad564413b5b446ed2c4b22 days 11 hrs ago0x7072034a40df0688b12e2d7a766f6bc0f8a7c832  IN   0xeed2a2ce9f6ee701b728bf01833fc80045412f810 Ether0.000061999
0x08dfd5bccc02502901bf562c43fae001e2b103322f2864f76c21fd8b43740a4022 days 11 hrs ago0xe898b056e7d6766c43030567c2148b01fa6241d1  IN   0xeed2a2ce9f6ee701b728bf01833fc80045412f811 Ether0.00042939
0xb379d207fed83d57e0b63d6a047400bfb8b987d02b4c8ac82305cc874f5ef91022 days 11 hrs ago0xe898b056e7d6766c43030567c2148b01fa6241d1  IN   0xeed2a2ce9f6ee701b728bf01833fc80045412f810 Ether0.00002267
0x833446e584c24ebfced161b8d230c97fa46932c4370005afa885ef4587a61e0324 days 10 hrs ago0x321d18a685b088453ec8294d6be0b6a2d1cd85ad  IN   0xeed2a2ce9f6ee701b728bf01833fc80045412f810 Ether0.000034433
0x3b9f811bf34e8c372d9e7f6ea7ae0992c36d2cd536e85c3f54bbf3604939189a24 days 10 hrs ago0x321d18a685b088453ec8294d6be0b6a2d1cd85ad  IN   0xeed2a2ce9f6ee701b728bf01833fc80045412f810 Ether0.000022744
0xb0f887a0efd2404a35260fe668c4a8d7aa29a64c86e01946556909ca5f55342324 days 11 hrs ago0x321d18a685b088453ec8294d6be0b6a2d1cd85ad  IN   0xeed2a2ce9f6ee701b728bf01833fc80045412f811 Ether0.008695314
0x72fa26aa0de119201648572c22a0cd076570e415e3026382a4e672e9d824f87724 days 11 hrs ago0x321d18a685b088453ec8294d6be0b6a2d1cd85ad  IN   0xeed2a2ce9f6ee701b728bf01833fc80045412f810 Ether0.000061999
0x9c0fe49cd1f946324e307493f2ce20fce7e7865532bc8ce5187dbe0cfdfb807d24 days 11 hrs ago0x5d997497a6dba2df9d0d6b12d42e05d9e4ae2070  IN   0xeed2a2ce9f6ee701b728bf01833fc80045412f811 Ether0.00913167
0xa40c2534a5f14b5bd51b9a69a63d8dc5e71d330be8d3097cc117a05a07eeba3924 days 11 hrs ago0x5d997497a6dba2df9d0d6b12d42e05d9e4ae2070  IN   0xeed2a2ce9f6ee701b728bf01833fc80045412f810 Ether0.000023924
0xc1e07b8f789572fed0e9d9ebc451f5ef65ab8238f1a362ff77731be9f76cc45624 days 11 hrs ago0x5d997497a6dba2df9d0d6b12d42e05d9e4ae2070  IN   0xeed2a2ce9f6ee701b728bf01833fc80045412f810 Ether0.000071384
0xa67e640d263b2593ded0e6dccda992f037e03e31b55f516c5f6be2b86c0d08c024 days 11 hrs ago0x5d997497a6dba2df9d0d6b12d42e05d9e4ae2070  IN   0xeed2a2ce9f6ee701b728bf01833fc80045412f810 Ether0.00167524
0x76bd5d62db2f77bd84c2ed5740a4f68bf5db354665dd2174cb50d2220d66734524 days 11 hrs ago0x5d997497a6dba2df9d0d6b12d42e05d9e4ae2070  IN   0xeed2a2ce9f6ee701b728bf01833fc80045412f811 Ether0.00794367
0x251a8afac3504c690339d7536d53fb785b5fc0bf4f98b52f41480071f06a179224 days 11 hrs ago0x5d997497a6dba2df9d0d6b12d42e05d9e4ae2070  IN   0xeed2a2ce9f6ee701b728bf01833fc80045412f810 Ether0.000984832
0xc652facf2dd4fda26f68d90dc59245db74a4de4b30056597c98674349d9479c924 days 11 hrs ago0x5d997497a6dba2df9d0d6b12d42e05d9e4ae2070  IN   0xeed2a2ce9f6ee701b728bf01833fc80045412f810 Ether0.001224808
0x4e9ba16fc811badadf8797ef0259f1e18e967ef49a7de4cb970062cef8cc0f7324 days 11 hrs ago0x5d997497a6dba2df9d0d6b12d42e05d9e4ae2070  IN   0xeed2a2ce9f6ee701b728bf01833fc80045412f811 Ether0.00794367
0x588510e3f19ec67b03ce12863d026ec5cd71f7eb9594f89f93eca957886f439824 days 11 hrs ago0x5d997497a6dba2df9d0d6b12d42e05d9e4ae2070  IN   0xeed2a2ce9f6ee701b728bf01833fc80045412f811 Ether0.00794367
0xee297486c308e7947dadc388608c781e9fef5962efff1cdc4bf732d46edf7d0424 days 11 hrs ago0x5d997497a6dba2df9d0d6b12d42e05d9e4ae2070  IN   0xeed2a2ce9f6ee701b728bf01833fc80045412f810 Ether0.000032521
0xe12ca3f25190e582952419084c3066fed3659b39c1c8a467ae754b4b16f225b024 days 11 hrs ago0x5d997497a6dba2df9d0d6b12d42e05d9e4ae2070  IN   0xeed2a2ce9f6ee701b728bf01833fc80045412f810 Ether0.000024055
0x011d9fbc6fe2b7066a094496fee22c253515ca79a0c32154347039b2bf4552fd24 days 11 hrs ago0x321d18a685b088453ec8294d6be0b6a2d1cd85ad  IN   0xeed2a2ce9f6ee701b728bf01833fc80045412f811 Ether0.010822914
0x9a304c35e14cf34880e8336ce6ae34af1e69fe0176781758e836c663721bc7d924 days 11 hrs ago0x5d997497a6dba2df9d0d6b12d42e05d9e4ae2070  IN   0xeed2a2ce9f6ee701b728bf01833fc80045412f810 Ether0.000034652
0xb86b52fc51a3ada3dfcc858d7df3f6cb6c07992a4623766910dc69f142bdb1c524 days 11 hrs ago0x321d18a685b088453ec8294d6be0b6a2d1cd85ad  IN   0xeed2a2ce9f6ee701b728bf01833fc80045412f810 Ether0.000085679
0x90e0d3fb090e669450212c5f1723be53b22f0ef29f00e506f3a1fe21222f3c2024 days 11 hrs ago0x321d18a685b088453ec8294d6be0b6a2d1cd85ad  IN   0xeed2a2ce9f6ee701b728bf01833fc80045412f811 Ether0.002006118
0xd7c729d5f91b04603e0727429ffd29fc57963177dcd878bd9a2fb24820212a8e24 days 11 hrs ago0x321d18a685b088453ec8294d6be0b6a2d1cd85ad  IN   0xeed2a2ce9f6ee701b728bf01833fc80045412f817 Ether0.00050472
0x5f84bcf000d42fa7ff2a0c3886373c7cc2914ea24cb2e562f617cb341c1e340924 days 11 hrs ago0x321d18a685b088453ec8294d6be0b6a2d1cd85ad  IN   0xeed2a2ce9f6ee701b728bf01833fc80045412f810.0007 Ether0.000503696
0x5a825766e7ff7f9f8f0c648a98cb389b735f9d53282bb16615727894040e5f1624 days 11 hrs ago0x321d18a685b088453ec8294d6be0b6a2d1cd85ad  IN   0xeed2a2ce9f6ee701b728bf01833fc80045412f816.9993 Ether0.0093026
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 5 Internal Transactions

ParentTxHash Block Age From To Value
0x3b9f811bf34e8c372d9e7f6ea7ae0992c36d2cd536e85c3f54bbf3604939189a487882224 days 10 hrs ago0xeed2a2ce9f6ee701b728bf01833fc80045412f810x321d18a685b088453ec8294d6be0b6a2d1cd85ad0.08 Ether
0xa67e640d263b2593ded0e6dccda992f037e03e31b55f516c5f6be2b86c0d08c0487876924 days 11 hrs ago0xeed2a2ce9f6ee701b728bf01833fc80045412f810x5d997497a6dba2df9d0d6b12d42e05d9e4ae207010 Ether
0x90e0d3fb090e669450212c5f1723be53b22f0ef29f00e506f3a1fe21222f3c20487863124 days 11 hrs ago0xeed2a2ce9f6ee701b728bf01833fc80045412f810x5d997497a6dba2df9d0d6b12d42e05d9e4ae20701 Ether
0x15ef90609852bde1dd053ea7c91d0c9a6e6f45f8fda3213c7575bff96ce460f5487276725 days 11 hrs ago0xeed2a2ce9f6ee701b728bf01833fc80045412f810x7072034a40df0688b12e2d7a766f6bc0f8a7c8320.03 Ether
0xa4b2a86fc39f4c031cbdee1465cf92a71598eb372ec2446a450574db5c89b2c2487168525 days 14 hrs ago0xeed2a2ce9f6ee701b728bf01833fc80045412f810x5d997497a6dba2df9d0d6b12d42e05d9e4ae20700.01 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: AiToken
Compiler Version: v0.4.24+commit.e67f0147
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^ 0.4.24;

contract ERC20Interface {
	function totalSupply() public constant returns(uint);
	function balanceOf(address tokenOwner) public constant returns(uint balance);
	function allowance(address tokenOwner, address spender) public constant returns(uint remaining);
	function transfer(address to, uint tokens) public returns(bool success);
	function approve(address spender, uint tokens) public returns(bool success);
	function transferFrom(address from, address to, uint tokens) public returns(bool success);
	event Transfer(address indexed from, address indexed to, uint tokens);
	event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
}

contract ApproveAndCallFallBack {
	function receiveApproval(address from, uint256 tokens, address token, bytes data) public;
}

contract Owned {
	address public owner;
	address public newOwner;

	event OwnershipTransferred(address indexed _from, address indexed _to);

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

	modifier onlyOwner {
		require(msg.sender == owner);
		_;
	}

	function transferOwnership(address _newOwner) public onlyOwner {
		newOwner = _newOwner;
	}

	function acceptOwnership() public {
		require(msg.sender == newOwner);
		emit OwnershipTransferred(owner, newOwner);
		owner = newOwner;
		newOwner = address(0);
	}
}

// ----------------------------------------------------------------------------
// 核心类
// ----------------------------------------------------------------------------
contract AiToken is ERC20Interface, Owned {
	string public symbol;
	string public name;
	uint8 public decimals;
	uint _totalSupply;
	
	bool public actived;
	struct keyconf{
	    uint basekeynum;//5000
    	uint basekeysub;//5000
    	uint usedkeynum;//0
        uint startprice;//0.01
        uint keyprice;//0.01
        uint startbasekeynum;//5000
	}
	keyconf private keyconfig;
	uint[] public worksdata;
	
	uint public onceOuttime;
	uint8 public per;
	
	
	uint[] public pers;
	
	address[] public mansdata;
	uint[] public moneydata;
	uint[] public timedata;
	uint public pubper;
	uint public subper;
	uint public luckyper;
	uint public lastmoney;
	uint public lastper;
	uint public lasttime;
	uint public sellkeyper;
	
	//bool public isend;
	uint public tags;
	//uint public opentime;
	
	uint public runper;
	uint public sellper;
	uint public sellupper;
	uint public sysday;
	uint public cksysday;
	//uint public nulldayeth;
    mapping(uint => mapping(uint => uint)) allprize;
	//uint public allprizeused;
	mapping(address => uint) balances;
	
	mapping(address => mapping(address => uint)) allowed;
	mapping(address => bool) public frozenAccount;
	struct usercan{
	    uint eths;
	    uint used;
	    uint len;
	    uint adds;
	    uint[] times;
	    uint[] moneys;
	    //uint[] amounts;
	}
	mapping(address => usercan) mycan;
	mapping(address => usercan) myrun;
	struct userdata{
	    uint systemtag;
	    uint tzs;
	    uint usereths;
	    uint userethsused;
	    uint mylevelid;
	    uint mykeysid;
	    uint mykeyeths;
	    uint prizecount;
	    address fromaddr;
	    //uint[] suns;
	    mapping(uint => uint) mysunsdaynum;
	    mapping(uint => uint) myprizedayget;
	    mapping(uint => uint) daysusereths;
	    mapping(uint => uint) daysuserdraws;
	    mapping(uint => uint) daysuserlucky;
	    mapping(uint => uint) levelget;
	    mapping(uint => bool) hascountprice;
	}
	mapping(address => userdata) my;
	mapping(address => uint) mysunmoney;
	struct sunsdata{
	    uint t1;
	    uint t2;
	    uint t3;
	    uint t4;
	    uint t5;
	    uint t6;
	    uint t7;
	}
	mapping(address => sunsdata) suns;

	//与用户钥匙id对应
	mapping(uint => address) public myidkeys;
	//all once day get all
	mapping(uint => uint) public daysgeteths;
	mapping(uint => uint) public dayseths;
	//user once day pay
	mapping(uint => uint) public daysysdraws;
	struct tagsdata{
	    uint ethnum;//用户总资产
	    uint sysethnum;//系统总eth
	    uint userethnum;//用户总eth
	    uint userethnumused;//用户总eth
	    uint syskeynum;//系统总key
	}
	mapping(uint => tagsdata) tg;
	mapping(address => bool) mangeruser;
	mapping(address => uint) mangerallowed;
	string private version;
	string private downurl;
	string private notices;
	uint public hasusednum;
	uint[] private nullworker;
	uint[] private defworkper;
	uint[] private defworkper2;
	uint public defkeynum;
	uint public currentkeyid;
	uint public initkeyid;
	mapping(uint => uint) public cuid;
	struct tndata{
	    uint cid;//1110000001
	    uint sellid;
	    uint selltime;
	    uint sellmoney;
	}
	mapping(address => tndata) tnode;
	/* 通知 */
	event Transfer(address indexed from, address indexed to, uint tokens);
	event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
	event FrozenFunds(address target, bool frozen);
	event ethchange(address indexed from, address indexed to, uint tokens);
	modifier onlySystemStart() {
        require(actived == true);
	    require(tags == my[msg.sender].systemtag);
	    require(!frozenAccount[msg.sender]);
        _;
    }

	constructor() public {
		symbol = "AiKey";
		name = "AiKey";
		decimals = 18;
		_totalSupply = 100000000 ether;
	
		actived = true;
		tags = 0;
		tg[0] = tagsdata(0,0,0,0,0);
		
        //keyconfig.currentkeyid = 0;
        //keyconfig.keyidarr = [10055555,20055555,30055555,40055555,50055555,60055555,70055555,80055555,90055555];
        nullworker = [0,0,0,0,0,0,0,0,0];
        worksdata = [0,0,0,0,0,0,0,0,0];
        defworkper = [2,3,5];
        defworkper2 = [10,8];
        defkeynum = 1000000000;
        currentkeyid = 10000;
        initkeyid = 10000;
        runper = 10;
		//mans = [30,20,10,10,10,10,10];
		//mms = [2 ether, 10 ether, 30 ether];
		pers = [30,20,10,5,5,5,5];
		//prizeper = [2,2,2];
		//prizeactivetime = [0,0,0];
		pubper = 1;
		subper = 120;
		luckyper = 5;
		lastmoney = 0;
		lastper = 1;
		sellkeyper = 70;
		sellper = 5;
		sellupper = 50;
		//leveldata = [0,0,0];

        //onceOuttime = 24 hours;
        onceOuttime = 10 seconds;//test
        //keyconfig.basekeynum = 5000 ether;//4500
	    //keyconfig.basekeysub = 5000 ether;//500
	    keyconfig.usedkeynum = 1;//0
        keyconfig.startprice = 100 szabo;//
        keyconfig.keyprice   = 100 szabo;//
        //keyconfig.startbasekeynum = 5000 ether;//4500
        
        keyconfig.basekeynum = 5000 ether;//4500 test
	    keyconfig.basekeysub = 5000 ether;//500 test
	    keyconfig.startbasekeynum = 5000 ether;//4500 test
	    
        per = 5;
        /*
        prizelevelsuns = [20,30,50];
		prizelevelmans = [100,300,800];
		prizelevelsunsday = [1,3,5];
		prizelevelmoneyday = [9 ether,29 ether,49 ether];*/
		//lasttime = 8 hours;
		lasttime = 60 seconds;//test
		//sysday = 1 days;
		sysday = 180 seconds;//test
		//cksysday = 8 hours;//test
		cksysday = 0;
        version = '1.01';
		balances[this] = _totalSupply;
		emit Transfer(address(0), this, _totalSupply);
	}

	function balanceOf(address tokenOwner) public view returns(uint balance) {
		return balances[tokenOwner];
	}
	
	function showlvzhou(address user) public view returns(
	    uint total,
	    uint mykeyid,
	    uint mytzs,
	    //uint daysget,
	    uint prizeget,
	    uint mycans,
	    uint mykeynum,
	    uint keyprices,
	    uint ltkeynum,
	    uint tagss,
	    uint mytags,
	    uint sruns,
	    uint srunscan
	    
	){
	    total = tg[tags].ethnum;//0
	    mykeyid = my[user].mykeysid;//1
	    mytzs = my[user].tzs;//2
	    //daysget = my[user].tzs*per/1000;//3
	    prizeget = my[user].prizecount;//3
	    mycans = getcanuse(user);//4
	    mykeynum = balanceOf(user);//5
	    keyprices = getbuyprice();//6
	    ltkeynum = leftnum();//7
	    tagss = tags;//8
	    mytags = my[user].systemtag;//9
	    sruns = myrun[user].eths;//10
	    srunscan = getcanuserun(user);//11
	}
	function showteam(address user) public view returns(
	    uint daysnum,//0
	    uint dayseth,//1
	    uint daysnum1,//2
	    uint dayseth1,//3
	    uint man1,//4
	    uint man2,//5
	    uint man3,//6
	    uint man4,//7
	    uint man5,//8
	    uint man6,//9
	    uint man7//10
	){
	    uint d = gettoday();
	    uint t = getyestoday();
	    daysnum = my[user].mysunsdaynum[d];//5
	    dayseth = my[user].myprizedayget[d];//6
	    daysnum1 = my[user].mysunsdaynum[t];//5
	    dayseth1 = my[user].myprizedayget[t];//6
	    
	    man1 = suns[user].t1;//2
	    man2 = suns[user].t2;//3
	    man3 = suns[user].t3;//4
	    man4 = suns[user].t4;//4
	    man5 = suns[user].t5;//4
	    man6 = suns[user].t6;//4
	    man7 = suns[user].t7;//4
	}
	
	
	function showethconf(address user) public view returns(
	    uint todaymyeth,
	    uint todaymydraw,
	    uint todaysyseth,
	    uint todaysysdraw,
	    uint yestodaymyeth,
	    uint yestodaymydraw,
	    uint yestodaysyseth,
	    uint yestodaysysdraw
	){
	    uint d = gettoday();
		uint t = getyestoday();
		todaymyeth = my[user].daysusereths[d];
		todaymydraw = my[user].daysuserdraws[d];
		todaysyseth = dayseths[d];
		todaysysdraw = daysysdraws[d];
		yestodaymyeth = my[user].daysusereths[t];
		yestodaymydraw = my[user].daysuserdraws[t];
		yestodaysyseth = dayseths[t];
		yestodaysysdraw = daysysdraws[t];
		
	}
	function showprize(address user) public view returns(
	    uint lttime,//0
	    uint ltmoney,//1
	    address ltaddr,//2
	    uint lastmoneys,//3
	    address lastuser,//4
	    uint luckymoney,//5
	    address luckyuser,//6
	    uint luckyget//7
	){
	    if(timedata.length > 0) {
	       lttime = timedata[timedata.length - 1];//1 
	    }else{
	        lttime = 0;
	    }
	    if(moneydata.length > 0) {
	       ltmoney = moneydata[moneydata.length - 1];//2 
	    }else{
	        ltmoney = 0;
	    }
	    if(mansdata.length > 0) {
	        ltaddr = mansdata[mansdata.length - 1];//3
	    }else{
	        ltaddr = address(0);
	    }
	    lastmoneys = lastmoney;
	    lastuser = getlastuser();
	    uint d = getyestoday();
	    if(dayseths[d] > 0) {
	        luckymoney = dayseths[d]*luckyper/1000;
	        luckyuser = getluckyuser();
	        luckyget = my[user].daysuserlucky[d];
	    }
	    
	}
	function interuser(address user) public view returns(
	    uint skeyid,
	    uint stzs,
	    uint seths,
	    uint sethcan,
	    uint sruns,
	    uint srunscan,
	    uint skeynum
	    
	){
	    skeyid = my[user].mykeysid;//0
	    stzs = my[user].tzs;//1
	    seths = mycan[user].eths;//2
	    sethcan = getcanuse(user);//3
	    sruns = myrun[user].eths;//4
	    srunscan = getcanuserun(user);//5
	    skeynum = balances[user];//6
	}
	
	function showworker() public view returns(
	    uint w0,
	    uint w1,
	    uint w2,
	    uint w3,
	    uint w4,
	    uint w5,
	    uint w6,
	    uint w7,
	    uint w8
	){
	    w0 = worksdata[0];
	    w1 = worksdata[1];
	    w2 = worksdata[2];
	    w3 = worksdata[3];
	    w4 = worksdata[4];
	    w5 = worksdata[5];
	    w6 = worksdata[6];
	    w7 = worksdata[7];
	    w8 = worksdata[8];
	}
	
	function addmoney(address _addr, uint256 _money, uint _day) private returns(bool){
		mycan[_addr].eths += _money;
		mycan[_addr].len++;
		//mycan[_addr].amounts.push(_amount);
		mycan[_addr].moneys.push(_money);
		if(_day > 0){
		    mycan[_addr].times.push(0);
		}else{
		    mycan[_addr].times.push(now);
		}
		
	}
	function reducemoney(address _addr, uint256 _money) private returns(bool){
	    if(mycan[_addr].eths >= _money && my[_addr].tzs >= _money) {
	        mycan[_addr].used += _money;
    		mycan[_addr].eths -= _money;
    		my[_addr].tzs -= _money;
    		return(true);
	    }else{
	        return(false);
	    }
		
	}
	function addrunmoney(address _addr, uint256 _money, uint _day) private {
		myrun[_addr].eths += _money;
		myrun[_addr].len++;
		//myrun[_addr].amounts.push(_amount);
		myrun[_addr].moneys.push(_money);
		if(_day > 0){
		    myrun[_addr].times.push(0);
		}else{
		    myrun[_addr].times.push(now);
		}
	}
	function reducerunmoney(address _addr, uint256 _money) private {
		myrun[_addr].eths -= _money;
		myrun[_addr].used += _money;
	}

	function getcanuse(address user) public view returns(uint _left) {
		if(mycan[user].len > 0) {
		    for(uint i = 0; i < mycan[user].len; i++) {
    			uint stime = mycan[user].times[i];
    			if(stime == 0) {
    			    _left += mycan[user].moneys[i];
    			}else{
    			    if(now - stime >= onceOuttime) {
    			        uint smoney = mycan[user].moneys[i] * ((now - stime)/onceOuttime) * per/ 1000;
    			        if(smoney <= mycan[user].moneys[i]){
    			            _left += smoney;
    			        }else{
    			            _left += mycan[user].moneys[i];
    			        }
    			    }
    			    
    			}
    		}
		}
		_left += mycan[user].adds;
		if(_left < mycan[user].used) {
			return(0);
		}
		if(_left > mycan[user].eths) {
			return(mycan[user].eths);
		}
		return(_left - mycan[user].used);
		
	}
	function getcanuserun(address user) public view returns(uint _left) {
		if(myrun[user].len > 0) {
		    for(uint i = 0; i < myrun[user].len; i++) {
    			uint stime = myrun[user].times[i];
    			if(stime == 0) {
    			    _left += myrun[user].moneys[i];
    			}else{
    			    if(now - stime >= onceOuttime) {
    			        uint smoney = myrun[user].moneys[i] * ((now - stime)/onceOuttime) * per/ 1000;
    			        if(smoney <= myrun[user].moneys[i]){
    			            _left += smoney;
    			        }else{
    			            _left += myrun[user].moneys[i];
    			        }
    			    }
    			}
    		}
		}
		if(_left < myrun[user].used) {
			return(0);
		}
		if(_left > myrun[user].eths) {
			return(myrun[user].eths);
		}
		return(_left - myrun[user].used);
	}

	function _transfer(address from, address to, uint tokens) private{
		require(!frozenAccount[from]);
		require(!frozenAccount[to]);
		require(actived == true);
		require(from != to);
        require(to != 0x0);
        require(balances[from] >= tokens);
        require(balances[to] + tokens > balances[to]);
        uint previousBalances = balances[from] + balances[to];
        balances[from] -= tokens;
        balances[to] += tokens;
        assert(balances[from] + balances[to] == previousBalances);
        
		emit Transfer(from, to, tokens);
	}
    function transfer(address _to, uint256 _value) public returns(bool){
        _transfer(msg.sender, _to, _value);
        return(true);
    }
    function activekey() public returns(bool) {
        require(actived == true);
	    address addr = msg.sender;
        uint keyval = 1 ether;
        require(balances[addr] >= keyval);
        require(my[addr].mykeysid < 1);
        if(balances[addr] == keyval) {
            keyval -= 1;
        }
        address top = my[addr].fromaddr;
        uint kid;
        uint topkeyid = my[top].mykeysid;
        
        if(top != address(0) && topkeyid > 0) {
            if(topkeyid < defkeynum) {
                kid = currentkeyid;
                currentkeyid++;
            }else{
                uint d0;
                uint d1;
                uint d2;
                uint ld;
                (d0, d1, d2, ld) = chknodenumber(topkeyid);
                uint nodeid = d0*defkeynum + d1*defkeynum/10 + d2*defkeynum/100;
                if(cuid[nodeid] <= topkeyid) {
                    cuid[nodeid] = topkeyid + 1;
                }
                kid = cuid[nodeid];
                cuid[nodeid]++;
                
            }
            //kid = topkeyid + 1;
            
        }else{
           
            if(currentkeyid == initkeyid) {
                tnode[addr] = tndata(0, defkeynum,now,1 ether);
                /*
                nodetop[0].cid = defkeynum;
                nodetop[0].fdata = tndata(0,defkeynum,now,100 ether);
                nodetop[0].per = defworkper;*/
            }
            kid = currentkeyid;
            currentkeyid++;
            
        }
        
        
        require(myidkeys[kid] == address(0));
        my[addr].mykeysid = kid;
	    myidkeys[kid] = addr;
	    balances[addr] -= keyval;
	    balances[owner] += keyval;
	    emit Transfer(addr, owner, keyval);
	    return(true);
    }
    function setnodemoney(address addr, uint amount) private returns(bool){
	    uint mykid = my[addr].mykeysid;
	    if(mykid > defkeynum) {
	        uint d0;
            uint d1;
            uint d2;
            uint ld;
            (d0, d1, d2, ld) = chknodenumber(mykid);
            if(ld < 1) {
                uint nodeid3 = d0*defkeynum + d1*defkeynum/10 + d2*defkeynum/100;//1110000000
                uint nodeid2 = d0*defkeynum + d1*defkeynum/10;//110000000
                uint nodeid1 = d0*defkeynum;//1000000000
                if(d1 == 0 && d2 == 0 && d0 > 0 && myidkeys[nodeid1] != address(0)) {
                    addrunmoney(myidkeys[nodeid1], amount*defworkper2[0]/100,0);
                }
                else if(d2 == 0 && d1 > 0 && d0 > 0 && myidkeys[nodeid1] != address(0) && myidkeys[nodeid2] != address(0)) {
                    addrunmoney(myidkeys[nodeid1], amount*defworkper[0]/100,0);
                    addrunmoney(myidkeys[nodeid2], amount*defworkper2[1]/100,0);
                }
                else if(d2 > 0 && d1 > 0 && d0 > 0 && myidkeys[nodeid1] != address(0) && myidkeys[nodeid2] != address(0) && myidkeys[nodeid3] != address(0)) {
                    addrunmoney(myidkeys[nodeid1], amount*defworkper[0]/100,0);
                    addrunmoney(myidkeys[nodeid2], amount*defworkper[1]/100,0);
                    addrunmoney(myidkeys[nodeid3], amount*defworkper[2]/100,0);
                }
            }
	    }
	}
    function getnodeparam(address user) public view returns(uint ld,uint cid,uint nodeid){
        uint keyid = my[user].mykeysid;
        cid = tnode[user].cid;
        uint d0;
        uint d1;
        uint d2;
        if(keyid == initkeyid) {
            d0 = 1;
            d1 = 0;
            d2 = 0;
            ld = 1;
            nodeid = (tnode[user].cid + 1)*defkeynum;
        }
        if(keyid >= defkeynum){
            (d0, d1, d2, ld) = chknodenumber(keyid);
            if(ld > 0) {
                if(d1 < 1) {
                    nodeid = d0*defkeynum + (tnode[user].cid + 1)*defkeynum/10;
                }else{
                   nodeid = d0*defkeynum + d1*defkeynum/10 + (tnode[user].cid + 1)*defkeynum/100; 
                }
            }
        }
    }
    function gettnode(address addr) public view returns(uint cids, uint nid, uint t, uint m){
        cids = tnode[addr].cid;
        nid = tnode[addr].sellid;
        t = tnode[addr].selltime;
        m = tnode[addr].sellmoney;
    }
    function sellnode(uint money) public returns(bool){
        address user = msg.sender;
        (uint ld,uint cid, uint nodeid) = getnodeparam(user);
        require(nodeid > 0 && ld > 0 && ld < 3 && cid < 9);
        tnode[user] = tndata(cid, nodeid,now,money);
    }
    function getbuynode(address user) public view returns(uint nodeid,uint money) {
        address top = my[user].fromaddr;
        if(top != address(0) && my[top].mykeysid > 0) {
            uint ld;
            uint cid;
            (ld,cid, nodeid) = getnodeparam(top);
            if(ld > 0 && tnode[top].selltime > 0) {
                money = tnode[top].sellmoney;
            }
        }
    }
    function buynode(uint keyid) public payable returns(bool) {
        require(myidkeys[keyid] == address(0));
        //tndata tn = tnode[user];
        address addr = msg.sender;
        require(my[addr].mykeysid < 1);
        address top = my[addr].fromaddr;
        uint amount = msg.value;
        require(top != address(0));
        require(my[top].mykeysid > 0);
        require(tnode[top].selltime > 1);
        require(amount >= tnode[top].sellmoney);
        require(addr.balance > amount);
        
        uint usekey = (amount*1 ether)/(10*keyconfig.keyprice);
	    require(usekey <= balances[addr]);
	    
	    balances[addr] -= usekey;
		balances[owner] += usekey;
		emit Transfer(addr, owner, usekey);
		
		
		my[addr].mykeysid = keyid;
	    myidkeys[keyid] = addr;
	    
        top.transfer(amount);
        tnode[top].cid++;
        tnode[top].selltime = 1;
        
    }
    function chknodenumber(uint keyid) public view returns(uint d0, uint d1, uint d2, uint ld){
        //uint keyid = my[_addr].mykeysid;
        if(keyid >= defkeynum){
            //topkeyid 9928
            uint n = keyid/defkeynum;//9
            uint ln = keyid - (defkeynum*n);// 928
            uint k10 = defkeynum/10;//100
            uint k100 = defkeynum/100;//10
            //uint k1000 = defkeynum/1000;
            
            if(ln < k10){//is root
                d0 = n;
                d1 = 0;
                d2 = 0;
                if(ln < 1) {
                    ld = 1;
                }else{
                    ld = 0;
                }
            }else{
                uint nn = ln/k10;//9
                uint ln2 = ln - nn*k10;//28
                if(ln2 < k100) {
                    d0 = n;
                    d1 = nn;
                    d2 = 0;
                    if(ln2 < 1) {
                        ld = 2;
                    }else{
                        ld = 0;
                    }
                }else{
                    uint nnn = ln2/k100;//2
                    uint ln3 = ln2 - nnn*k100;//8
                    d0 = n;
                    d1 = nn;
                    d2 = nnn;
                    if(ln3 < 1) {
                        ld = 3;
                    }else{
                        ld = 0;
                    }
                }
                
            }
        }else{
            return(0,0,0,0);
        }
    }
	function getfrom(address _addr) public view returns(address) {
		return(my[_addr].fromaddr);
	}
    function gettopid(address addr) public view returns(uint) {
        address topaddr = my[addr].fromaddr;
        if(topaddr == address(0)) {
            return(0);
        }
        uint keyid = my[topaddr].mykeysid;
        if(keyid > 0 && myidkeys[keyid] == topaddr) {
            return(keyid);
        }else{
            return(0);
        }
    }
    
	function approve(address spender, uint tokens) public returns(bool success) {
	    require(actived == true);
		allowed[msg.sender][spender] = tokens;
		emit Approval(msg.sender, spender, tokens);
		return true;
	}

	function transferFrom(address from, address to, uint tokens) public returns(bool success) {
		require(actived == true);
		require(!frozenAccount[from]);
		require(!frozenAccount[to]);
		balances[from] -= tokens;
		allowed[from][msg.sender] -= tokens;
		balances[to] += tokens;
		emit Transfer(from, to, tokens);
		return true;
	}

	function allowance(address tokenOwner, address spender) public view returns(uint remaining) {
		return allowed[tokenOwner][spender];
	}

	function setactive(bool t) public onlyOwner{
		actived = t;
	}
	
	function getyestoday() public view returns(uint d) {
	    uint today = gettoday();
	    d = today - sysday;
	}
	
	function gettoday() public view returns(uint d) {
	    uint n = now;
	    d = n - n%sysday - cksysday;
	}
	function totalSupply() public view returns(uint) {
		return(_totalSupply - balances[this]);
	}

	function getbuyprice() public view returns(uint kp) {
        if(keyconfig.usedkeynum == keyconfig.basekeynum) {
            kp = keyconfig.keyprice + keyconfig.startprice;
        }else{
            kp = keyconfig.keyprice;
        }
	    
	}
	function leftnum() public view returns(uint num) {
	    if(keyconfig.usedkeynum == keyconfig.basekeynum) {
	        num = keyconfig.basekeynum + keyconfig.basekeysub;
	    }else{
	        
	        num = keyconfig.basekeynum - keyconfig.usedkeynum + 1;
	    }
	}

	
	
	function getfromsun(address addr, uint money, uint amount) private returns(bool){
	    address f1 = my[addr].fromaddr;
	    uint d = gettoday();
	    if(f1 != address(0) && f1 != addr) {
	        addrunmoney(f1, (money*pers[0])/100, 0);
	    	my[f1].myprizedayget[d] += amount;
	    	setnodemoney(addr, amount);
	    	
	    	if(my[f1].mykeysid > defkeynum) {
	    	    worksdata[((my[f1].mykeysid/defkeynum) - 1)] += amount;
	    	}
	    	address f2 = my[f1].fromaddr;
	    	if(f2 != address(0) && f2 != addr) {
    	        if(suns[f2].t1 > 1){
    	           addrunmoney(f2, (money*pers[1])/100, 0);
    	        }
    	    	my[f2].myprizedayget[d] += amount;
    	    	address f3 = my[f2].fromaddr;
    	    	if(f3 != address(0) && f3 != addr) {
        	        if(suns[f3].t1 > 2){
        	            addrunmoney(f3, (money*pers[2])/100, 0);
        	        }
        	    	my[f3].myprizedayget[d] += amount;
        	    	address f4 = my[f3].fromaddr;
        	    	if(f4 != address(0) && f4 != addr) {
            	        if(suns[f4].t1 > 3){
            	            addrunmoney(f4,(money*pers[3])/100, 0);
            	        }
            	    	my[f4].myprizedayget[d] += amount;
            	    	address f5 = my[f4].fromaddr;
            	    	if(f5 != address(0) && f5 != addr) {
                	        if(suns[f5].t1 > 4){
                	            addrunmoney(f5,  (money*pers[4])/100, 0);
                	        }
                	    	my[f5].myprizedayget[d] += amount;
                	    	address f6 = my[f5].fromaddr;
                	    	if(f6 != address(0) && f6 != addr) {
                    	        if(suns[f6].t1 > 5){
                    	            addrunmoney(f6,  (money*pers[5])/100, 0);
                    	        }
                    	    	my[f6].myprizedayget[d] += amount;
                    	    	address f7 = my[f6].fromaddr;
                    	    	if(f7 != address(0) && f7 != addr) {
                        	        if(suns[f7].t1 > 6){
                        	            addrunmoney(f7, (money*pers[6])/100, 0);
                        	        }
                        	    	my[f6].myprizedayget[d] += amount;
                        	    }
                    	    }
                	    }
            	    }
        	    }
    	    }	
	    }
	    
	}
	function setpubprize(uint sendmoney) private returns(bool) {
	    uint len = moneydata.length;
	    if(len > 0) {
	        uint all = 0;
	        uint start = 0;
	        uint m = 0;
	        if(len > 3) {
	            start = len - 3;
	        }
	        for(uint i = start; i < len; i++) {
	            all += moneydata[i];
	        }
	        //uint sendmoney = amount*pubper/100;
	        for(; start < len; start++) {
	            m = (sendmoney*moneydata[start])/all;
	            addrunmoney(mansdata[start], m, 0);
	            my[mansdata[start]].prizecount += m;
	        }
	    }
	    return(true);
	}
	function getluckyuser() public view returns(address addr) {
	    if(moneydata.length > 0){
	        uint d = gettoday();
    	    uint t = getyestoday();
    	    uint maxmoney = 1 ether;
    	    for(uint i = 0; i < moneydata.length; i++) {
    	        if(timedata[i] > t && timedata[i] < d && moneydata[i] >= maxmoney) {
    	            maxmoney = moneydata[i];
    	            addr = mansdata[i];
    	        }
    	    }
	    }
	    
	}
	function getluckyprize() onlySystemStart() public returns(bool) {
	    address user = msg.sender;
	    require(user != address(0));
	    require(user == getluckyuser());
	    uint d = getyestoday();
	    require(my[user].daysusereths[d] > 0);
	    require(my[user].daysuserlucky[d] == 0);
	    uint money = dayseths[d]*luckyper/1000;
	    addrunmoney(user, money, 100);
	    my[user].daysuserlucky[d] += money;
	    my[user].prizecount += money;
	}
	
	function runtoeth(uint amount) onlySystemStart() public returns(bool) {
	    address user = msg.sender;
	    uint usekey = (amount*runper*1 ether)/(100*keyconfig.keyprice);
	    require(usekey < balances[user]);
	    //uint mu = getcanuse(user);
	    require(getcanuserun(user) >= amount);
	    require(my[user].tzs > getcanuse(user));
	    require(amount <= my[user].tzs - getcanuse(user));
	    balances[user] -= usekey;
		balances[owner] += usekey;
		emit Transfer(user, owner, usekey);
	    reducerunmoney(user, amount);
	    mycan[user].adds += amount;
	    //addrunmoney(user, amount, 100);
	}
	function getlastuser() public view returns(address user) {
	    if(timedata.length > 0) {
    	    if(lastmoney > 0 && now - timedata[timedata.length - 1] > lasttime) {
    	        user = mansdata[mansdata.length - 1];
    	    }
	    } 
	}
	function getlastmoney() public returns(bool) {
	    require(actived == true);
	    address user = getlastuser();
	    require(user != address(0));
	    require(user == msg.sender);
	    require(lastmoney > 0);
	    require(lastmoney <= address(this).balance/2);
	    user.transfer(lastmoney);
	    lastmoney = 0;
	}
	
	function buy(uint keyid) onlySystemStart() public payable returns(bool) {
		address user = msg.sender;
		require(msg.value > 0);
        uint amount = msg.value;
        require(amount >= 100 finney);
		//require(amount%(100 finney) == 0);
		require(my[user].usereths <= 1000 ether);
		uint money = amount*3;
		uint d = gettoday();
		//uint t = getyestoday();
		bool ifadd = false;
		//if has no top
		
		if(my[user].fromaddr == address(0)) {
		    address topaddr = myidkeys[keyid];
		    if(keyid > 0 && topaddr != address(0) && topaddr != user) {
		        my[user].fromaddr = topaddr;
		        
    		    suns[topaddr].t1++;
    		    my[topaddr].mysunsdaynum[d]++;
    		    //mysunmoney[topaddr] += amount;
    		    
    		    address top2 = my[topaddr].fromaddr;
    		    if(top2 != address(0) && top2 != user){
    		        suns[top2].t2++;
    		        
    		        address top3 = my[top2].fromaddr;
        		    if(top3 != address(0) && top3 != user){
        		        suns[top3].t3++;
        		        address top4 = my[top3].fromaddr;
            		    if(top4 != address(0) && top4 != user){
            		        suns[top4].t4++;
            		        address top5 = my[top4].fromaddr;
                		    if(top5 != address(0) && top5 != user){
                		        suns[top5].t5++;
                		        address top6 = my[top5].fromaddr;
                    		    if(top6 != address(0) && top6 != user){
                    		        suns[top6].t6++;
                    		        address top7 = my[top6].fromaddr;
                        		    if(top7 != address(0) && top7 != user){
                        		        ++suns[top7].t7;
                        		    }
                    		    }
                    		    
                		    }
            		    }
        		    }
    		    }
    		    
    		    ifadd = true;
		    }
		}else{
		    ifadd = true;
		    //mysunmoney[my[user].fromaddr] += amount;
		}
		
		if(ifadd == true) {
		    money = amount*4;
		    getfromsun(user, money, amount);
		}
		setpubprize(amount*pubper/100);
		mansdata.push(user);
		moneydata.push(amount);
		timedata.push(now);
		
	    daysgeteths[d] += money;
	    dayseths[d] += amount;
	    tg[tags].sysethnum += amount;
		tg[tags].userethnum += amount;
		my[user].daysusereths[d] += amount;
		
		my[user].tzs += money;
		lastmoney += amount*lastper/100;
		tg[tags].ethnum += money;
		my[user].usereths += amount;
		addmoney(user, money, 0);
		return(true);
	}
	
	function buykey(uint buynum) onlySystemStart() public payable returns(bool){
	    uint money = msg.value;
	    address user = msg.sender;
	    require(buynum >= 1 ether);
	    require(buynum%(1 ether) == 0);
	    require(keyconfig.usedkeynum + buynum -1 <= keyconfig.basekeynum);
	    require(money >= keyconfig.keyprice);
	    require(user.balance >= money);
	    require(mycan[user].eths > 0);
	    require(((keyconfig.keyprice*buynum)/1 ether) == money);
	    
	    my[user].mykeyeths += money;
	    tg[tags].sysethnum += money;
	    tg[tags].syskeynum += buynum;
		if(keyconfig.usedkeynum + buynum -1 == keyconfig.basekeynum) {
		    keyconfig.basekeynum = keyconfig.basekeynum + keyconfig.basekeysub;
	        keyconfig.usedkeynum = 1;
	        keyconfig.keyprice = keyconfig.keyprice + keyconfig.startprice;
	    }else{
	        keyconfig.usedkeynum += buynum;
	    }
	    _transfer(this, user, buynum);
	}
	function keybuy(uint m) onlySystemStart() public returns(bool) {
	    address user = msg.sender;
	    require(m >= 1 ether);
	    require(balances[user] >= m);
	    uint amount = (m*keyconfig.keyprice)/(1 ether);
	    require(amount >= 100 finney);
	    uint money = amount*3;
	    
		//uint d = gettoday();
		//uint t = getyestoday();
		if(my[user].fromaddr != address(0)) {
		    money = amount*4;
		}
		tg[tags].ethnum += money;
		my[user].tzs += money;
		my[user].usereths += amount;
		addmoney(user, money, 0);
		balances[user] -= m;
	    balances[owner] += m;
	    
		emit Transfer(user, owner, m);
	    return(true);
	}
	function ethbuy(uint amount) onlySystemStart() public returns(bool) {
	    address user = msg.sender;
	    uint canmoney = getcanuse(user);
	    require(canmoney >= amount);
	    //require(amount >= 1 ether);
	    //require(amount%(1 ether) == 0);
	    require(amount >= 100 finney);
	    
	    require(mycan[user].eths >= amount);
	    require(my[user].tzs >= amount);
	    uint money = amount*3;
		//uint d = gettoday();
		//uint t = getyestoday();
		if(my[user].fromaddr == address(0)) {
		    money = amount*2;
		}
		addmoney(user, money, 0);
		my[user].tzs += money;
		mycan[user].used += amount;
		my[user].usereths += amount;
	    tg[tags].ethnum += money;
	    
	    return(true);
	}
	
	function charge() public payable returns(bool) {
		return(true);
	}
	
	function() payable public {
		buy(0);
	}
	
	function sell(uint256 amount) onlySystemStart() public returns(bool success) {
		address user = msg.sender;
		uint d = gettoday();
		uint t = getyestoday();
		uint256 canuse = getcanuse(user);
		require(canuse >= amount);
		require(address(this).balance > amount);
		uint p = sellper;
		if((daysysdraws[d] + amount) > (dayseths[d] + dayseths[t])){
		    p = sellupper;
		}
		uint useper = (amount*p*(1 ether))/(keyconfig.keyprice*100);
		
		require(balances[user] >= useper);
		require(reducemoney(user, amount) == true);
		
		my[user].userethsused += amount;
		tg[tags].userethnumused += amount;
		my[user].daysuserdraws[d] += amount;
		daysysdraws[d] += amount;
		//_transfer(user, owner, useper);
		balances[user] -= useper;
	    balances[owner] += useper;
		emit Transfer(user, owner, useper);
		user.transfer(amount);
		
		setend();
		return(true);
	}
	
	function sellkey(uint256 amount) onlySystemStart() public returns(bool) {
	    address user = msg.sender;
		require(balances[user] >= amount);
		require(keyconfig.keyprice >= keyconfig.startprice*10);
		uint d = gettoday();
		uint t = getyestoday();
		
		uint money = (keyconfig.keyprice*amount*sellkeyper)/(100 ether);
		if((daysysdraws[d] + money) > dayseths[t] + dayseths[d]){
		    money = (keyconfig.keyprice*amount)/(2 ether);
		}
		require(address(this).balance > money);
		//require(tg[tags].userethnumused + money <= tg[tags].userethnum/2);
		my[user].userethsused += money;
        tg[tags].userethnumused += money;
        daysysdraws[d] += money;
    	balances[user] -= amount;
	    balances[owner] += amount;
		emit Transfer(user, owner, amount);
		
    	user.transfer(money);
    	setend();
	}

	
	
	function setend() private returns(bool) {
	    if(tg[tags].userethnum > 0 && tg[tags].userethnumused > tg[tags].userethnum/2) {
	        tags++;
	        keyconfig.keyprice = keyconfig.startprice;
	        keyconfig.basekeynum = keyconfig.startbasekeynum;
	        keyconfig.usedkeynum = 1;
	        return(true);
	    }
	}
	function ended(bool ifget) public returns(bool) {
	    require(actived == true);
	    address user = msg.sender;
	    require(my[user].systemtag < tags);
	    require(!frozenAccount[user]);
	    if(ifget == true) {
    	    my[user].prizecount = 1;
    	    my[user].tzs = 1;
    	    my[user].prizecount = 1;
    		mycan[user].eths = 1;
    	    mycan[user].used = 1;
    	    if(mycan[user].len > 0) {
    	        delete mycan[user].times;
    	        //delete mycan[user].amounts;
    	        delete mycan[user].moneys;
    	    }
    	    mycan[user].len = 0;
    	    if(my[user].usereths/2 > my[user].userethsused) {
    	        uint money = my[user].usereths/2 - my[user].userethsused;
	            require(address(this).balance > money);
    	        user.transfer(money);
    	    }
    	    my[user].usereths = 1;
    	    my[user].userethsused = 1;
    	    
	    }else{
	        uint amount = my[user].usereths - my[user].userethsused;
	        tg[tags].ethnum += my[user].tzs;
	        tg[tags].sysethnum += amount;
		    tg[tags].userethnum += amount;
	    }
	    my[user].systemtag = tags;
	}
	
	function setmangeruser(address user, bool t) public onlyOwner{
	    mangeruser[user] = t;
	}
	function freezeAccount(address target, bool freeze) public{
	    require(actived == true);
	    require(mangeruser[msg.sender] == true);
		frozenAccount[target] = freeze;
		emit FrozenFunds(target, freeze);
	}
	
	
	function transto(address _to, uint money) public onlyOwner{
	    require(actived == true);
	    require(_to != 0x0);
    	require(balances[this] >= money);
    	balances[_to] += money;
    	balances[this] -= money;
		emit Transfer(this, _to, money);
	}
    function setper(uint onceOuttimes,uint8 perss,uint runpers,uint pubpers,uint subpers,uint luckypers,uint lastpers,uint sellkeypers,uint sellpers,uint selluppers,uint lasttimes,uint sysdays,uint sellupperss) public onlyOwner{
	    onceOuttime = onceOuttimes;
	    per = perss;
	    runper = runpers;
	    pubper = pubpers;
	    subper = subpers;
	    luckyper = luckypers;
	    lastper = lastpers;
	    sellkeyper = sellkeypers;
	    sellper = sellpers;
	    sellupper = selluppers;
	    lasttime = lasttimes;//9
	    sysday = sysdays;
	    sellupper = sellupperss;
	}
	function setnotice(
	    string versions,
	    string downurls,
	    string noticess
	) public returns(bool){
	    require(actived == true);
	    require(mangeruser[msg.sender] == true);
	    version = versions;
	    downurl = downurls;
	    notices = noticess;
	}
	function getnotice() public view returns(
	    string versions,
	    string downurls,
	    string noticess,
	    bool isadm
	){
	    versions = version;
	    downurls = downurl;
	    noticess = notices;
	    isadm = mangeruser[msg.sender];
	}
	
}

    Contract ABI  
[{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"showethconf","outputs":[{"name":"todaymyeth","type":"uint256"},{"name":"todaymydraw","type":"uint256"},{"name":"todaysyseth","type":"uint256"},{"name":"todaysysdraw","type":"uint256"},{"name":"yestodaymyeth","type":"uint256"},{"name":"yestodaymydraw","type":"uint256"},{"name":"yestodaysyseth","type":"uint256"},{"name":"yestodaysysdraw","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"money","type":"uint256"}],"name":"transto","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"money","type":"uint256"}],"name":"sellnode","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"keyid","type":"uint256"}],"name":"buynode","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"getluckyuser","outputs":[{"name":"addr","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"runtoeth","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"cuid","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hasusednum","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lasttime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"keyid","type":"uint256"}],"name":"chknodenumber","outputs":[{"name":"d0","type":"uint256"},{"name":"d1","type":"uint256"},{"name":"d2","type":"uint256"},{"name":"ld","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"timedata","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"getcanuse","outputs":[{"name":"_left","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gettoday","outputs":[{"name":"d","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"},{"name":"t","type":"bool"}],"name":"setmangeruser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"getlastmoney","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"myidkeys","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"luckyper","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cksysday","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"ethbuy","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"charge","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"getluckyprize","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"gettnode","outputs":[{"name":"cids","type":"uint256"},{"name":"nid","type":"uint256"},{"name":"t","type":"uint256"},{"name":"m","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"worksdata","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pubper","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"dayseths","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"showteam","outputs":[{"name":"daysnum","type":"uint256"},{"name":"dayseth","type":"uint256"},{"name":"daysnum1","type":"uint256"},{"name":"dayseth1","type":"uint256"},{"name":"man1","type":"uint256"},{"name":"man2","type":"uint256"},{"name":"man3","type":"uint256"},{"name":"man4","type":"uint256"},{"name":"man5","type":"uint256"},{"name":"man6","type":"uint256"},{"name":"man7","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastper","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"daysysdraws","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getbuyprice","outputs":[{"name":"kp","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"showprize","outputs":[{"name":"lttime","type":"uint256"},{"name":"ltmoney","type":"uint256"},{"name":"ltaddr","type":"address"},{"name":"lastmoneys","type":"uint256"},{"name":"lastuser","type":"address"},{"name":"luckymoney","type":"uint256"},{"name":"luckyuser","type":"address"},{"name":"luckyget","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"moneydata","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastmoney","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"interuser","outputs":[{"name":"skeyid","type":"uint256"},{"name":"stzs","type":"uint256"},{"name":"seths","type":"uint256"},{"name":"sethcan","type":"uint256"},{"name":"sruns","type":"uint256"},{"name":"srunscan","type":"uint256"},{"name":"skeynum","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sellupper","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"sellkeyper","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"sysday","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"per","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"showworker","outputs":[{"name":"w0","type":"uint256"},{"name":"w1","type":"uint256"},{"name":"w2","type":"uint256"},{"name":"w3","type":"uint256"},{"name":"w4","type":"uint256"},{"name":"w5","type":"uint256"},{"name":"w6","type":"uint256"},{"name":"w7","type":"uint256"},{"name":"w8","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"getcanuserun","outputs":[{"name":"_left","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"sellkey","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"showlvzhou","outputs":[{"name":"total","type":"uint256"},{"name":"mykeyid","type":"uint256"},{"name":"mytzs","type":"uint256"},{"name":"prizeget","type":"uint256"},{"name":"mycans","type":"uint256"},{"name":"mykeynum","type":"uint256"},{"name":"keyprices","type":"uint256"},{"name":"ltkeynum","type":"uint256"},{"name":"tagss","type":"uint256"},{"name":"mytags","type":"uint256"},{"name":"sruns","type":"uint256"},{"name":"srunscan","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"buynum","type":"uint256"}],"name":"buykey","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"activekey","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"gettopid","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"runper","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"subper","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"sellper","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getnotice","outputs":[{"name":"versions","type":"string"},{"name":"downurls","type":"string"},{"name":"noticess","type":"string"},{"name":"isadm","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"leftnum","outputs":[{"name":"num","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"versions","type":"string"},{"name":"downurls","type":"string"},{"name":"noticess","type":"string"}],"name":"setnotice","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"pers","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"m","type":"uint256"}],"name":"keybuy","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getlastuser","outputs":[{"name":"user","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"initkeyid","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"frozenAccount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"getnodeparam","outputs":[{"name":"ld","type":"uint256"},{"name":"cid","type":"uint256"},{"name":"nodeid","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentkeyid","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"getbuynode","outputs":[{"name":"nodeid","type":"uint256"},{"name":"money","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getyestoday","outputs":[{"name":"d","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"keyid","type":"uint256"}],"name":"buy","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tags","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"mansdata","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"ifget","type":"bool"}],"name":"ended","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"sell","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"defkeynum","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"freeze","type":"bool"}],"name":"freezeAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"actived","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"getfrom","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"onceOuttimes","type":"uint256"},{"name":"perss","type":"uint8"},{"name":"runpers","type":"uint256"},{"name":"pubpers","type":"uint256"},{"name":"subpers","type":"uint256"},{"name":"luckypers","type":"uint256"},{"name":"lastpers","type":"uint256"},{"name":"sellkeypers","type":"uint256"},{"name":"sellpers","type":"uint256"},{"name":"selluppers","type":"uint256"},{"name":"lasttimes","type":"uint256"},{"name":"sysdays","type":"uint256"},{"name":"sellupperss","type":"uint256"}],"name":"setper","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"t","type":"bool"}],"name":"setactive","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"onceOuttime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"daysgeteths","outputs":[{"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":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenOwner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"},{"indexed":false,"name":"frozen","type":"bool"}],"name":"FrozenFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"ethchange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

  Contract Creation Code Switch To Opcodes View
60806040523480156200001157600080fd5b5060008054600160a060020a031916331790556040805180820190915260058082527f41694b657900000000000000000000000000000000000000000000000000000060209092019182526200006a9160029162000449565b506040805180820190915260058082527f41694b65790000000000000000000000000000000000000000000000000000006020909201918252620000b19160039162000449565b506004805460ff199081166012179091556a52b7d2dcc80cd2e40000006005556006805490911660011790556000601b8190556040805160a081810183528382526020808301858152838501868152606080860188815260808088018a81528a8052602e875297517f5f2b51c23aa64fc2445ffee23e9f4db80c998ca5b1b72e6b1c86169cbbc084be5593517f5f2b51c23aa64fc2445ffee23e9f4db80c998ca5b1b72e6b1c86169cbbc084bf5591517f5f2b51c23aa64fc2445ffee23e9f4db80c998ca5b1b72e6b1c86169cbbc084c05590517f5f2b51c23aa64fc2445ffee23e9f4db80c998ca5b1b72e6b1c86169cbbc084c15593517f5f2b51c23aa64fc2445ffee23e9f4db80c998ca5b1b72e6b1c86169cbbc084c25584516101208101865286815291820186905293810185905291820184905291810183905290810182905260c0810182905260e081018290526101008101919091526200021c906035906009620004ce565b506040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101919091526200027690600d906009620004ce565b506040805160608101825260028152600360208201819052600592820192909252620002a69160369190620004ce565b5060408051808201909152600a815260086020820152620002cc906037906002620004ce565b50633b9aca006038556127106039819055603a55600a601c8190556040805160e081018252601e815260146020820152908101919091526005606082018190526080820181905260a0820181905260c08201526200032f906010906007620004ce565b50600160148190556078601555600560168190556000601781905560188390556046601a55601d8290556032601e55600a600e819055600993909355655af3107a400092839055600b9290925569010f0cf064dd5920000060078190556008819055600c55600f805460ff19169091179055603c60195560b4601f5560209081556040805180820190915260048082527f312e30310000000000000000000000000000000000000000000000000000000091909201908152620003f6916031919062000449565b50600554306000818152602260209081526040808320859055805194855251929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a362000531565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200048c57805160ff1916838001178555620004bc565b82800160010185558215620004bc579182015b82811115620004bc5782518255916020019190600101906200049f565b50620004ca92915062000511565b5090565b828054828255906000526020600020908101928215620004bc579160200282015b82811115620004bc578251829060ff16905591602001919060010190620004ef565b6200052e91905b80821115620004ca576000815560010162000518565b90565b61586780620005416000396000f3006080604052600436106103dc5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663018d6f7a81146103e957806301e3d7181461044b57806306fdde0314610471578063091e97f9146104fb578063095ea7b3146105275780630abb691b1461054b5780630b1b9aa51461055657806310797bab1461058757806310a0c2761461059f57806318160ddd146105c95780631e2c541c146105de57806323a58292146105f357806323b872dd1461060857806329a2d339146106325780632e94341c14610670578063313ce56714610688578063332559d3146106b35780633670e072146106d45780633f8a92b3146106e95780634705d8881461070f5780634e6ebf0514610724578063536b55761461073c57806354750b761461075157806354db454714610766578063551619131461077e578063561bbe1e14610786578063570e997d1461079b57806359651da8146107bc57806359ff6a79146107d45780635b46ff8e146107e95780635c43fce3146108015780635c546039146108785780635f8f29c01461088d5780636cd61739146108a55780636d5210d9146108ba5780636d608fb6146109275780636f00ad8a1461093f57806370a082311461095457806371d93cb01461097557806379ba5097146109ce5780637bc65fc2146109e35780637d482171146109f85780637e00e38114610a0d5780637ec9c3b814610a225780638860bf9414610a375780638d1d863914610a935780638d95f24514610ab45780638da5cb5b14610acc57806391c3e7f814610ae157806392c8412f14610b61578063938d963214610b6c57806393a2f88d14610b8157806395d89b4114610ba257806396cef94714610bb7578063992427da14610bcc5780639a24fb4814610be15780639ae9d38314610bf6578063a280e67a14610d57578063a6474a5814610d6c578063a7159cce14610e41578063a7d0c49014610e59578063a87253c714610e71578063a9059cbb14610e86578063aceca54514610eaa578063b414d4b614610ebf578063b8eaffcc14610ee0578063c91b134214610f1f578063cd4d057014610f34578063d3626d0914610f6e578063d4ee1d9014610f83578063d96a094a14610f98578063dd62ed3e14610fa3578063de6b7e0914610fca578063e3b2ef9d14610fdf578063e3fc43b214610ff7578063e4849b3214611011578063e60f3aa414611029578063e724529c1461103e578063e736f03c14611064578063e987cc4514611079578063ecf1fdea1461109a578063f2fde38b146110de578063f43a72b0146110ff578063f9589eb314611119578063ff1d34361461112e575b6103e66000611146565b50005b3480156103f557600080fd5b5061040a600160a060020a0360043516611829565b604080519889526020890197909752878701959095526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b34801561045757600080fd5b5061046f600160a060020a03600435166024356119a1565b005b34801561047d57600080fd5b50610486611a51565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104c05781810151838201526020016104a8565b50505050905090810190601f1680156104ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561050757600080fd5b50610513600435611adf565b604080519115158252519081900360200190f35b34801561053357600080fd5b50610513600160a060020a0360043516602435611b80565b610513600435611bff565b34801561056257600080fd5b5061056b611e48565b60408051600160a060020a039092168252519081900360200190f35b34801561059357600080fd5b50610513600435611f46565b3480156105ab57600080fd5b506105b76004356120e4565b60408051918252519081900360200190f35b3480156105d557600080fd5b506105b76120f6565b3480156105ea57600080fd5b506105b761210e565b3480156105ff57600080fd5b506105b7612114565b34801561061457600080fd5b50610513600160a060020a036004358116906024351660443561211a565b34801561063e57600080fd5b5061064a6004356121f4565b604080519485526020850193909352838301919091526060830152519081900360800190f35b34801561067c57600080fd5b506105b76004356122f8565b34801561069457600080fd5b5061069d612317565b6040805160ff9092168252519081900360200190f35b3480156106bf57600080fd5b506105b7600160a060020a0360043516612320565b3480156106e057600080fd5b506105b761257d565b3480156106f557600080fd5b5061046f600160a060020a0360043516602435151561259c565b34801561071b57600080fd5b506105136125de565b34801561073057600080fd5b5061056b60043561268e565b34801561074857600080fd5b506105b76126a9565b34801561075d57600080fd5b506105b76126af565b34801561077257600080fd5b506105136004356126b5565b610513612823565b34801561079257600080fd5b50610513612828565b3480156107a757600080fd5b5061064a600160a060020a036004351661297f565b3480156107c857600080fd5b506105b76004356129b0565b3480156107e057600080fd5b506105b76129be565b3480156107f557600080fd5b506105b76004356129c4565b34801561080d57600080fd5b50610822600160a060020a03600435166129d6565b604080519b8c5260208c019a909a528a8a019890985260608a0196909652608089019490945260a088019290925260c087015260e086015261010085015261012084015261014083015251908190036101600190f35b34801561088457600080fd5b506105b7612c2c565b34801561089957600080fd5b506105b7600435612c32565b3480156108b157600080fd5b506105b7612c44565b3480156108c657600080fd5b506108db600160a060020a0360043516612c67565b604080519889526020890197909752600160a060020a03958616888801526060880194909452918416608087015260a086015290911660c084015260e083015251908190036101000190f35b34801561093357600080fd5b506105b7600435612da7565b34801561094b57600080fd5b506105b7612db5565b34801561096057600080fd5b506105b7600160a060020a0360043516612dbb565b34801561098157600080fd5b50610996600160a060020a0360043516612dd6565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b3480156109da57600080fd5b5061046f612e65565b3480156109ef57600080fd5b506105b7612eed565b348015610a0457600080fd5b506105b7612ef3565b348015610a1957600080fd5b506105b7612ef9565b348015610a2e57600080fd5b5061069d612eff565b348015610a4357600080fd5b50610a4c612f08565b60408051998a5260208a0198909852888801969096526060880194909452608087019290925260a086015260c085015260e084015261010083015251908190036101200190f35b348015610a9f57600080fd5b506105b7600160a060020a0360043516613026565b348015610ac057600080fd5b50610513600435613276565b348015610ad857600080fd5b5061056b613455565b348015610aed57600080fd5b50610b02600160a060020a0360043516613464565b604080519c8d5260208d019b909b528b8b019990995260608b019790975260808a019590955260a089019390935260c088019190915260e087015261010086015261012085015261014084015261016083015251908190036101800190f35b61051360043561351c565b348015610b7857600080fd5b506105136136b4565b348015610b8d57600080fd5b506105b7600160a060020a036004351661398e565b348015610bae57600080fd5b50610486613a1a565b348015610bc357600080fd5b506105b7613a72565b348015610bd857600080fd5b506105b7613a78565b348015610bed57600080fd5b506105b7613a7e565b348015610c0257600080fd5b50610c0b613a84565b604080518215156060820152608080825286519082015285519091829160208084019284019160a08501918a019080838360005b83811015610c57578181015183820152602001610c3f565b50505050905090810190601f168015610c845780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b83811015610cb7578181015183820152602001610c9f565b50505050905090810190601f168015610ce45780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b83811015610d17578181015183820152602001610cff565b50505050905090810190601f168015610d445780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b348015610d6357600080fd5b506105b7613c5d565b348015610d7857600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261051394369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750613c879650505050505050565b348015610e4d57600080fd5b506105b7600435613d02565b348015610e6557600080fd5b50610513600435613d10565b348015610e7d57600080fd5b5061056b613ea9565b348015610e9257600080fd5b50610513600160a060020a0360043516602435613f18565b348015610eb657600080fd5b506105b7613f2e565b348015610ecb57600080fd5b50610513600160a060020a0360043516613f34565b348015610eec57600080fd5b50610f01600160a060020a0360043516613f49565b60408051938452602084019290925282820152519081900360600190f35b348015610f2b57600080fd5b506105b7614052565b348015610f4057600080fd5b50610f55600160a060020a0360043516614058565b6040805192835260208301919091528051918290030190f35b348015610f7a57600080fd5b506105b761410e565b348015610f8f57600080fd5b5061056b614124565b610513600435611146565b348015610faf57600080fd5b506105b7600160a060020a0360043581169060243516614133565b348015610fd657600080fd5b506105b761415e565b348015610feb57600080fd5b5061056b600435614164565b34801561100357600080fd5b50610513600435151561418c565b34801561101d57600080fd5b506105136004356143f2565b34801561103557600080fd5b506105b76146f9565b34801561104a57600080fd5b5061046f600160a060020a036004351660243515156146ff565b34801561107057600080fd5b50610513614798565b34801561108557600080fd5b5061056b600160a060020a03600435166147a1565b3480156110a657600080fd5b5061046f60043560ff6024351660443560643560843560a43560c43560e43561010435610124356101443561016435610184356147c2565b3480156110ea57600080fd5b5061046f600160a060020a0360043516614821565b34801561110b57600080fd5b5061046f6004351515614867565b34801561112557600080fd5b506105b7614891565b34801561113a57600080fd5b506105b7600435614897565b6000806000806000806000806000806000806000600660009054906101000a900460ff1615156001151514151561117c57600080fd5b33600090815260276020526040902054601b541461119957600080fd5b3360009081526024602052604090205460ff16156111b657600080fd5b339b50600034116111c657600080fd5b349a5067016345785d8a00008b10156111de57600080fd5b600160a060020a038c16600090815260276020526040902060020154683635c9adc5dea00000101561120f57600080fd5b8a600302995061121d61257d565b600160a060020a038d8116600090815260276020526040812060080154929b5099501615156115cf5760008e8152602a6020526040812054600160a060020a031697508e1180156112765750600160a060020a03871615155b801561129457508b600160a060020a031687600160a060020a031614155b156115ca5786602760008e600160a060020a0316600160a060020a0316815260200190815260200160002060080160006101000a815481600160a060020a030219169083600160a060020a031602179055506029600088600160a060020a0316600160a060020a03168152602001908152602001600020600001600081548092919060010191905055506027600088600160a060020a0316600160a060020a0316815260200190815260200160002060090160008a8152602001908152602001600020600081548092919060010191905055506027600088600160a060020a0316600160a060020a0316815260200190815260200160002060080160009054906101000a9004600160a060020a031695506000600160a060020a031686600160a060020a0316141580156113da57508b600160a060020a031686600160a060020a031614155b156115c557600160a060020a0380871660009081526029602090815260408083206001908101805490910190556027909152902060080154169450841580159061143657508b600160a060020a031685600160a060020a031614155b156115c557600160a060020a038086166000908152602960209081526040808320600201805460010190556027909152902060080154169350831580159061149057508b600160a060020a031684600160a060020a031614155b156115c557600160a060020a03808516600090815260296020908152604080832060030180546001019055602790915290206008015416925082158015906114ea57508b600160a060020a031683600160a060020a031614155b156115c557600160a060020a038084166000908152602960209081526040808320600401805460010190556027909152902060080154169150811580159061154457508b600160a060020a031682600160a060020a031614155b156115c55750600160a060020a03808216600090815260296020908152604080832060050180546001019055602790915290206008015416801580159061159d57508b600160a060020a031681600160a060020a031614155b156115c557600160a060020a0381166000908152602960205260409020600601805460010190555b600197505b6115d4565b600197505b600188151514156115f2578a60040299506115f08c8b8d6148a9565b505b601454611604906064908d0204614f72565b5060118c90806001815401808255809150509060018203906000526020600020016000909192909190916101000a815481600160a060020a030219169083600160a060020a031602179055505060128b9080600181540180825580915050906001820390600052602060002001600090919290919091505550601342908060018154018082558091505090600182039060005260206000200160009091929091909150555089602b60008b8152602001908152602001600020600082825401925050819055508a602c60008b8152602001908152602001600020600082825401925050819055508a602e6000601b548152602001908152602001600020600101600082825401925050819055508a602e6000601b548152602001908152602001600020600201600082825401925050819055508a602760008e600160a060020a0316600160a060020a03168152602001908152602001600020600b0160008b81526020019081526020016000206000828254019250508190555089602760008e600160a060020a0316600160a060020a031681526020019081526020016000206001016000828254019250508190555060646018548c028115156117c457fe5b60178054929091049091019055601b546000908152602e6020908152604080832080548e019055600160a060020a038f1683526027909152812060020180548d019055611814908d908c9061508c565b5060019e9d5050505050505050505050505050565b60008060008060008060008060008061184061257d565b915061184a61410e565b9050602760008c600160a060020a0316600160a060020a03168152602001908152602001600020600b016000838152602001908152602001600020549950602760008c600160a060020a0316600160a060020a03168152602001908152602001600020600c016000838152602001908152602001600020549850602c6000838152602001908152602001600020549750602d6000838152602001908152602001600020549650602760008c600160a060020a0316600160a060020a03168152602001908152602001600020600b016000828152602001908152602001600020549550602760008c600160a060020a0316600160a060020a03168152602001908152602001600020600c016000828152602001908152602001600020549450602c6000828152602001908152602001600020549350602d60008281526020019081526020016000205492505050919395975091939597565b600054600160a060020a031633146119b857600080fd5b60065460ff1615156001146119cc57600080fd5b600160a060020a03821615156119e157600080fd5b306000908152602260205260409020548111156119fd57600080fd5b600160a060020a03821660008181526022602090815260408083208054860190553080845292819020805486900390558051858152905160008051602061581c833981519152929181900390910190a35050565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015611ad75780601f10611aac57610100808354040283529160200191611ad7565b820191906000526020600020905b815481529060010190602001808311611aba57829003601f168201915b505050505081565b600033818080611aee84613f49565b925092509250600081118015611b045750600083115b8015611b105750600383105b8015611b1c5750600982105b1515611b2757600080fd5b6040805160808101825292835260208084019283524284830190815260608501988952600160a060020a039096166000908152603c90915220915182555160018201559151600283015550915160039092019190915590565b60065460009060ff161515600114611b9757600080fd5b336000818152602360209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b6000818152602a60205260408120548190819081908190600160a060020a031615611c2957600080fd5b33600081815260276020526040902060050154909450600111611c4b57600080fd5b600160a060020a03808516600090815260276020526040902060080154169250349150821515611c7a57600080fd5b600160a060020a03831660009081526027602052604081206005015411611ca057600080fd5b600160a060020a0383166000908152603c6020526040902060020154600110611cc857600080fd5b600160a060020a0383166000908152603c6020526040902060030154821015611cf057600080fd5b600160a060020a038416318210611d0657600080fd5b600b54600a02670de0b6b3a76400008302811515611d2057fe5b600160a060020a0386166000908152602260205260409020549190049150811115611d4a57600080fd5b600160a060020a0380851660008181526022602090815260408083208054879003905582548516835280832080548701905591548251868152925194169360008051602061581c8339815191529281900390910190a3600160a060020a0380851660008181526027602090815260408083206005018b90558a8352602a909152808220805473ffffffffffffffffffffffffffffffffffffffff191690931790925590519185169184156108fc0291859190818181858888f19350505050158015611e19573d6000803e3d6000fd5b505050600160a060020a03166000908152603c6020526040902080546001908101825560029091015550919050565b6000806000806000806012805490501115611f3f57611e6561257d565b9350611e6f61410e565b9250670de0b6b3a76400009150600090505b601254811015611f3f5782601382815481101515611e9b57fe5b9060005260206000200154118015611ecb575083601382815481101515611ebe57fe5b9060005260206000200154105b8015611ef0575081601282815481101515611ee257fe5b906000526020600020015410155b15611f37576012805482908110611f0357fe5b90600052602060002001549150601181815481101515611f1f57fe5b600091825260209091200154600160a060020a031694505b600101611e81565b5050505090565b6006546000908190819060ff161515600114611f6157600080fd5b33600090815260276020526040902054601b5414611f7e57600080fd5b3360009081526024602052604090205460ff1615611f9b57600080fd5b339150600760040154606402601c548502670de0b6b3a764000002811515611fbf57fe5b600160a060020a03841660009081526022602052604090205491900491508110611fe857600080fd5b83611ff283613026565b1015611ffd57600080fd5b61200682612320565b600160a060020a0383166000908152602760205260409020600101541161202c57600080fd5b61203582612320565b600160a060020a0383166000908152602760205260409020600101540384111561205e57600080fd5b600160a060020a0380831660008181526022602090815260408083208054879003905582548516835280832080548701905591548251868152925194169360008051602061581c8339815191529281900390910190a36120be828561513e565b50600160a060020a03166000908152602560205260409020600301805490920190915590565b603b6020526000908152604090205481565b30600090815260226020526040902054600554035b90565b60345481565b60195481565b60065460009060ff16151560011461213157600080fd5b600160a060020a03841660009081526024602052604090205460ff161561215757600080fd5b600160a060020a03831660009081526024602052604090205460ff161561217d57600080fd5b600160a060020a03808516600081815260226020818152604080842080548990039055602382528084203385528252808420805489900390559488168084529181529184902080548701905583518681529351909360008051602061581c83398151915292908290030190a35060015b9392505050565b6000806000806000806000806000806000806038548d1015156122db576038548d81151561221e57fe5b60385491900498508881028e039750600a810496506064900494508587101561226857879b5060009a5060009950600187101561225e5760019850612263565b600098505b6122d6565b858781151561227357fe5b04935085840287039250848310156122a157879b50839a5060009950600183101561225e5760029850612263565b84838115156122ac57fe5b04915084820283039050879b50839a5081995060018110156122d157600398506122d6565b600098505b6122e9565b60009b508b9a508a99508998505b50505050505050509193509193565b601380548290811061230657fe5b600091825260209091200154905081565b60045460ff1681565b600160a060020a0381166000908152602560205260408120600201548190819081908110156124de57600092505b600160a060020a0385166000908152602560205260409020600201548310156124de57600160a060020a038516600090815260256020526040902060040180548490811061239857fe5b9060005260206000200154915081600014156123e957600160a060020a03851660009081526025602052604090206005018054849081106123d557fe5b9060005260206000200154840193506124d3565b600e5442839003106124d357600f54600e546103e89160ff16904285900381151561241057fe5b600160a060020a0389166000908152602560205260409020600501805492909104918790811061243c57fe5b9060005260206000200154020281151561245257fe5b600160a060020a03871660009081526025602052604090206005018054929091049250908490811061248057fe5b90600052602060002001548111151561249c57928301926124d3565b600160a060020a03851660009081526025602052604090206005018054849081106124c357fe5b9060005260206000200154840193505b60019092019161234e565b600160a060020a038516600090815260256020526040902060038101546001909101549401938410156125145760009350612575565b600160a060020a03851660009081526025602052604090205484111561255457600160a060020a0385166000908152602560205260409020549350612575565b600160a060020a038516600090815260256020526040902060010154909303925b505050919050565b602054601f5460009142918281151561259257fe5b0682030391505090565b600054600160a060020a031633146125b357600080fd5b600160a060020a03919091166000908152602f60205260409020805460ff1916911515919091179055565b600654600090819060ff1615156001146125f757600080fd5b6125ff613ea9565b9050600160a060020a038116151561261657600080fd5b600160a060020a038116331461262b57600080fd5b60175460001061263a57600080fd5b6017546002303104101561264d57600080fd5b601754604051600160a060020a0383169180156108fc02916000818181858888f19350505050158015612684573d6000803e3d6000fd5b5050600060175590565b602a60205260009081526040902054600160a060020a031681565b60165481565b60205481565b60065460009081908190819060ff1615156001146126d257600080fd5b33600090815260276020526040902054601b54146126ef57600080fd5b3360009081526024602052604090205460ff161561270c57600080fd5b33925061271883612320565b91508482101561272757600080fd5b67016345785d8a000085101561273c57600080fd5b600160a060020a03831660009081526025602052604090205485111561276157600080fd5b600160a060020a03831660009081526027602052604090206001015485111561278957600080fd5b50600160a060020a0382811660009081526027602052604090206008015460038602911615156127b95750600284025b6127c58382600061508c565b50600160a060020a0383166000908152602760209081526040808320600180820180548701905560258452828520810180548b019055600290910180548a019055601b548452602e9092529091208054830190559350505050919050565b600190565b60065460009081908190819060ff16151560011461284557600080fd5b33600090815260276020526040902054601b541461286257600080fd5b3360009081526024602052604090205460ff161561287f57600080fd5b33925082151561288e57600080fd5b612896611e48565b600160a060020a038481169116146128ad57600080fd5b6128b561410e565b600160a060020a0384166000908152602760209081526040808320848452600b01909152812054919350106128e957600080fd5b600160a060020a0383166000908152602760209081526040808320858452600d019091529020541561291a57600080fd5b506016546000828152602c60205260409020546103e891020461293f8382606461516a565b600160a060020a039092166000818152602760208181526040808420958452600d8601825283208054870190559290915290526007018054909101905590565b600160a060020a03166000908152603c60205260409020805460018201546002830154600390930154919390929190565b600d80548290811061230657fe5b60145481565b602c6020526000908152604090205481565b60008060008060008060008060008060008060006129f261257d565b91506129fc61410e565b9050602760008f600160a060020a0316600160a060020a031681526020019081526020016000206009016000838152602001908152602001600020549c50602760008f600160a060020a0316600160a060020a03168152602001908152602001600020600a016000838152602001908152602001600020549b50602760008f600160a060020a0316600160a060020a031681526020019081526020016000206009016000828152602001908152602001600020549a50602760008f600160a060020a0316600160a060020a03168152602001908152602001600020600a016000828152602001908152602001600020549950602960008f600160a060020a0316600160a060020a03168152602001908152602001600020600001549850602960008f600160a060020a0316600160a060020a03168152602001908152602001600020600101549750602960008f600160a060020a0316600160a060020a03168152602001908152602001600020600201549650602960008f600160a060020a0316600160a060020a03168152602001908152602001600020600301549550602960008f600160a060020a0316600160a060020a03168152602001908152602001600020600401549450602960008f600160a060020a0316600160a060020a03168152602001908152602001600020600501549350602960008f600160a060020a0316600160a060020a03168152602001908152602001600020600601549250505091939597999b90929496989a50565b60185481565b602d6020526000908152604090205481565b6007546009546000911415612c605750600a54600b540161210b565b50600b5490565b6000806000806000806000806000806013805490501115612ca657601380546000198101908110612c9457fe5b90600052602060002001549850612cab565b600098505b60125460001015612cda57601280546000198101908110612cc857fe5b90600052602060002001549750612cdf565b600097505b60115460001015612d1857601180546000198101908110612cfc57fe5b600091825260209091200154600160a060020a03169650612d1d565b600096505b6017549550612d2a613ea9565b9450612d3461410e565b6000818152602c60205260408120549192501015612d9b576016546000828152602c60205260409020546103e89102049350612d6e611e48565b600160a060020a038b166000908152602760209081526040808320858452600d0190915290205490935091505b50919395975091939597565b601280548290811061230657fe5b60175481565b600160a060020a031660009081526022602052604090205490565b600160a060020a038116600090815260276020908152604080832060058101546001909101546025909352908320549092808080612e1388612320565b600160a060020a0389166000908152602660205260409020549094509250612e3a88613026565b600160a060020a03909816600090815260226020526040902054969895979496939592949392915050565b600154600160a060020a03163314612e7c57600080fd5b60015460008054604051600160a060020a0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b601e5481565b601a5481565b601f5481565b600f5460ff1681565b6000806000806000806000806000600d6000815481101515612f2657fe5b90600052602060002001549850600d6001815481101515612f4357fe5b90600052602060002001549750600d6002815481101515612f6057fe5b90600052602060002001549650600d6003815481101515612f7d57fe5b90600052602060002001549550600d6004815481101515612f9a57fe5b90600052602060002001549450600d6005815481101515612fb757fe5b90600052602060002001549350600d6006815481101515612fd457fe5b90600052602060002001549250600d6007815481101515612ff157fe5b90600052602060002001549150600d600881548110151561300e57fe5b90600052602060002001549050909192939495969798565b600160a060020a0381166000908152602660205260408120600201548190819081908110156131e457600092505b600160a060020a0385166000908152602660205260409020600201548310156131e457600160a060020a038516600090815260266020526040902060040180548490811061309e57fe5b9060005260206000200154915081600014156130ef57600160a060020a03851660009081526026602052604090206005018054849081106130db57fe5b9060005260206000200154840193506131d9565b600e5442839003106131d957600f54600e546103e89160ff16904285900381151561311657fe5b600160a060020a0389166000908152602660205260409020600501805492909104918790811061314257fe5b9060005260206000200154020281151561315857fe5b600160a060020a03871660009081526026602052604090206005018054929091049250908490811061318657fe5b9060005260206000200154811115156131a257928301926131d9565b600160a060020a03851660009081526026602052604090206005018054849081106131c957fe5b9060005260206000200154840193505b600190920191613054565b600160a060020a0385166000908152602660205260409020600101548410156132105760009350612575565b600160a060020a03851660009081526026602052604090205484111561325057600160a060020a0385166000908152602660205260409020549350612575565b505050600160a060020a0391909116600090815260266020526040902060010154900390565b600654600090819081908190819060ff16151560011461329557600080fd5b33600090815260276020526040902054601b54146132b257600080fd5b3360009081526024602052604090205460ff16156132cf57600080fd5b336000818152602260205260409020549094508611156132ee57600080fd5b600a8054600b549102111561330257600080fd5b61330a61257d565b925061331461410e565b601a54600b5491935068056bc75e2d63100000918802026000858152602c602090815260408083205487845281842054898552602d9093529220549390920493500190820111156133715750600b54671bc16d674ec80000908602045b3031811061337e57600080fd5b600160a060020a0380851660008181526027602090815260408083206003908101805488019055601b548452602e835281842001805487019055878352602d82528083208054870190558383526022825280832080548c9003905582548516835280832080548c019055915482518b8152925194169360008051602061581c8339815191529281900390910190a3604051600160a060020a0385169082156108fc029083906000818181858888f19350505050158015613442573d6000803e3d6000fd5b5061344b61521a565b5050505050919050565b600054600160a060020a031681565b601b546000908152602e6020908152604080832054600160a060020a038516845260279092528220600581015460018201546007909201549293909290808080808080806134b18d612320565b97506134bc8d612dbb565b96506134c6612c44565b95506134d0613c5d565b601b54600160a060020a038f166000908152602760209081526040808320546026909252909120549297509095509350915061350b8d613026565b905091939597999b5091939597999b565b6006546000908190819060ff16151560011461353757600080fd5b33600090815260276020526040902054601b541461355457600080fd5b3360009081526024602052604090205460ff161561357157600080fd5b5034905033670de0b6b3a764000084101561358b57600080fd5b670de0b6b3a76400008406156135a057600080fd5b60075460095485016000190111156135b757600080fd5b600b548210156135c657600080fd5b600160a060020a038116318211156135dd57600080fd5b600160a060020a0381166000908152602560205260408120541161360057600080fd5b600b54670de0b6b3a764000090850204821461361b57600080fd5b600160a060020a0381166000908152602760209081526040808320600601805486019055601b80548452602e9092528083206001018054860190559054825290206004018054850190556007546009548501600019011415613699576008546007805490910190556001600955600a54600b805490910190556136a2565b60098054850190555b6136ad308286615281565b5050919050565b6000806000806000806000806000806000600660009054906101000a900460ff161515600115151415156136e757600080fd5b33600081815260226020526040902054909a50670de0b6b3a7640000995089111561371157600080fd5b600160a060020a038a1660009081526027602052604090206005015460011161373957600080fd5b600160a060020a038a16600090815260226020526040902054891415613760576001890398505b600160a060020a03808b1660009081526027602052604080822060080154909216808252919020600501549098509550871580159061379f5750600086115b15613836576038548610156137c05760398054600181019091559650613831565b6137c9866121f4565b603854600a8482020485820201606491840291909104016000818152603b6020526040902054949950929750909550935091508610613817576000818152603b602052604090206001870190555b6000818152603b6020526040902080546001810190915596505b6138ce565b603a5460395414156138c057608060405190810160405280600081526020016038548152602001428152602001670de0b6b3a7640000815250603c60008c600160a060020a0316600160a060020a03168152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301559050505b603980546001810190915596505b6000878152602a6020526040902054600160a060020a0316156138f057600080fd5b600160a060020a03808b1660008181526027602090815260408083206005018c90558b8352602a8252808320805473ffffffffffffffffffffffffffffffffffffffff1916851790558383526022825280832080548f9003905582548516835280832080548f019055915482518e8152925194169360008051602061581c8339815191529281900390910190a360019a505050505050505050505090565b600160a060020a03808216600090815260276020526040812060080154909116818115156139bf57600092506136ad565b50600160a060020a0381166000908152602760205260408120600501549081118015613a0457506000818152602a6020526040902054600160a060020a038381169116145b15613a11578092506136ad565b600092506136ad565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015611ad75780601f10611aac57610100808354040283529160200191611ad7565b601c5481565b60155481565b601d5481565b6031805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152606093849384936000939291830182828015613b145780601f10613ae957610100808354040283529160200191613b14565b820191906000526020600020905b815481529060010190602001808311613af757829003601f168201915b505060328054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152969a5091945092508401905082828015613ba55780601f10613b7a57610100808354040283529160200191613ba5565b820191906000526020600020905b815481529060010190602001808311613b8857829003601f168201915b505060338054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815296995091945092508401905082828015613c365780601f10613c0b57610100808354040283529160200191613c36565b820191906000526020600020905b815481529060010190602001808311613c1957829003601f168201915b5050336000908152602f602052604090205497989697939660ff9094169550929350505050565b6007546009546000911415613c7957506008546007540161210b565b506009546007540360010190565b60065460009060ff161515600114613c9e57600080fd5b336000908152602f602052604090205460ff161515600114613cbf57600080fd5b8351613cd2906031906020870190615762565b508251613ce6906032906020860190615762565b508151613cfa906033906020850190615762565b509392505050565b601080548290811061230657fe5b60065460009081908190819060ff161515600114613d2d57600080fd5b33600090815260276020526040902054601b5414613d4a57600080fd5b3360009081526024602052604090205460ff1615613d6757600080fd5b339250670de0b6b3a7640000851015613d7f57600080fd5b600160a060020a038316600090815260226020526040902054851115613da457600080fd5b600b54670de0b6b3a764000090860204915067016345785d8a0000821015613dcb57600080fd5b50600160a060020a0382811660009081526027602052604090206008015460038302911615613dfa5750600481025b601b546000908152602e60209081526040808320805485019055600160a060020a03861683526027909152812060018101805484019055600201805484019055613e47908490839061508c565b50600160a060020a03808416600081815260226020908152604080832080548b9003905582548516835280832080548b019055915482518a8152925194169360008051602061581c8339815191529281900390910190a3506001949350505050565b60135460009081101561210b576000601754118015613ee75750601954601380546000198101908110613ed857fe5b90600052602060002001544203115b1561210b57601180546000198101908110613efe57fe5b600091825260209091200154600160a060020a0316905090565b6000613f25338484615281565b50600192915050565b603a5481565b60246020526000908152604090205460ff1681565b600160a060020a038116600090815260276020908152604080832060050154603c909252822054603a5490918391829081908190841415613fb2575050603854600160a060020a0387166000908152603c60205260408120546001975087019091029350859150805b603854841061404757613fc4846121f4565b995091945092509050600087111561404757600182101561401257603854600160a060020a0389166000908152603c6020526040902054600a91600190910102046038548402019450614047565b603854600160a060020a0389166000908152603c6020526040902054848202600a858402040160646001909201909202040194505b505050509193909250565b60395481565b600160a060020a038082166000908152602760205260408120600801549091829116818082158015906140a45750600160a060020a038316600090815260276020526040812060050154115b15614106576140b283613f49565b965090925090506000821180156140e25750600160a060020a0383166000908152603c6020526040812060020154115b1561410657600160a060020a0383166000908152603c602052604090206003015493505b505050915091565b60008061411961257d565b601f54900392915050565b600154600160a060020a031681565b600160a060020a03918216600090815260236020908152604080832093909416825291909152205490565b601b5481565b601180548290811061417257fe5b600091825260209091200154600160a060020a0316905081565b60065460009081908190819060ff1615156001146141a957600080fd5b601b5433600081815260276020526040902054909450106141c957600080fd5b600160a060020a03831660009081526024602052604090205460ff16156141ef57600080fd5b6001851515141561436657600160a060020a0383166000908152602760209081526040808320600160078201819055908101819055602590925282208181558082019190915560020154111561428d57600160a060020a0383166000908152602560205260408120614266916004909101906157e0565b600160a060020a038316600090815260256020526040812061428d916005909101906157e0565b600160a060020a03831660009081526025602090815260408083206002908101849055602790925290912060038101549082015490919004111561433a57600160a060020a03831660009081526027602052604090206003810154600291820154909190040391503031821061430257600080fd5b604051600160a060020a0384169083156108fc029084906000818181858888f19350505050158015614338573d6000803e3d6000fd5b505b600160a060020a03831660009081526027602052604090206001600282018190556003909101556143ce565b50600160a060020a03821660009081526027602090815260408083206003810154600280830154600193840154601b80548952602e90975285882080549091019055855487528487209093018054929093039182019092559254845292209091018054820190555b5050601b54600160a060020a03909116600090815260276020526040902055919050565b60065460009081908190819081908190819060ff16151560011461441557600080fd5b33600090815260276020526040902054601b541461443257600080fd5b3360009081526024602052604090205460ff161561444f57600080fd5b33955061445a61257d565b945061446461410e565b935061446f86612320565b92508783101561447e57600080fd5b3031881061448b57600080fd5b601d546000858152602c602090815260408083205489845281842054602d9093529220549294500190890111156144c257601e5491505b600b54606402670de0b6b3a7640000898402028115156144de57fe5b600160a060020a038816600090815260226020526040902054919004915081111561450857600080fd5b61451286896153da565b151560011461452057600080fd5b876027600088600160a060020a0316600160a060020a031681526020019081526020016000206003016000828254019250508190555087602e6000601b54815260200190815260200160002060030160008282540192505081905550876027600088600160a060020a0316600160a060020a03168152602001908152602001600020600c0160008781526020019081526020016000206000828254019250508190555087602d600087815260200190815260200160002060008282540192505081905550806022600088600160a060020a0316600160a060020a031681526020019081526020016000206000828254039250508190555080602260008060009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001908152602001600020600082825401925050819055506000809054906101000a9004600160a060020a0316600160a060020a031686600160a060020a031660008051602061581c833981519152836040518082815260200191505060405180910390a3604051600160a060020a0387169089156108fc02908a906000818181858888f193505050501580156146e1573d6000803e3d6000fd5b506146ea61521a565b50600198975050505050505050565b60385481565b60065460ff16151560011461471357600080fd5b336000908152602f602052604090205460ff16151560011461473457600080fd5b600160a060020a038216600081815260246020908152604091829020805460ff191685151590811790915582519384529083015280517f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a59281900390910190a15050565b60065460ff1681565b600160a060020a039081166000908152602760205260409020600801541690565b600054600160a060020a031633146147d957600080fd5b600e9c909c55600f805460ff191660ff9c909c169b909b17909a55601c9890985550601495909555601593909355601691909155601855601a55601d55601955601f55601e55565b600054600160a060020a0316331461483857600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a0316331461487e57600080fd5b6006805460ff1916911515919091179055565b600e5481565b602b6020526000908152604090205481565b600160a060020a03808416600090815260276020526040812060080154909116818080808080806148d861257d565b9650600160a060020a0388161580159061490457508b600160a060020a031688600160a060020a031614155b15614f635761493d8860646010600081548110151561491f57fe5b90600052602060002001548e0281151561493557fe5b04600061516a565b600160a060020a03881660009081526027602090815260408083208a8452600a01909152902080548b0190556149738c8b61546f565b50603854600160a060020a03891660009081526027602052604090206005015411156149eb57603854600160a060020a0389166000908152602760205260409020600501548b91600d91600191908115156149ca57fe5b04038154811015156149d857fe5b6000918252602090912001805490910190555b600160a060020a038089166000908152602760205260409020600801541695508515801590614a2c57508b600160a060020a031686600160a060020a031614155b15614f6357600160a060020a03861660009081526029602052604090205460011015614a6857614a688660646010600181548110151561491f57fe5b896027600088600160a060020a0316600160a060020a03168152602001908152602001600020600a016000898152602001908152602001600020600082825401925050819055506027600087600160a060020a0316600160a060020a0316815260200190815260200160002060080160009054906101000a9004600160a060020a031694506000600160a060020a031685600160a060020a031614158015614b2257508b600160a060020a031685600160a060020a031614155b15614f6357600160a060020a03851660009081526029602052604090205460021015614b5e57614b5e8560646010600281548110151561491f57fe5b896027600087600160a060020a0316600160a060020a03168152602001908152602001600020600a016000898152602001908152602001600020600082825401925050819055506027600086600160a060020a0316600160a060020a0316815260200190815260200160002060080160009054906101000a9004600160a060020a031693506000600160a060020a031684600160a060020a031614158015614c1857508b600160a060020a031684600160a060020a031614155b15614f6357600160a060020a03841660009081526029602052604090205460031015614c5457614c548460646010600381548110151561491f57fe5b896027600086600160a060020a0316600160a060020a03168152602001908152602001600020600a016000898152602001908152602001600020600082825401925050819055506027600085600160a060020a0316600160a060020a0316815260200190815260200160002060080160009054906101000a9004600160a060020a031692506000600160a060020a031683600160a060020a031614158015614d0e57508b600160a060020a031683600160a060020a031614155b15614f6357600160a060020a03831660009081526029602052604090205460041015614d4a57614d4a8360646010600481548110151561491f57fe5b896027600085600160a060020a0316600160a060020a03168152602001908152602001600020600a016000898152602001908152602001600020600082825401925050819055506027600084600160a060020a0316600160a060020a0316815260200190815260200160002060080160009054906101000a9004600160a060020a031691506000600160a060020a031682600160a060020a031614158015614e0457508b600160a060020a031682600160a060020a031614155b15614f6357600160a060020a03821660009081526029602052604090205460051015614e4057614e408260646010600581548110151561491f57fe5b896027600084600160a060020a0316600160a060020a03168152602001908152602001600020600a016000898152602001908152602001600020600082825401925050819055506027600083600160a060020a0316600160a060020a0316815260200190815260200160002060080160009054906101000a9004600160a060020a031690506000600160a060020a031681600160a060020a031614158015614efa57508b600160a060020a031681600160a060020a031614155b15614f6357600160a060020a03811660009081526029602052604090205460061015614f3657614f368160646010600681548110151561491f57fe5b600160a060020a03821660009081526027602090815260408083208a8452600a01909152902080548b0190555b50505050505050509392505050565b601254600090818080808085111561507f576000935060009250600091506003851115614fa0576003850392505b50815b84811015614fd2576012805482908110614fb957fe5b6000918252602090912001549390930192600101614fa3565b8483101561507f5783601284815481101515614fea57fe5b9060005260206000200154880281151561500057fe5b04915061503160118481548110151561501557fe5b6000918252602082200154600160a060020a031690849061516a565b816027600060118681548110151561504557fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190206007018054909101905560019290920191614fd2565b5060019695505050505050565b600160a060020a0383166000908152602560209081526040822080548501815560028101805460019081019091556005909101805491820181558352908220018390558082111561510957600160a060020a03841660009081526025602090815260408220600401805460018101825590835290822001556121ed565b600160a060020a0384166000908152602560209081526040822060040180546001810182559083529120429101559392505050565b600160a060020a0390911660009081526026602052604090208054829003815560010180549091019055565b600160a060020a0383166000908152602660209081526040822080548501815560028101805460019081019091556005909101805491820181558352908220018390558111156151e657600160a060020a0383166000908152602660209081526040822060040180546001810182559083529082200155615215565b600160a060020a0383166000908152602660209081526040822060040180546001810182559083529120429101555b505050565b601b546000908152602e6020526040812060020154811080156152595750601b546000908152602e602052604090206002808201546003909201549104105b1561210b5750601b80546001908101909155600a54600b55600c54600755600981905561210b565b600160a060020a03831660009081526024602052604081205460ff16156152a757600080fd5b600160a060020a03831660009081526024602052604090205460ff16156152cd57600080fd5b60065460ff1615156001146152e157600080fd5b600160a060020a0384811690841614156152fa57600080fd5b600160a060020a038316151561530f57600080fd5b600160a060020a03841660009081526022602052604090205482111561533457600080fd5b600160a060020a0383166000908152602260205260409020548281011161535a57600080fd5b50600160a060020a03828116600090815260226020526040808220805493871683529120805484810382558254850192839055905492019101811461539b57fe5b82600160a060020a031684600160a060020a031660008051602061581c833981519152846040518082815260200191505060405180910390a350505050565b600160a060020a038216600090815260256020526040812054821180159061541d5750600160a060020a0383166000908152602760205260409020600101548211155b156154675750600160a060020a0382166000908152602560209081526040808320600180820180548701905581548690039091556027909252909120810180548390039055611bf9565b506000611bf9565b600160a060020a0382166000908152602760205260408120600501546038548290819081908190819081908190881115615754576154ac886121f4565b9299509097509550935060018410156157545760385460648682020490600a90880204603854890201019250600a60385487028115156154e857fe5b603854890291900481019250905085158015615502575084155b801561550e5750600087115b801561553057506000818152602a6020526040902054600160a060020a031615155b1561557f576000818152602a60205260408120546037805461557a93600160a060020a039093169260649291811061556457fe5b90600052602060002001548d0281151561493557fe5b615754565b8415801561558d5750600086115b80156155995750600087115b80156155bb57506000818152602a6020526040902054600160a060020a031615155b80156155dd57506000828152602a6020526040902054600160a060020a031615155b15615640576000818152602a60205260408120546036805461561193600160a060020a039093169260649291811061556457fe5b6000828152602a60205260409020546037805461557a92600160a060020a031691606491600190811061556457fe5b6000851180156156505750600086115b801561565c5750600087115b801561567e57506000818152602a6020526040902054600160a060020a031615155b80156156a057506000828152602a6020526040902054600160a060020a031615155b80156156c257506000838152602a6020526040902054600160a060020a031615155b15615754576000818152602a6020526040812054603680546156f693600160a060020a039093169260649291811061556457fe5b6000828152602a60205260409020546036805461572592600160a060020a031691606491600190811061556457fe5b6000838152602a60205260409020546036805461575492600160a060020a031691606491600290811061556457fe5b505050505050505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106157a357805160ff19168380011785556157d0565b828001600101855582156157d0579182015b828111156157d05782518255916020019190600101906157b5565b506157dc929150615801565b5090565b50805460008255906000526020600020908101906157fe9190615801565b50565b61210b91905b808211156157dc57600081556001016158075600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058209b51c3e9e40f39dc6cf6c075692e24e09559a8c8ce2e2b884d94a67c4e59e30d0029

   Swarm Source:
bzzr://9b51c3e9e40f39dc6cf6c075692e24e09559a8c8ce2e2b884d94a67c4e59e30d

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward