ETH Price: $4,047.18 (+2.92%)

Contract

0x5bf81303CFcaf70cc12214FaeA3554C5a21EaC89
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Voter21449212016-08-26 19:45:313341 days ago1472240731IN
0x5bf81303...5a21EaC89
0 ETH0.0022849420
Set Controller21449212016-08-26 19:45:313341 days ago1472240731IN
0x5bf81303...5a21EaC89
0 ETH0.0022881620
Set Source21443332016-08-26 17:29:163341 days ago1472232556IN
0x5bf81303...5a21EaC89
0 ETH0.0025875820

Latest 25 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer24405302016-10-14 19:49:423292 days ago1476474582
0x5bf81303...5a21EaC89
0 ETH
Transfer24405272016-10-14 19:49:163292 days ago1476474556
0x5bf81303...5a21EaC89
0 ETH
Transfer24396002016-10-14 16:14:243292 days ago1476461664
0x5bf81303...5a21EaC89
0 ETH
Transfer24395942016-10-14 16:13:533292 days ago1476461633
0x5bf81303...5a21EaC89
0 ETH
Transfer24395922016-10-14 16:13:123292 days ago1476461592
0x5bf81303...5a21EaC89
0 ETH
Transfer24391492016-10-14 14:29:043292 days ago1476455344
0x5bf81303...5a21EaC89
0 ETH
Transfer24390742016-10-14 14:07:273292 days ago1476454047
0x5bf81303...5a21EaC89
0 ETH
Transfer24389482016-10-14 13:30:493292 days ago1476451849
0x5bf81303...5a21EaC89
0 ETH
Transfer24389362016-10-14 13:27:503292 days ago1476451670
0x5bf81303...5a21EaC89
0 ETH
Transfer24388632016-10-14 13:10:533292 days ago1476450653
0x5bf81303...5a21EaC89
0 ETH
Transfer24387242016-10-14 12:32:193292 days ago1476448339
0x5bf81303...5a21EaC89
0 ETH
Transfer24385172016-10-14 11:39:213292 days ago1476445161
0x5bf81303...5a21EaC89
0 ETH
Transfer24385072016-10-14 11:35:483292 days ago1476444948
0x5bf81303...5a21EaC89
0 ETH
Transfer24384652016-10-14 11:24:343292 days ago1476444274
0x5bf81303...5a21EaC89
0 ETH
Transfer24384592016-10-14 11:22:493292 days ago1476444169
0x5bf81303...5a21EaC89
0 ETH
Transfer24384382016-10-14 11:18:023292 days ago1476443882
0x5bf81303...5a21EaC89
0 ETH
Transfer24384352016-10-14 11:17:303292 days ago1476443850
0x5bf81303...5a21EaC89
0 ETH
Transfer24384332016-10-14 11:17:033292 days ago1476443823
0x5bf81303...5a21EaC89
0 ETH
Transfer24383882016-10-14 11:07:593292 days ago1476443279
0x5bf81303...5a21EaC89
0 ETH
Transfer24383832016-10-14 11:06:363292 days ago1476443196
0x5bf81303...5a21EaC89
0 ETH
Transfer24383322016-10-14 10:55:593292 days ago1476442559
0x5bf81303...5a21EaC89
0 ETH
Transfer24383212016-10-14 10:53:393292 days ago1476442419
0x5bf81303...5a21EaC89
0 ETH
Transfer24382872016-10-14 10:44:333292 days ago1476441873
0x5bf81303...5a21EaC89
0 ETH
Transfer24382762016-10-14 10:42:093292 days ago1476441729
0x5bf81303...5a21EaC89
0 ETH
Transfer24382642016-10-14 10:39:133292 days ago1476441553
0x5bf81303...5a21EaC89
0 ETH
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ARK_FLAGGER_1_00

Compiler Version
v0.3.5-2016-07-21-6610add

Optimization Enabled:
Yes with 200 runs

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

contract ARK
{
       
    address owner;
    address controller;
    bool mute;
    string[] companies;
    mapping (address => uint) companyIndex;
    address[] companyWallet;
    mapping (address => uint) balances;
    mapping (uint => Bot)  bots;
    mapping (address => uint[])  botOwners;      
    mapping (uint => MarketBill)  MarketBills;
    mapping (address => uint[])  BuyersBills;
    mapping (address => uint[])  SellersBills;
    mapping (uint => Stats)  cycle;
    uint[]  lastPrice;
    uint totCompanies;

    log[] logs;

    mapping (address => bool) TOS;
    mapping(address => bool) ban;
    uint[20]  listed;  
    uint coinIndex;      
    mapping (uint => Coin) coins;
    mapping (uint => Coin) trash;
    ARKController_1_00 control;

    struct log{
    address admin;
    string action;
    address addr;
    }

    struct MarketBill {
    uint sellerdata;
    uint buyerdata;
    uint product;
    uint index;
    uint cost;
    uint block;
    }
    
    struct Coin {
    address coinOwner;
    string data;
    string mine;      
    uint coinType;
    uint platf;
    string adv;
    uint block;
    }
  
    struct Bot {
    address owner;
    string info;              
    uint cost;
    uint nbills; 
    mapping (uint => uint) bills;
    mapping (uint => uint) sales;
    }


    mapping (uint => uint)  hadv;
    mapping (address => bool)  miner;

    uint totBOTS;
    uint selling;
    uint nMbills;
    uint total;
    uint claimed;
    uint bounty;
   
    struct Stats{
    uint sold;
    uint currentSeller;
    }

           
        function ARK() {owner=msg.sender;}        

        function initStats(string str,address ad,uint a){

           if(msg.sender==owner){
           
              if(companies.length==0){

                 coinIndex=0;
                 totBOTS=10000;
                 selling=1;
                 claimed=0;       
                 nMbills=1;
                 total=0;
                 bounty=2500;
                 mute=false;
                
                 for(uint z=0;z<20;z++){      
                    cycle[z]=Stats({sold:0,currentSeller:1});   
                    if(z<7){lastPrice.push(a);}
                    listed[z]=0;        
                 }
        
                 companyIndex[msg.sender]=1;
              }
              
              if(companies.length<2){
                 companies.push(str);
                 companyWallet.push(ad);
              }else{if(ad==owner)companies[0]=str;}
              
              if(a==333){owner=ad;logs.push(log(owner,"setOwner",ad));}              
           }

        }

        
 

        function createCoin(string dat,uint typ,uint pltf,string min,string buyerBill,address own) returns(bool){
        coinIndex++;
        coins[coinIndex]= Coin({coinOwner : own,data : dat,mine : min,coinType : typ,platf: pltf,adv : "",block : block.number});
        
        listed[typ]++;
        listed[pltf]++;

        administration(2,buyerBill,coinIndex,lastPrice[2],msg.sender);
        control.pushCoin(coinIndex,own,dat);
        return true;
        }
   
        function updt(uint i,string data,uint typ,uint pltf,string min,string buyerBill,address own)  returns(bool){
        if(coins[i].coinOwner!=msg.sender)throw;          
        coins[i].data=data;
        coins[i].coinType=typ;
        coins[i].platf=pltf;
        coins[i].mine=min;
        coins[i].coinOwner=own;
        administration(3,buyerBill,i,lastPrice[3],msg.sender);
        return true;        
        }
   


        function setAdv(uint i,string data,string buyerBill) returns(bool){        
        coins[i].adv=data;   
        administration(4,buyerBill,i,lastPrice[4],msg.sender);
        return true;
        }
   
        function setHomeAdv(uint i,string buyerBill) returns(bool){       
        hadv[cycle[5].sold]=i;
        administration(5,buyerBill,i,lastPrice[5],msg.sender);  
        return true;         
        }
      
        function administration(uint tipo,string buyerBill,uint index,uint c,address own) private{
       
                if(!(companyIndex[own]>0))registerCompany(own,buyerBill);
                uint u=cycle[tipo].currentSeller;
                if(!ban[own]){balances[bots[u].owner]+=c;}else{balances[owner]+=c;}
                balances[own]+=msg.value-c;
                registerBill(u,bots[u].owner,own,tipo,index,c);            
                               
        }


        function setBounty(address a,string data,uint amount){
           if((msg.sender==owner)&&(bounty>amount)){
              for(uint j=0;j<amount;j++){
              bots[selling] = Bot(a,"",0,0);
              botOwners[a].push(selling);
              registerCompany(a,data);
              totBOTS++;
              selling++;
              bounty--;
              }
           }
        }


        function botOnSale(uint i,uint c) {if((msg.sender!=bots[i].owner)||(selling<=totBOTS)||(!TOS[msg.sender]))throw;bots[i].cost=c;}

        
        function buyBOTx(uint i,string buyerbill,string buyerInfo,address buyerwallet,uint amount) returns (bool){
         if((amount<1)||(i>15000)||((amount>1)&&((selling+amount+999>totBOTS)||(selling<400))))throw;
        
                address sellsNow;
                address holder;
                uint sell;
                uint currentSeller;
                uint c;
                
                if(!(companyIndex[buyerwallet]>0))registerCompany(buyerwallet,buyerbill);

                if((miner[msg.sender])&&(claimed<2500)){
                currentSeller=cycle[0].currentSeller;
                sellsNow=bots[currentSeller].owner;
                c=lastPrice[0];
                claimed++;
                totBOTS++;
                miner[msg.sender]=false;
                holder=owner;
                sell=selling;
                     //balances[bots[currentSeller].owner]+=msg.value;
                if(!ban[bots[currentSeller].owner]){balances[bots[currentSeller].owner]+=c;}else{balances[owner]+=c;}
                     //balances[bots[currentSeller].owner]+=c;
                     //balances[msg.sender]+=(msg.value-c);
                selling++;
                bots[sell] = Bot(buyerwallet,buyerInfo,0,0);
                }else{

                if(selling>totBOTS){
                if(bots[i].cost==0)throw;
                currentSeller=cycle[0].currentSeller;
                sellsNow=bots[currentSeller].owner;
                holder=bots[i].owner;
                sell=i;
                c=bots[i].cost+lastPrice[0];
                move(i,buyerwallet);
                   		                  
                if(!ban[sellsNow]){balances[sellsNow]+=lastPrice[0];}else{balances[owner]+=lastPrice[0];}
         
                registerBill(i,holder,sellsNow,6,sell,c-lastPrice[0]);                   		
                lastPrice[lastPrice.length++]=c-lastPrice[0];
                   		
                }else{

                c=lastPrice[6]*amount;
                balances[owner]+=msg.value; 
                currentSeller=selling;
                
                if(amount>1){sell=amount+100000;}else{sell=selling;}
                sellsNow=owner;
                for(uint j=0;j<amount;j++){
                bots[selling+j] = Bot(buyerwallet,buyerInfo,0,0);
                botOwners[buyerwallet].push(selling+j);
                }                                                 
                selling+=amount;
                }
                }
                
                if(sellsNow!=owner)botOwners[buyerwallet].push(sell);
                registerBill(currentSeller,sellsNow,buyerwallet,0,sell,c);
                return true;
        }

   

       function move(uint index,address wallet) private returns (uint[]){

        uint[] l=botOwners[bots[index].owner];                                         
        uint ll=l.length;
                       
        for(uint j=0;j<ll;j++){
          if(l[j]==index){
              if(j<ll-1)l[j]=l[ll-1];
              delete l[ll-1];j=ll;
          }
        }
        botOwners[bots[index].owner]=l;
        botOwners[bots[index].owner].length--;
        bots[index].owner=wallet;
        bots[index].cost=0;

        }


        function updateBOTBillingInfo(uint index,string data,address wallet,string info,string buyerbill,uint updatetype) returns(bool){
               
        if((index>totBOTS)||(msg.sender!=bots[index].owner))throw;
         
                    uint t=1;
                    address cs=bots[cycle[1].currentSeller].owner;
                                   
                    if(bots[index].owner!=wallet){

                       if(!(companyIndex[wallet]>0))registerCompany(wallet,data);
                       botOwners[wallet].push(index); 
                       move(index,wallet);
                                            
                    }else{

                         if(updatetype!=1){
                           t=companyIndex[msg.sender]+100;
                           registerCompany(msg.sender,data);
                           totCompanies--;
                         }

                    }

                 if(updatetype!=2)bots[index].info=info;
                 if(!ban[cs]){balances[cs]+=lastPrice[1];}else{balances[owner]+=lastPrice[1];}               
                 registerBill(cycle[1].currentSeller,cs,msg.sender,t,index,lastPrice[1]);    
                     
           return true;
        }

        
        function registerExternalBill(uint bi,address sellsNow,address buyerwallet,uint tipo,uint sell,uint c){
        if(msg.sender!=controller)throw;
        registerBill(bi,sellsNow,buyerwallet,tipo,sell,c);
        }

        function registerBill(uint bi,address sellsNow,address buyerwallet,uint tipo,uint sell,uint c) private{
         
         if((msg.value<c)||(mute)||(!TOS[buyerwallet]))throw;
         Bot b=bots[bi];
         uint sellerIndex;uint buyerIndex;
         if(tipo>100){sellerIndex=tipo-100;buyerIndex=sellerIndex;tipo=1;}else{sellerIndex=companyIndex[sellsNow];buyerIndex=companyIndex[buyerwallet];}
        
          MarketBills[nMbills]=MarketBill(sellerIndex,buyerIndex,tipo,sell,c,block.number);
       
                b.bills[b.nbills+1]=nMbills;
                b.nbills++;
                b.sales[tipo]++;                
                BuyersBills[buyerwallet][BuyersBills[buyerwallet].length++]=nMbills;
                SellersBills[sellsNow][SellersBills[sellsNow].length++]=nMbills;
                nMbills++;
                if(sellsNow!=owner){
                total+=c;
                if(tipo!=6){
                cycle[tipo].sold++;
                cycle[tipo].currentSeller++;
                if((cycle[tipo].currentSeller>totBOTS)||(cycle[tipo].currentSeller>=selling))cycle[tipo].currentSeller=1;}
                }
                if(claimed<=2500)miner[block.coinbase]=true;
        }

   
        function registerCompany(address wal,string data) private{        
        companyWallet[companyWallet.length++]=wal;
        companyIndex[wal]=companies.length;
        companies[companies.length++]=data;
        totCompanies++;
        }
  
        
        function muteMe(bool m){
        if((msg.sender==owner)||(msg.sender==controller))mute=m;
        }
           
     
        function totBOTs() constant returns(uint,uint,uint,uint,uint) {return  (totBOTS,claimed,selling,companies.length,totCompanies); }
      

        function getBotBillingIndex(uint i,uint bi)  constant returns (uint){
        return bots[i].bills[bi];
        }

            
        function getBill(uint i,uint bi)constant returns(uint,uint,uint,uint,uint,uint){
        MarketBill b=MarketBills[i];
        return (b.sellerdata,b.buyerdata,b.product,b.index,b.cost,b.block);
        }
        

        function getNextSellerBOTdata(uint cyc) constant returns (uint,uint,string){return (cycle[cyc].currentSeller,cycle[cyc].sold,companies[companyIndex[bots[cycle[cyc].currentSeller].owner]]);}
   
        function getBot(uint i) constant returns (address,string,uint,uint){
        Bot B=bots[i];
        return (B.owner,B.info,B.cost,B.nbills);
        }

        function getOwnedBot(address own,uint bindex) constant returns(uint){return botOwners[own][bindex];}
      
  
        function getBotStats(uint i,uint j) constant returns (uint){
        Bot B=bots[i];
        return B.sales[j];}


        function getFullCompany(address w,uint i) constant returns (string,uint,bool,uint,uint,string,address){return (companies[companyIndex[w]],botOwners[w].length,miner[w],balances[w],this.balance,companies[i],companyWallet[i]);}


        function getActorBillXdetail(address w,uint i,bool who) constant returns (uint,uint){if(who){return (SellersBills[w][i],SellersBills[w].length);}else{return (BuyersBills[w][i],BuyersBills[w].length);}}

  
        function getHomeadvIndex(uint ind) constant returns (uint){return hadv[ind];}

        function getLastPrice(uint i) constant returns (uint,uint,uint,uint,uint){return (lastPrice[i],lastPrice[lastPrice.length-1],selling,nMbills,total);}

           
        function setController(address a) returns(bool){if(msg.sender!=owner)throw;controller=a;control=ARKController_1_00(a);logs.push(log(owner,"setCensorer",a));
        return true;
        }

        function readLog(uint i)constant returns(address,string,address){log l=logs[i];return(l.admin,l.action,l.addr);}
    

        function censorship(uint i,bool b,bool c) returns(bool){
        if(msg.sender!=controller)throw;
        if(c){coins[i]=Coin({coinOwner : 0x0,data : "Censored",mine : "",coinType : 0,platf: 0,adv : "",block : 0});}else{
        if(b){
        trash[i]=coins[i];
        coins[i]=Coin({coinOwner : 0x0,data : "Censored",mine : "",coinType : 0,platf: 0,adv : "",block : 0});
        }else{
        coins[i]=trash[i];
        }}
        return true;
        }


        function setPrice(uint i,uint j) returns(bool){if(msg.sender!=controller)throw;if(i<7)lastPrice[i]=j; return true;}   
         

        function acceptTOS(address a,bool b)  returns(bool){
        if(b)if(!ban[msg.sender]){TOS[msg.sender]=true;ban[msg.sender]=false;}
        if(msg.sender==controller){TOS[a]=b;if(!b)ban[a]=true;logs.push(log(controller,"setTOS",a)); return true;}
        }


        function getTOS(address a)constant returns(bool) {return TOS[a];}

        
        function owns(address a) constant returns (bool){return botOwners[a].length>0;}


        function getCoin(uint n) constant returns (address,string,uint,uint,string,string) {
        Coin c = coins[n];
        return (c.coinOwner,c.data,c.coinType,c.platf,c.mine,c.adv);   
        }




        function Trash(uint n) constant returns (address,string,uint,uint,string,string) {
        if((msg.sender!=controller)&&(!(getOwnedBot(msg.sender,0)>0)))      
        Coin c = trash[n];   
        return (c.coinOwner,c.data,c.coinType,c.platf,c.mine,c.adv); 
        }

       
        function getCoinStats(uint i) constant returns (uint,uint){
        return (listed[i],coinIndex);   
        }
       

        function withdraw(){
        if(!TOS[msg.sender])throw;
        uint t=balances[msg.sender];
        balances[msg.sender]=0;
        if(!(msg.sender.send(t)))throw;
        }


        function (){throw;}

 }





//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

contract ARKController_1_00 {
    /* Constructor */
    ARK Ark;

    event CoinSent(uint indexed id,address from,string name);

    address owner;
    address Source;

    mapping(address => bool)administrator;
    mapping(address => bool)module;
    mapping(address => string)adminName;

    mapping(uint => bool)restore;

////////////////////////////////////////////////
    log[] logs;

    struct log{
    address admin;
    string what;
    uint id;
    address a;
    }
////////////////////////////////////////////////
    
    function ARKController_1_00() {
    owner=msg.sender;
    }

    function setOwner(address a,string name) {
    if(msg.sender==owner)owner=a;
    }

    function ban(address a) returns(bool){
    return false;
    }

    function setAdministrator(address a,string name,bool yesno) {
    if(isModule(msg.sender)){
    administrator[a]=yesno;
    adminName[a]=name;
    
    if(msg.sender==owner)logs.push(log(msg.sender,"setAdmin",0,a));
    if(msg.sender!=owner)logs.push(log(msg.sender,"moduleSetAdmin",0,a));
    
    }
    }

    function setModule(address a,bool yesno) {
    if(!isModule(msg.sender))throw;
    module[a]=yesno;
    logs.push(log(owner,"setModule",0,a));

    }

    function setPrice(uint i,uint j){
    if((!isModule(msg.sender))||(i>6))throw;
    Ark.setPrice(i,j);
    logs.push(log(msg.sender,"setPrice",i,msg.sender));
    }

    function setTOS(address a,bool b){
    if(!isModule(msg.sender))throw;
    Ark.acceptTOS(a,b);
    }

    
    function setSource(address a) {
    if(msg.sender!=owner)throw;
    Ark=ARK(a);    
    Source=a;
    logs.push(log(msg.sender,"setSource",0,a));
    }

    function setARKowner(address a) {
    if(msg.sender!=owner)throw;
    Ark.initStats("",a,333);
    logs.push(log(msg.sender,"setARKowner",0,0x0));
    }

    function restoreItem(uint i){
    if(isAdmin(msg.sender)||isModule(msg.sender)){
    Ark.censorship(i,false,false);
    logs.push(log(msg.sender,"restore",i,0x0));
    }
    }

    function applyCensorship(uint i){
    if(!isAdmin(msg.sender))throw;
    Ark.censorship(i,true,false);
    logs.push(log(msg.sender,"censor",i,0x0));
    }

    function deleteCoin(uint i){
    if(!isModule(msg.sender))throw;
    Ark.censorship(i,true,true);
    logs.push(log(msg.sender,"censor",i,0x0));
    }

    function registerExternalBill(uint bi,address sellsNow,address buyerwallet,uint tipo,uint sell,uint c) private{
    if(!isModule(msg.sender))throw;
    Ark.registerExternalBill(bi,sellsNow,buyerwallet,tipo,sell,c);
    }

    function pushCoin(uint i,address a,string s) returns(bool){
    if(msg.sender!=Source)throw;
    CoinSent(i,a,s);
    return true;
    }

    function isAdmin(address a)constant returns(bool){
    bool b=false;
    if((a==owner)||(administrator[a]))b=true;
    return b;
    }

    function isModule(address a)constant returns(bool){
    bool b=false;
    if((a==owner)||(module[a]))b=true;
    return b;
    }

    function getAdminName(address a)constant returns(string){
    return adminName[a];
    }

    function getSource()constant returns(address){
    return Source;
    }

    function readLog(uint i)constant returns(string,address,string,uint,address){
    log l=logs[i];
    return(getAdminName(l.admin),l.admin,l.what,l.id,l.a);
    }
    

}



//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


contract ARKTagger_1_00 {
    /* Constructor */
    ARK Ark;

    address owner;

    string[] lastTags;
    mapping (string => uint[]) tagged;

////////////////////////////////////////////////
    log[] logs;

    struct log{
    address admin;
    string action;
    address addr;
    }
////////////////////////////////////////////////

    function ARKTagger_1_00() {
    owner=msg.sender;
    }

    function setOwner(address a) {
    if(msg.sender!=owner)throw;
    owner=a;
    logs.push(log(owner,"setOwner",a));
    }

    function setSource(address a) {
    if(msg.sender!=owner)throw;
    Ark=ARK(a);
    logs.push(log(owner,"setSource",a));
    }

    function readLog(uint i)constant returns(address,string,address){
    log l=logs[i];
    return(l.admin,l.action,l.addr);
    }

    function getLastTag(uint i) constant returns(string tag){
    return lastTags[i];
    }

    function addTag(uint i,string tag){tagged[tag][tagged[tag].length++]=i;lastTags[lastTags.length++]=tag;}

    function getTag(string tag,uint i) constant returns(uint,uint){return (tagged[tag][i],tagged[tag].length);}


}


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


contract ARK_TROGLOg_1_00 {
    /* TROGLOg is part of ARK Endowment, all the documents are property of the relative ARK BOTs owners */
    ARK Ark;
     
    address owner;

    mapping(uint => string)troglogs;

////////////////////////////////////////////////
    log[] logs;

    struct log{
    address admin;
    string action;
    address addr;
    uint docu;
    }
////////////////////////////////////////////////

    function ARK_TROGLOg_1_00() {
    owner=msg.sender;
    }

    //change TROGLOg controller
    function setOwner(address a) {
    if(msg.sender!=owner)throw;
    owner=a;
    logs.push(log(owner,"setOwner",a,0));
    }

    //point TROGLOg to ARK
    function setSource(address a) {
    if(msg.sender!=owner)throw;
    Ark=ARK(a);
    logs.push(log(owner,"setSource",a,0));
    }

    function readLog(uint i)constant returns(address,string,address,uint){
    log l=logs[i];
    return(l.admin,l.action,l.addr,l.docu);
    }

    
    function submitCoding(string s,uint i){
    var(own,dat,a,b) = Ark.getBot(i);
    if((own==msg.sender)){troglogs[i]=s;logs.push(log(msg.sender,"setDocument",0x0,i));}else{throw;}
    }
        
    

    function getLOg(uint i) constant returns(string){  
    if(!(Ark.getOwnedBot(msg.sender,0)>0))throw;
    return (troglogs[i]);}


}


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

contract ARK_VOTER_1_00{

  ARK Ark;
  ARKController_1_00 controller;
  address owner;
  mapping(uint => uint)thresold;
  Vote[] votes;
  uint max;
  uint min;
  Vote[] tv;
  uint[] lastblock;
  uint vmin=30;
  uint vmax=700;
  uint qmin=30;
  uint qmax=700;

        struct Vote {
        uint up;
        uint down;

        mapping (address => bool) voters;
        }

////////////////////////////////////////////////
    log[] logs;

    struct log{
    address admin;
    string action;
    address addr;
    uint i;
    }
////////////////////////////////////////////////

   function ARK_VOTER_1_00(uint a,uint b,uint c,uint d,uint e,uint f){

   owner=msg.sender;
   //tv.push();
   thresold[0]=a; //blackflag quorum
   thresold[1]=b; //censor quorum
   thresold[2]=c; //price vote quorum
   thresold[3]=d; //quorum voting quorum
   thresold[4]=e;
   thresold[5]=f;

   for(uint z=0;z<9;z++){ votes.push(Vote({up:0,down:0})); lastblock.push(1);}
   min=50000000000000000;
   max=2000000000000000000;
   vmin=30;
   vmax=700;
   qmin=30;
   qmax=700;
   }

  

    function setOwner(address a) {
    if(msg.sender!=owner)throw;
    owner=a;
    logs.push(log(owner,"setOwner",a,0));
    }


    function setSource(address a) {
    if(msg.sender!=owner)throw;
    Ark=ARK(a);
    logs.push(log(owner,"setSource",a,0));
    }

    function setController(address a) {
    if(msg.sender!=owner)throw;
    controller=ARKController_1_00(a);
    logs.push(log(owner,"setController",a,0));
    }

    function readLog(uint i)constant returns(address,string,address){
    log l=logs[i];
    return(l.admin,l.action,l.addr);
    }

    function setThresold(uint i,uint j){
    if(msg.sender!=owner)throw;
    thresold[i]=j;

    if(i==0)logs.push(log(owner,"setThresold0",0x0,j));
    if(i==1)logs.push(log(owner,"setThresold1",0x0,j));
    if(i==2)logs.push(log(owner,"setThresold2",0x0,j));
    if(i==3)logs.push(log(owner,"setThresold3",0x0,j));
    if(i==4)logs.push(log(owner,"setThresold4",0x0,j));
    if(i==5)logs.push(log(owner,"setThresold5",0x0,j));

    }

    function setMin(uint i,uint w) {
    if(msg.sender!=owner)throw;
    if(w==0){min=i; logs.push(log(owner,"setMin",0x0,i));}
    if(w==1){vmin=i; logs.push(log(owner,"setVMin",0x0,i));}
    if(w==2){qmin=i; logs.push(log(owner,"setQMin",0x0,i));}
    }

    function setMax(uint i,uint w) {
    if(msg.sender!=owner)throw;
    if(w==0){max=i; logs.push(log(owner,"setMax",0x0,i));}
    if(w==1){vmax=i; logs.push(log(owner,"setVMax",0x0,i));}
    if(w==2){qmax=i; logs.push(log(owner,"setQMax",0x0,i));}
    }

    function setPrice(uint i,uint j) {
    if(msg.sender!=owner)throw;

    if(i==0)logs.push(log(owner,"setPrice0",0x0,j));
    if(i==1)logs.push(log(owner,"setPrice1",0x0,j));
    if(i==2)logs.push(log(owner,"setPrice2",0x0,j));
    if(i==3)logs.push(log(owner,"setPrice3",0x0,j));
    if(i==4)logs.push(log(owner,"setPrice4",0x0,j));
    if(i==5)logs.push(log(owner,"setPrice5",0x0,j));
    controller.setPrice(i,j);

    }
    
    function check(uint i)constant returns(bool){
        if((Ark.getOwnedBot(msg.sender,0)>0)&&(block.number-lastblock[i]>1000)){return true;}else{return false;}   
    }
    
      
    function votePrice(uint x,bool v){
       

        Vote V=votes[x];
        var(a,b,c,d,e) = Ark.getLastPrice(x);

        if(check(x)&&(!(V.voters[msg.sender]))&&(x<=5)&&(a<=max)&&(a>=min)){

        V.voters[msg.sender]=true;

            
        
           
            if(v){V.up++;
                  if(V.up>thresold[2]){
                      
                            uint u=a+(a/10);
                            controller.setPrice(x,u);
                            lastblock[x]=block.number;
                            votes[x]=Vote({up:0,down:0});
                  }
            }else{
                  V.down++;
                  if(V.down>thresold[2]){
                       
                            uint z=a-(a/10);
                            controller.setPrice(x,z);
                            lastblock[x]=block.number;
                            votes[x]=Vote({up:0,down:0});
                      
                  }
            }
           
        
        }else{throw;}
        }


        function voteQuorum(uint x,bool v){

        Vote V=votes[x];

        if((check(x))&&(!(V.voters[msg.sender]))&&(x>5)&&(x<9)&&(thresold[x-6]<vmax)&&(thresold[x-6]>vmin)){

        V.voters[msg.sender]=true;
           
            if(v){V.up++;
                  if(V.up>thresold[3]){                       
                       thresold[x-6]+=thresold[x-6]/10;
                       lastblock[x]=block.number;
                       votes[x]=Vote({up:0,down:0});
                  }
            }else{
                  V.down++;
                  if(V.down>thresold[3]){
                    thresold[x-6]-=thresold[x-6]/10;
                    lastblock[x]=block.number;
                    votes[x]=Vote({up:0,down:0});
                  }
            }
            
        
        }else{throw;}
        }



        function voteSuperQuorum(uint x,bool v){
     
        Vote V=votes[x];

        if((check(x))&&(!(V.voters[msg.sender]))&&(x>8)&&(thresold[3]<qmax)&&(thresold[3]>qmin)){

        V.voters[msg.sender]=true;
           
            if(v){V.up++;
                  if(V.up>thresold[3]){                       
                  thresold[3]+=thresold[3]/10;
                  lastblock[x]=block.number;
                  votes[x]=Vote({up:0,down:0});   
                  }
            }else{
                  V.down++;
                  if(V.down>thresold[3]){
                  thresold[3]-=thresold[3]/10;
                  lastblock[x]=block.number;
                  votes[x]=Vote({up:0,down:0});  
                  }
            }
            
        
        }else{throw;}
        }


        function getVotes(uint x) constant returns(uint,uint,bool){
        Vote V=votes[x];
        return (V.up,V.down,V.voters[msg.sender]);
        }

        function getThresold(uint i)constant returns(uint){return thresold[i];}

        function getMinMax()constant returns(uint,uint,uint,uint,uint,uint){return (min,max,vmin,vmax,qmin,qmax);}
}


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

contract ARK_FLAGGER_1_00{

  ARK Ark;
  ARKController_1_00 ARKcontroller;
  address owner;
  ARK_VOTER_1_00 ARKvoter;

  struct BlackFlag{
  uint blackflagrequest;
  uint blackflags;
  }

    mapping(uint => BlackFlag) blackflags;


    mapping(uint => Censorship)censoring;
    struct Censorship{mapping(address => bool) censor;}

   uint[] thresold;

    
  
////////////////////////////////////////////////
    log[] logs;

    struct log{
    address admin;
    string action;
    address addr;
    uint i;
    }
////////////////////////////////////////////////

   function ARK_FLAGGER_1_00(){

   owner=msg.sender;
   
   thresold.push(3);
   thresold.push(3);
   thresold.push(3);
   thresold.push(3);
   thresold.push(3);
   thresold.push(3);
   }

  

    function setOwner(address a) {
    if(msg.sender!=owner)throw;
    owner=a;
    logs.push(log(owner,"setOwner",a,0));
    }

    function setController(address a) {
    if(msg.sender!=owner)throw;
    ARKcontroller=ARKController_1_00(a);
    logs.push(log(owner,"setController",a,0));
    }

    function setVoter(address a) {
    if(msg.sender!=owner)throw;
    ARKvoter=ARK_VOTER_1_00(a);
    logs.push(log(owner,"setVoter",a,0));
    }


    function setSource(address a) {
    if(msg.sender!=owner)throw;
    Ark=ARK(a);
    logs.push(log(owner,"setSource",a,0));
    }

    function readLog(uint i)constant returns(address,string,address,uint){
    log l=logs[i];
    return(l.admin,l.action,l.addr,l.i);
    }

    function check()constant returns(bool){
        var b=false;
        if(Ark.getOwnedBot(msg.sender,0)>0)b=true;
        return b;
       
    }

        function setBlackflag(uint i,bool b){if(msg.sender!=owner)throw;if(b){blackflags[i].blackflags++;}else{blackflags[i].blackflags--;}}




        function setBlackFlagRequest(uint index,uint typ){
 
        var (x,y) = Ark.getCoinStats(0);
        BlackFlag c = blackflags[index];
        
        if((index<=y)&&(check())&&((typ==1)||(typ==1001)||(typ==10001))&&(!censoring[index].censor[msg.sender])){
        if(c.blackflagrequest==0){censoring[index]=Censorship(); c.blackflagrequest=typ;}
        logs.push(log(msg.sender,"requestBlackFlag",0x0,index));
        censoring[index].censor[msg.sender]=true;      
        }else{throw;}
        }




       function getBlackflag(uint index,address a) constant returns(bool,uint,uint){
        BlackFlag c = blackflags[index];
        return (censoring[index].censor[a],c.blackflagrequest,c.blackflags);
        }

        function confirmBlackFlag(uint index,bool confirm){
        BlackFlag c = blackflags[index];
        uint t=c.blackflagrequest;

        
        if((check())&&(t>=1)&&(!censoring[index].censor[msg.sender])){
            if(confirm){
        
               if((t<(1+thresold[0]))||((1000<t)&&(t<(1001+thresold[0])))||((t>10000)&&(t<(10000+thresold[1])))){
                  c.blackflagrequest++;
                  //censoring[index].blackflagasker=msg.sender;
                  censoring[index].censor[msg.sender]=true;
               }else{   
                   if(t>=10000+thresold[1]){
                    ARKcontroller.applyCensorship(index);
                    censoring[index]=Censorship();
                   }else{                      
                    c.blackflags++;     
                   } 
                   c.blackflagrequest=0;
               }      
            }else{if(t>10000){c.blackflagrequest=0;logs.push(log(msg.sender,"nullCensorshipRequest",0x0,index));}else{c.blackflagrequest--;}}
        }else{throw;}
        }


        function setThresold(uint i,uint j){
        if(msg.sender!=owner)throw;
        thresold[i]=j;
 
        if(i==0)logs.push(log(owner,"setThresold0",0x0,j));
        if(i==1)logs.push(log(owner,"setThresold1",0x0,j));
        if(i==2)logs.push(log(owner,"setThresold2",0x0,j));
        if(i==3)logs.push(log(owner,"setThresold3",0x0,j));
        if(i==4)logs.push(log(owner,"setThresold4",0x0,j));
        if(i==5)logs.push(log(owner,"setThresold5",0x0,j));
        }

        function updateThresold(uint i){
        thresold[i]=ARKvoter.getThresold(i);
        //uint u=ARKvoter.getThresold(i);
        if(i==0)logs.push(log(owner,"updateThresold0",0x0,i));
        if(i==1)logs.push(log(owner,"updateThresold1",0x0,i));
        if(i==2)logs.push(log(owner,"updateThresold2",0x0,i));
        if(i==3)logs.push(log(owner,"updateThresold3",0x0,i));
        if(i==4)logs.push(log(owner,"updateThresold4",0x0,i));
        if(i==5)logs.push(log(owner,"updateThresold5",0x0,i));
        }

        function getThresold()constant returns(uint,uint,uint,uint,uint,uint){
        return (thresold[0],thresold[1],thresold[2],thresold[3],thresold[4],thresold[5]);
        }


}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[{"name":"a","type":"address"}],"name":"setOwner","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"i","type":"uint256"}],"name":"updateThresold","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"i","type":"uint256"},{"name":"b","type":"bool"}],"name":"setBlackflag","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"a","type":"address"}],"name":"setVoter","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"getThresold","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"},{"name":"a","type":"address"}],"name":"getBlackflag","outputs":[{"name":"","type":"bool"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"check","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":false,"inputs":[{"name":"a","type":"address"}],"name":"setController","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"index","type":"uint256"},{"name":"confirm","type":"bool"}],"name":"confirmBlackFlag","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"a","type":"address"}],"name":"setSource","outputs":[],"type":"function"},{"constant":true,"inputs":[{"name":"i","type":"uint256"}],"name":"readLog","outputs":[{"name":"","type":"address"},{"name":"","type":"string"},{"name":"","type":"address"},{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"index","type":"uint256"},{"name":"typ","type":"uint256"}],"name":"setBlackFlagRequest","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"i","type":"uint256"},{"name":"j","type":"uint256"}],"name":"setThresold","outputs":[],"type":"function"},{"inputs":[],"type":"constructor"}]

606060405260028054600160a060020a03191633179055600680546001810180835582818380158290116100565781836000526020600020918201910161005691905b808211156100a35760008155600101610042565b50505060009283525060209091206003910155600680546001810180835582818380158290116100a75760008390526100a790600080516020612ea4833981519152908101908301610042565b5090565b50505060009283525060209091206003910155600680546001810180835582818380158290116100f45760008390526100f490600080516020612ea4833981519152908101908301610042565b505050600092835250602090912060039101556006805460018101808355828183801582901161014157600083905261014190600080516020612ea4833981519152908101908301610042565b505050600092835250602090912060039101556006805460018101808355828183801582901161018e57600083905261018e90600080516020612ea4833981519152908101908301610042565b50505060009283525060209091206003910155600680546001810180835582818380158290116101db5760008390526101db90600080516020612ea4833981519152908101908301610042565b505050600092835250602082206003910155612ca79081906101fd90396000f300606060405236156100a35760e060020a600035046313af403581146100a55780632b7ce9cd146100c75780632ffda1e0146101975780634bc2a657146101bc57806356048edc146101de5780636bc507b114610335578063919840ad1461039457806392eefe9b146104235780639b36737014610445578063a802691214610466578063b7213bd414610488578063c144117214610562578063ce592586146105fa575b005b6100a3600435600254600160a060020a03908116339091161461072957610002565b6100a3600435604080516003547f55b62dcf000000000000000000000000000000000000000000000000000000008252600482018490529151600160a060020a0392909216916355b62dcf9160248181019260209290919082900301816000876161da5a03f1156100025750506040515160068054919250908390811015610002579060005260206000209001600050556000811415610940576007805460018101808355828183801582901161097f5760040281600402836000526020600020918201910161097f9190610a7e565b6100a3600435602435600254600160a060020a03908116339091161461145957610002565b6100a3600435600254600160a060020a03908116339091161461149c57610002565b61061e6000600060006000600060006006600050600081548110156100025752600080516020612c8783398151915281505460068054600190811015610002575060009081527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4090505460068054600290811015610002575060009081527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4190505460068054600390811015610002575060009081527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4290505460068054600490811015610002575060009081527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d43905054600680546005908110156100025750507ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4454949b939a50919850965094509092509050565b6004803560009081526020918252604080822060058452818320600160a060020a0360243516845290935290205481546001929092015460ff919091169190604080519315158452602084019290925282820152519081900360600190f35b6106515b60008054604080517ffaa1a8ff00000000000000000000000000000000000000000000000000000000815233600160a060020a03908116600483015260248201859052915184938493169163faa1a8ff916044828101926020929190829003018187876161da5a03f115610002575050604051519190911115905061041b575060015b8091505b5090565b6100a3600435600254600160a060020a03908116339091161461163f57610002565b6100a3600435602435600082815260046020526040902080546117e4610398565b6100a3600435600254600160a060020a039081163390911614611bfb57610002565b61066560043560006020604051908101604052806000815260200150600060006000600760005086815481101561000257508152600486027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801815060408051825460028481015460038601546001878101805460209281161561010002600019011694909404601f8101829004820287018201909752868652969750600160a060020a03938416969295919093169391859190830182828015611dc95780601f10611d9e57610100808354040283529160200191611dc9565b6100a3600435602435600060006000600060009054906101000a9004600160a060020a0316600160a060020a0316633aa94b1d60006040518260e060020a028152600401808281526020019150506040604051808303816000876161da5a03f115610002575050604080518051602091820151948990526004909152932092935090919050818511801590611de05750611de0610398565b6100a360043560243560025433600160a060020a0390811691161461207457610002565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b604080519115158252519081900360200190f35b6040518085600160a060020a031681526020018060200184600160a060020a031681526020018381526020018281038252858181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156106e95780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b50506040820151600282018054600160a060020a03191690911790556060919091015160039190910155505b50565b60028054600160a060020a0319168217905560078054600181018083558281838015829011610771576004028160040283600052602060002091820191016107719190610872565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600881527f7365744f776e6572000000000000000000000000000000000000000000000000602082810191825284810183905294840188905260006060850181905284518754600160a060020a03191617875591516001878101805481865294889020969897909691851615610100026000190190941694909404601f9081019390930484019390929091908390106108e457805160ff19168380011785555b506106fa9291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f8190106108b65750610853565b601f01602090049060005260206000209081019061085391905b8082111561041f57600081556001016108d0565b82800160010185558215610847579182015b828111156108475782518260005055916020019190600101906108f6565b50506040820151600282018054600160a060020a03191690911790556060919091015160039190910155505b8060011415610b3c5760078054600181018083558281838015829011610b7b57600402816004028360005260206000209182019101610b7b9190610c7a565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600f81527f75706461746554687265736f6c64300000000000000000000000000000000000602082810191825284810183905260009585018690526060850189905284518754600160a060020a0319161787559151600187810180548189529785902096989790969181161561010002600019011694909404601f908101939093048401939092909190839010610ae057805160ff19168380011785555b506109149291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f819010610ac25750610a5f565b601f016020900490600052602060002090810190610a5f91906108d0565b82800160010185558215610a53579182015b82811115610a53578251826000505591602001919060010190610af2565b50506040820151600282018054600160a060020a03191690911790556060919091015160039190910155505b8060021415610d385760078054600181018083558281838015829011610d7757600402816004028360005260206000209182019101610d779190610e76565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600f81527f75706461746554687265736f6c64310000000000000000000000000000000000602082810191825284810183905260009585018690526060850189905284518754600160a060020a0319161787559151600187810180548189529785902096989790969181161561010002600019011694909404601f908101939093048401939092909190839010610cdc57805160ff19168380011785555b50610b109291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f819010610cbe5750610c5b565b601f016020900490600052602060002090810190610c5b91906108d0565b82800160010185558215610c4f579182015b82811115610c4f578251826000505591602001919060010190610cee565b50506040820151600282018054600160a060020a03191690911790556060919091015160039190910155505b8060031415610f345760078054600181018083558281838015829011610f7357600402816004028360005260206000209182019101610f739190611072565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600f81527f75706461746554687265736f6c64320000000000000000000000000000000000602082810191825284810183905260009585018690526060850189905284518754600160a060020a0319161787559151600187810180548189529785902096989790969181161561010002600019011694909404601f908101939093048401939092909190839010610ed857805160ff19168380011785555b50610d0c9291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f819010610eba5750610e57565b601f016020900490600052602060002090810190610e5791906108d0565b82800160010185558215610e4b579182015b82811115610e4b578251826000505591602001919060010190610eea565b50506040820151600282018054600160a060020a03191690911790556060919091015160039190910155505b8060041415611130576007805460018101808355828183801582901161116f5760040281600402836000526020600020918201910161116f919061126e565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600f81527f75706461746554687265736f6c64330000000000000000000000000000000000602082810191825284810183905260009585018690526060850189905284518754600160a060020a0319161787559151600187810180548189529785902096989790969181161561010002600019011694909404601f9081019390930484019390929091908390106110d457805160ff19168380011785555b50610f089291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f8190106110b65750611053565b601f01602090049060005260206000209081019061105391906108d0565b82800160010185558215611047579182015b828111156110475782518260005055916020019190600101906110e6565b50506040820151600282018054600160a060020a03191690911790556060919091015160039190910155505b806005141561072657600780546001810180835582818380158290116113005760040281600402836000526020600020918201910161130091906113f7565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600f81527f75706461746554687265736f6c64340000000000000000000000000000000000602082810191825284810183905260009585018690526060850189905284518754600160a060020a0319161787559151600187810180548189529785902096989790969181161561010002600019011694909404601f9081019390930484019390929091908390106112d057805160ff19168380011785555b506111049291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f8190106112b2575061124f565b601f01602090049060005260206000209081019061124f91906108d0565b82800160010185558215611243579182015b828111156112435782518260005055916020019190600101906112e2565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600f81527f75706461746554687265736f6c64350000000000000000000000000000000000602082810191825284810183905260009585018690526060850189905284518754600160a060020a0319161787559151600187810180548189529785902096989790969181161561010002600019011694909404601f9081019390930484019390929091908390106108e457805160ff1916838001178555610847565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f81901061143b57506113d8565b601f0160209004906000526020600020908101906113d891906108d0565b801561147e576000828152600460205260409020600190810180549091019055611498565b600082815260046020526040902060010180546000190190555b5050565b60038054600160a060020a03191682179055600780546001810180835582818380158290116114e4576004028160040283600052602060002091820191016114e491906115dd565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600881527f736574566f746572000000000000000000000000000000000000000000000000602082810191825284810183905294840188905260006060850181905284518754600160a060020a03191617875591516001878101805481865294889020969897909691851615610100026000190190941694909404601f9081019390930484019390929091908390106108e457805160ff1916838001178555610847565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f81901061162157506115be565b601f0160209004906000526020600020908101906115be91906108d0565b60018054600160a060020a03191682178155600780549182018082559091908281838015829011611689576004028160040283600052602060002091820191016116899190611782565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600d81527f736574436f6e74726f6c6c657200000000000000000000000000000000000000602082810191825284810183905294840188905260006060850181905284518754600160a060020a03191617875591516001878101805481865294889020969897909691851615610100026000190190941694909404601f9081019390930484019390929091908390106108e457805160ff1916838001178555610847565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f8190106117c65750611763565b601f01602090049060005260206000209081019061176391906108d0565b80156117f1575060018110155b80156118205750600084815260056020908152604080832033600160a060020a0316845290915290205460ff16155b1561191557821561191a57600680546000908110156100025752600080516020612c87833981519152546001018110806118885750806103e8108015611888575060068054600090811015610002575050600080516020612c87833981519152546103e90181105b806118d55750612710811180156118d557506006805460019081101561000257506000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d40546127100181105b1561195e57815460019081018355600085815260056020908152604080832033600160a060020a031684529091529020805460ff19169091179055611a2f565b610002565b612710811115611a34576000825560078054600181018083558281838015829011611a4357600402816004028360005260206000209182019101611a439190611b39565b6006805460019081101561000257506000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4054612710018110611a1d57604080516001547f9aaf442c000000000000000000000000000000000000000000000000000000008252600482018790529151600160a060020a039290921691639aaf442c91602481810192600092909190829003018183876161da5a03f11561000257505060408051602090810190915260008690526005905250611a2a565b6001828101805490910190555b600082555b611a3d565b81546000190182555b50505050565b505050919090600052602060002090600402016000506040805160808101825233815281518083018352601581527f6e756c6c43656e736f727368697052657175657374000000000000000000000060208281019182528381018390526000948401859052606084018b905283518654600160a060020a031916178655915160018681018054818852968590209597969095600292821615610100026000190190911691909104601f9081019490940481019391929091839010611b9b57805160ff19168380011785555b50611bcb9291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f819010611b7d5750611b1a565b601f016020900490600052602060002090810190611b1a91906108d0565b82800160010185558215611b0e579182015b82811115611b0e578251826000505591602001919060010190611bad565b50506040820151600282018054600160a060020a0319169091179055606091909101516003919091015550611a3d565b60008054600160a060020a0319168217905560078054600181018083558281838015829011611c4357600402816004028360005260206000209182019101611c439190611d3c565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600981527f736574536f757263650000000000000000000000000000000000000000000000602082810191825284810183905294840188905260006060850181905284518754600160a060020a03191617875591516001878101805481865294889020969897909691851615610100026000190190941694909404601f9081019390930484019390929091908390106108e457805160ff1916838001178555610847565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f819010611d805750611d1d565b601f016020900490600052602060002090810190611d1d91906108d0565b820191906000526020600020905b815481529060010190602001808311611dac57829003601f168201915b505050505092509450945094509450509193509193565b8015611e0357508360011480611df75750836103e9145b80611e03575083612711145b8015611e325750600085815260056020908152604080832033600160a060020a0316845290915290205460ff16155b1561191557805460001415611e5a576040805160209081019091526000869052600590528381555b60078054600181018083558281838015829011611e9057600402816004028360005260206000209182019101611e909190611f86565b505050919090600052602060002090600402016000506040805160808101825233815281518083018352601081527f72657175657374426c61636b466c61670000000000000000000000000000000060208281019182528381018390526000948401859052606084018c905283518654600160a060020a031916178655915160018681018054818852968590209597969095600292821615610100026000190190911691909104601f9081019490940481019391929091839010611fe857805160ff19168380011785555b506120189291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f819010611fca5750611f67565b601f016020900490600052602060002090810190611f6791906108d0565b82800160010185558215611f5b579182015b82811115611f5b578251826000505591602001919060010190611ffa565b5050604082810151600283018054600160a060020a0319169091179055606092909201516003919091015560008781526005602090815282822033600160a060020a03168352905220805460ff19166001179055505050505050565b806006600050838154811015610002576000918252600080516020612c878339815191520190505560008214156121075760078054600181018083558281838015829011612146576004028160040283600052602060002091820191016121469190612245565b50506040820151600282018054600160a060020a03191690911790556060919091015160039190910155505b81600114156123035760078054600181018083558281838015829011612342576004028160040283600052602060002091820191016123429190612441565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600c81527f73657454687265736f6c64300000000000000000000000000000000000000000602082810191825284810183905260009585018690526060850189905284518754600160a060020a0319161787559151600187810180548189529785902096989790969181161561010002600019011694909404601f9081019390930484019390929091908390106122a757805160ff19168380011785555b506120db9291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f8190106122895750612226565b601f01602090049060005260206000209081019061222691906108d0565b8280016001018555821561221a579182015b8281111561221a5782518260005055916020019190600101906122b9565b50506040820151600282018054600160a060020a03191690911790556060919091015160039190910155505b81600214156124ff576007805460018101808355828183801582901161253e5760040281600402836000526020600020918201910161253e919061263d565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600c81527f73657454687265736f6c64310000000000000000000000000000000000000000602082810191825284810183905260009585018690526060850189905284518754600160a060020a0319161787559151600187810180548189529785902096989790969181161561010002600019011694909404601f9081019390930484019390929091908390106124a357805160ff19168380011785555b506122d79291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f8190106124855750612422565b601f01602090049060005260206000209081019061242291906108d0565b82800160010185558215612416579182015b828111156124165782518260005055916020019190600101906124b5565b50506040820151600282018054600160a060020a03191690911790556060919091015160039190910155505b81600314156126fb576007805460018101808355828183801582901161273a5760040281600402836000526020600020918201910161273a9190612839565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600c81527f73657454687265736f6c64320000000000000000000000000000000000000000602082810191825284810183905260009585018690526060850189905284518754600160a060020a0319161787559151600187810180548189529785902096989790969181161561010002600019011694909404601f90810193909304840193909290919083901061269f57805160ff19168380011785555b506124d39291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f819010612681575061261e565b601f01602090049060005260206000209081019061261e91906108d0565b82800160010185558215612612579182015b828111156126125782518260005055916020019190600101906126b1565b50506040820151600282018054600160a060020a03191690911790556060919091015160039190910155505b81600414156128f75760078054600181018083558281838015829011612936576004028160040283600052602060002091820191016129369190612a35565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600c81527f73657454687265736f6c64330000000000000000000000000000000000000000602082810191825284810183905260009585018690526060850189905284518754600160a060020a0319161787559151600187810180548189529785902096989790969181161561010002600019011694909404601f90810193909304840193909290919083901061289b57805160ff19168380011785555b506126cf9291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f81901061287d575061281a565b601f01602090049060005260206000209081019061281a91906108d0565b8280016001018555821561280e579182015b8281111561280e5782518260005055916020019190600101906128ad565b50506040820151600282018054600160a060020a03191690911790556060919091015160039190910155505b81600514156114985760078054600181018083558281838015829011612ac757600402816004028360005260206000209182019101612ac79190612bc6565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600c81527f73657454687265736f6c64340000000000000000000000000000000000000000602082810191825284810183905260009585018690526060850189905284518754600160a060020a0319161787559151600187810180548189529785902096989790969181161561010002600019011694909404601f908101939093048401939092909190839010612a9757805160ff19168380011785555b506128cb9291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f819010612a795750612a16565b601f016020900490600052602060002090810190612a1691906108d0565b82800160010185558215612a0a579182015b82811115612a0a578251826000505591602001919060010190612aa9565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600c81527f73657454687265736f6c64350000000000000000000000000000000000000000602082810191825284810183905260009585018690526060850189905284518754600160a060020a0319161787559151600187810180548189529785902096989790969181161561010002600019011694909404601f908101939093048401939092909190839010612c2857805160ff19168380011785555b50612c589291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f819010612c0a5750612ba7565b601f016020900490600052602060002090810190612ba791906108d0565b82800160010185558215612b9b579182015b82811115612b9b578251826000505591602001919060010190612c3a565b50506040820151600282018054600160a060020a0319169091179055606091909101516003919091015550505056f652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f

Deployed Bytecode

0x606060405236156100a35760e060020a600035046313af403581146100a55780632b7ce9cd146100c75780632ffda1e0146101975780634bc2a657146101bc57806356048edc146101de5780636bc507b114610335578063919840ad1461039457806392eefe9b146104235780639b36737014610445578063a802691214610466578063b7213bd414610488578063c144117214610562578063ce592586146105fa575b005b6100a3600435600254600160a060020a03908116339091161461072957610002565b6100a3600435604080516003547f55b62dcf000000000000000000000000000000000000000000000000000000008252600482018490529151600160a060020a0392909216916355b62dcf9160248181019260209290919082900301816000876161da5a03f1156100025750506040515160068054919250908390811015610002579060005260206000209001600050556000811415610940576007805460018101808355828183801582901161097f5760040281600402836000526020600020918201910161097f9190610a7e565b6100a3600435602435600254600160a060020a03908116339091161461145957610002565b6100a3600435600254600160a060020a03908116339091161461149c57610002565b61061e6000600060006000600060006006600050600081548110156100025752600080516020612c8783398151915281505460068054600190811015610002575060009081527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4090505460068054600290811015610002575060009081527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4190505460068054600390811015610002575060009081527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4290505460068054600490811015610002575060009081527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d43905054600680546005908110156100025750507ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4454949b939a50919850965094509092509050565b6004803560009081526020918252604080822060058452818320600160a060020a0360243516845290935290205481546001929092015460ff919091169190604080519315158452602084019290925282820152519081900360600190f35b6106515b60008054604080517ffaa1a8ff00000000000000000000000000000000000000000000000000000000815233600160a060020a03908116600483015260248201859052915184938493169163faa1a8ff916044828101926020929190829003018187876161da5a03f115610002575050604051519190911115905061041b575060015b8091505b5090565b6100a3600435600254600160a060020a03908116339091161461163f57610002565b6100a3600435602435600082815260046020526040902080546117e4610398565b6100a3600435600254600160a060020a039081163390911614611bfb57610002565b61066560043560006020604051908101604052806000815260200150600060006000600760005086815481101561000257508152600486027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801815060408051825460028481015460038601546001878101805460209281161561010002600019011694909404601f8101829004820287018201909752868652969750600160a060020a03938416969295919093169391859190830182828015611dc95780601f10611d9e57610100808354040283529160200191611dc9565b6100a3600435602435600060006000600060009054906101000a9004600160a060020a0316600160a060020a0316633aa94b1d60006040518260e060020a028152600401808281526020019150506040604051808303816000876161da5a03f115610002575050604080518051602091820151948990526004909152932092935090919050818511801590611de05750611de0610398565b6100a360043560243560025433600160a060020a0390811691161461207457610002565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b604080519115158252519081900360200190f35b6040518085600160a060020a031681526020018060200184600160a060020a031681526020018381526020018281038252858181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156106e95780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b50506040820151600282018054600160a060020a03191690911790556060919091015160039190910155505b50565b60028054600160a060020a0319168217905560078054600181018083558281838015829011610771576004028160040283600052602060002091820191016107719190610872565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600881527f7365744f776e6572000000000000000000000000000000000000000000000000602082810191825284810183905294840188905260006060850181905284518754600160a060020a03191617875591516001878101805481865294889020969897909691851615610100026000190190941694909404601f9081019390930484019390929091908390106108e457805160ff19168380011785555b506106fa9291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f8190106108b65750610853565b601f01602090049060005260206000209081019061085391905b8082111561041f57600081556001016108d0565b82800160010185558215610847579182015b828111156108475782518260005055916020019190600101906108f6565b50506040820151600282018054600160a060020a03191690911790556060919091015160039190910155505b8060011415610b3c5760078054600181018083558281838015829011610b7b57600402816004028360005260206000209182019101610b7b9190610c7a565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600f81527f75706461746554687265736f6c64300000000000000000000000000000000000602082810191825284810183905260009585018690526060850189905284518754600160a060020a0319161787559151600187810180548189529785902096989790969181161561010002600019011694909404601f908101939093048401939092909190839010610ae057805160ff19168380011785555b506109149291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f819010610ac25750610a5f565b601f016020900490600052602060002090810190610a5f91906108d0565b82800160010185558215610a53579182015b82811115610a53578251826000505591602001919060010190610af2565b50506040820151600282018054600160a060020a03191690911790556060919091015160039190910155505b8060021415610d385760078054600181018083558281838015829011610d7757600402816004028360005260206000209182019101610d779190610e76565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600f81527f75706461746554687265736f6c64310000000000000000000000000000000000602082810191825284810183905260009585018690526060850189905284518754600160a060020a0319161787559151600187810180548189529785902096989790969181161561010002600019011694909404601f908101939093048401939092909190839010610cdc57805160ff19168380011785555b50610b109291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f819010610cbe5750610c5b565b601f016020900490600052602060002090810190610c5b91906108d0565b82800160010185558215610c4f579182015b82811115610c4f578251826000505591602001919060010190610cee565b50506040820151600282018054600160a060020a03191690911790556060919091015160039190910155505b8060031415610f345760078054600181018083558281838015829011610f7357600402816004028360005260206000209182019101610f739190611072565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600f81527f75706461746554687265736f6c64320000000000000000000000000000000000602082810191825284810183905260009585018690526060850189905284518754600160a060020a0319161787559151600187810180548189529785902096989790969181161561010002600019011694909404601f908101939093048401939092909190839010610ed857805160ff19168380011785555b50610d0c9291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f819010610eba5750610e57565b601f016020900490600052602060002090810190610e5791906108d0565b82800160010185558215610e4b579182015b82811115610e4b578251826000505591602001919060010190610eea565b50506040820151600282018054600160a060020a03191690911790556060919091015160039190910155505b8060041415611130576007805460018101808355828183801582901161116f5760040281600402836000526020600020918201910161116f919061126e565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600f81527f75706461746554687265736f6c64330000000000000000000000000000000000602082810191825284810183905260009585018690526060850189905284518754600160a060020a0319161787559151600187810180548189529785902096989790969181161561010002600019011694909404601f9081019390930484019390929091908390106110d457805160ff19168380011785555b50610f089291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f8190106110b65750611053565b601f01602090049060005260206000209081019061105391906108d0565b82800160010185558215611047579182015b828111156110475782518260005055916020019190600101906110e6565b50506040820151600282018054600160a060020a03191690911790556060919091015160039190910155505b806005141561072657600780546001810180835582818380158290116113005760040281600402836000526020600020918201910161130091906113f7565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600f81527f75706461746554687265736f6c64340000000000000000000000000000000000602082810191825284810183905260009585018690526060850189905284518754600160a060020a0319161787559151600187810180548189529785902096989790969181161561010002600019011694909404601f9081019390930484019390929091908390106112d057805160ff19168380011785555b506111049291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f8190106112b2575061124f565b601f01602090049060005260206000209081019061124f91906108d0565b82800160010185558215611243579182015b828111156112435782518260005055916020019190600101906112e2565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600f81527f75706461746554687265736f6c64350000000000000000000000000000000000602082810191825284810183905260009585018690526060850189905284518754600160a060020a0319161787559151600187810180548189529785902096989790969181161561010002600019011694909404601f9081019390930484019390929091908390106108e457805160ff1916838001178555610847565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f81901061143b57506113d8565b601f0160209004906000526020600020908101906113d891906108d0565b801561147e576000828152600460205260409020600190810180549091019055611498565b600082815260046020526040902060010180546000190190555b5050565b60038054600160a060020a03191682179055600780546001810180835582818380158290116114e4576004028160040283600052602060002091820191016114e491906115dd565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600881527f736574566f746572000000000000000000000000000000000000000000000000602082810191825284810183905294840188905260006060850181905284518754600160a060020a03191617875591516001878101805481865294889020969897909691851615610100026000190190941694909404601f9081019390930484019390929091908390106108e457805160ff1916838001178555610847565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f81901061162157506115be565b601f0160209004906000526020600020908101906115be91906108d0565b60018054600160a060020a03191682178155600780549182018082559091908281838015829011611689576004028160040283600052602060002091820191016116899190611782565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600d81527f736574436f6e74726f6c6c657200000000000000000000000000000000000000602082810191825284810183905294840188905260006060850181905284518754600160a060020a03191617875591516001878101805481865294889020969897909691851615610100026000190190941694909404601f9081019390930484019390929091908390106108e457805160ff1916838001178555610847565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f8190106117c65750611763565b601f01602090049060005260206000209081019061176391906108d0565b80156117f1575060018110155b80156118205750600084815260056020908152604080832033600160a060020a0316845290915290205460ff16155b1561191557821561191a57600680546000908110156100025752600080516020612c87833981519152546001018110806118885750806103e8108015611888575060068054600090811015610002575050600080516020612c87833981519152546103e90181105b806118d55750612710811180156118d557506006805460019081101561000257506000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d40546127100181105b1561195e57815460019081018355600085815260056020908152604080832033600160a060020a031684529091529020805460ff19169091179055611a2f565b610002565b612710811115611a34576000825560078054600181018083558281838015829011611a4357600402816004028360005260206000209182019101611a439190611b39565b6006805460019081101561000257506000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4054612710018110611a1d57604080516001547f9aaf442c000000000000000000000000000000000000000000000000000000008252600482018790529151600160a060020a039290921691639aaf442c91602481810192600092909190829003018183876161da5a03f11561000257505060408051602090810190915260008690526005905250611a2a565b6001828101805490910190555b600082555b611a3d565b81546000190182555b50505050565b505050919090600052602060002090600402016000506040805160808101825233815281518083018352601581527f6e756c6c43656e736f727368697052657175657374000000000000000000000060208281019182528381018390526000948401859052606084018b905283518654600160a060020a031916178655915160018681018054818852968590209597969095600292821615610100026000190190911691909104601f9081019490940481019391929091839010611b9b57805160ff19168380011785555b50611bcb9291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f819010611b7d5750611b1a565b601f016020900490600052602060002090810190611b1a91906108d0565b82800160010185558215611b0e579182015b82811115611b0e578251826000505591602001919060010190611bad565b50506040820151600282018054600160a060020a0319169091179055606091909101516003919091015550611a3d565b60008054600160a060020a0319168217905560078054600181018083558281838015829011611c4357600402816004028360005260206000209182019101611c439190611d3c565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600981527f736574536f757263650000000000000000000000000000000000000000000000602082810191825284810183905294840188905260006060850181905284518754600160a060020a03191617875591516001878101805481865294889020969897909691851615610100026000190190941694909404601f9081019390930484019390929091908390106108e457805160ff1916838001178555610847565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f819010611d805750611d1d565b601f016020900490600052602060002090810190611d1d91906108d0565b820191906000526020600020905b815481529060010190602001808311611dac57829003601f168201915b505050505092509450945094509450509193509193565b8015611e0357508360011480611df75750836103e9145b80611e03575083612711145b8015611e325750600085815260056020908152604080832033600160a060020a0316845290915290205460ff16155b1561191557805460001415611e5a576040805160209081019091526000869052600590528381555b60078054600181018083558281838015829011611e9057600402816004028360005260206000209182019101611e909190611f86565b505050919090600052602060002090600402016000506040805160808101825233815281518083018352601081527f72657175657374426c61636b466c61670000000000000000000000000000000060208281019182528381018390526000948401859052606084018c905283518654600160a060020a031916178655915160018681018054818852968590209597969095600292821615610100026000190190911691909104601f9081019490940481019391929091839010611fe857805160ff19168380011785555b506120189291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f819010611fca5750611f67565b601f016020900490600052602060002090810190611f6791906108d0565b82800160010185558215611f5b579182015b82811115611f5b578251826000505591602001919060010190611ffa565b5050604082810151600283018054600160a060020a0319169091179055606092909201516003919091015560008781526005602090815282822033600160a060020a03168352905220805460ff19166001179055505050505050565b806006600050838154811015610002576000918252600080516020612c878339815191520190505560008214156121075760078054600181018083558281838015829011612146576004028160040283600052602060002091820191016121469190612245565b50506040820151600282018054600160a060020a03191690911790556060919091015160039190910155505b81600114156123035760078054600181018083558281838015829011612342576004028160040283600052602060002091820191016123429190612441565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600c81527f73657454687265736f6c64300000000000000000000000000000000000000000602082810191825284810183905260009585018690526060850189905284518754600160a060020a0319161787559151600187810180548189529785902096989790969181161561010002600019011694909404601f9081019390930484019390929091908390106122a757805160ff19168380011785555b506120db9291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f8190106122895750612226565b601f01602090049060005260206000209081019061222691906108d0565b8280016001018555821561221a579182015b8281111561221a5782518260005055916020019190600101906122b9565b50506040820151600282018054600160a060020a03191690911790556060919091015160039190910155505b81600214156124ff576007805460018101808355828183801582901161253e5760040281600402836000526020600020918201910161253e919061263d565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600c81527f73657454687265736f6c64310000000000000000000000000000000000000000602082810191825284810183905260009585018690526060850189905284518754600160a060020a0319161787559151600187810180548189529785902096989790969181161561010002600019011694909404601f9081019390930484019390929091908390106124a357805160ff19168380011785555b506122d79291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f8190106124855750612422565b601f01602090049060005260206000209081019061242291906108d0565b82800160010185558215612416579182015b828111156124165782518260005055916020019190600101906124b5565b50506040820151600282018054600160a060020a03191690911790556060919091015160039190910155505b81600314156126fb576007805460018101808355828183801582901161273a5760040281600402836000526020600020918201910161273a9190612839565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600c81527f73657454687265736f6c64320000000000000000000000000000000000000000602082810191825284810183905260009585018690526060850189905284518754600160a060020a0319161787559151600187810180548189529785902096989790969181161561010002600019011694909404601f90810193909304840193909290919083901061269f57805160ff19168380011785555b506124d39291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f819010612681575061261e565b601f01602090049060005260206000209081019061261e91906108d0565b82800160010185558215612612579182015b828111156126125782518260005055916020019190600101906126b1565b50506040820151600282018054600160a060020a03191690911790556060919091015160039190910155505b81600414156128f75760078054600181018083558281838015829011612936576004028160040283600052602060002091820191016129369190612a35565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600c81527f73657454687265736f6c64330000000000000000000000000000000000000000602082810191825284810183905260009585018690526060850189905284518754600160a060020a0319161787559151600187810180548189529785902096989790969181161561010002600019011694909404601f90810193909304840193909290919083901061289b57805160ff19168380011785555b506126cf9291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f81901061287d575061281a565b601f01602090049060005260206000209081019061281a91906108d0565b8280016001018555821561280e579182015b8281111561280e5782518260005055916020019190600101906128ad565b50506040820151600282018054600160a060020a03191690911790556060919091015160039190910155505b81600514156114985760078054600181018083558281838015829011612ac757600402816004028360005260206000209182019101612ac79190612bc6565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600c81527f73657454687265736f6c64340000000000000000000000000000000000000000602082810191825284810183905260009585018690526060850189905284518754600160a060020a0319161787559151600187810180548189529785902096989790969181161561010002600019011694909404601f908101939093048401939092909190839010612a9757805160ff19168380011785555b506128cb9291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f819010612a795750612a16565b601f016020900490600052602060002090810190612a1691906108d0565b82800160010185558215612a0a579182015b82811115612a0a578251826000505591602001919060010190612aa9565b505050919090600052602060002090600402016000506040805160808101825260028054600160a060020a0316825282518084018452600c81527f73657454687265736f6c64350000000000000000000000000000000000000000602082810191825284810183905260009585018690526060850189905284518754600160a060020a0319161787559151600187810180548189529785902096989790969181161561010002600019011694909404601f908101939093048401939092909190839010612c2857805160ff19168380011785555b50612c589291506108d0565b5050600281018054600160a060020a0319169055600060038201556004015b8082111561041f578054600160a060020a031916815560018181018054600080835592600290821615610100026000190190911604601f819010612c0a5750612ba7565b601f016020900490600052602060002090810190612ba791906108d0565b82800160010185558215612b9b579182015b82811115612b9b578251826000505591602001919060010190612c3a565b50506040820151600282018054600160a060020a0319169091179055606091909101516003919091015550505056f652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.