ETH Price: $3,890.36 (+0.19%)

Token

EQUAL (EQL)
 

Overview

Max Total Supply

797,054,934.405419257027981965 EQL

Holders

8,752 (0.00%)

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

A Self-deflationary, Fairly Distributed, Multiplatform Utility Token.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
EqualToken

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2017-12-19
*/

pragma solidity ^0.4.18;

contract Token {

    /// @return total amount of tokens
    function totalSupply() constant returns (uint256 supply);

    /// @param _owner The address from which the balance will be retrieved
    /// @return The balance
    function balanceOf(address _owner) constant returns (uint256 balance);
    /// @notice send `_value` token to `_to` from `msg.sender`
    /// @param _to The address of the recipient
    /// @param _value The amount of token to be transferred
    /// @return Whether the transfer was successful or not
    function transfer(address _to, uint256 _value) returns (bool success);

    /// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`
    /// @param _from The address of the sender
    /// @param _to The address of the recipient
    /// @param _value The amount of token to be transferred
    /// @return Whether the transfer was successful or not
    function transferFrom(address _from, address _to, uint256 _value) returns (bool success);



    /// @notice `msg.sender` approves `_addr` to spend `_value` tokens
    /// @param _spender The address of the account able to transfer the tokens
    /// @param _value The amount of wei to be approved for transfer
    /// @return Whether the approval was successful or not
    function approve(address _spender, uint256 _value) returns (bool success);

    /// @param _owner The address of the account owning tokens
    /// @param _spender The address of the account able to transfer the tokens
    /// @return Amount of remaining tokens allowed to spent
    function allowance(address _owner, address _spender) constant returns (uint256 remaining);

    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
    event Burn(address indexed from, uint256 value);
    event UpdateToken(address _newtoken);
    
    // Function to set balances from new Token
    function setBalance(address _to,uint256 _value) external ;
    
    // Function to set allowed from new Token
    function setAllowed(address _spender,address _to,uint256 _value) external;
    
    // Function to set total supply from new Token.
    function setTotalSupply(uint256 _value) external;
    
    function getDecimals() constant returns (uint256 decimals);
    
    function eventTransfer(address _from, address  _to, uint256 _value) external;
    function eventApproval(address _owner, address  _spender, uint256 _value) external;
    function eventBurn(address from, uint256 value) external;
}

contract NewToken{
    
    function transfer(address _sender,address _to,uint256 value) returns (bool);
    function transferFrom(address _sender,address from,address _to,uint256 value) returns (bool);
    function approve(address _sender,address _spender, uint256 _value) returns (bool success);
}

library SafeMath {
  function mul(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal constant returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

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

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

  function onePercent(uint256 a) internal constant returns (uint256){
      return div(a,uint256(100));
  }
  
  function power(uint256 a,uint256 b) internal constant returns (uint256){
      return mul(a,10**b);
  }
}

contract StandardToken is Token {
    using SafeMath for uint256;
    address newToken=0x0;
    
    mapping (address => uint256) balances;
    mapping (address => mapping (address => uint256)) allowed;
    uint256 public _totalSupply=0;
    uint8 public decimals;                //How many decimals to show. ie. There could 1000 base units with 3 decimals. Meaning 0.980 SBX = 980 base units. It's like comparing 1 wei to 1 ether.
    // there is 3 level. 1 - inbound tx, 2 - outbount tx, 3 - all tx;
    mapping(uint8 =>mapping(address=>bool)) internal whitelist;
    mapping(address=>uint8) internal whitelistModerator;
    
    uint256 public maxFee;
    uint256 public feePercantage;
    address public _owner;
    
    modifier onlyOwner {
        require(msg.sender == _owner);
        _;
    }

    modifier canModifyWhitelistIn {
        require(whitelistModerator[msg.sender]==1 || whitelistModerator[msg.sender]==3);
        _;
    }
    
    modifier canModifyWhitelistOut {
        require(whitelistModerator[msg.sender]==2 || whitelistModerator[msg.sender]==3);
        _;
    }
    
    modifier canModifyWhitelist {
        require(whitelistModerator[msg.sender]==3);
        _;
    }
    
    modifier onlyNewToken {
        require(msg.sender==newToken);
        _;
    }
    
    function transfer(address _to, uint256 _value) returns (bool success) {
        if(newToken!=0x0){
            return NewToken(newToken).transfer(msg.sender,_to,_value);
        }
        uint256 fee=getFee(_value);
        uint256 valueWithFee=_value;
         if(withFee(msg.sender,_to)){
            valueWithFee=valueWithFee.add(fee);
        }
        if (balances[msg.sender] >= valueWithFee && _value > 0) {
            //Do Transfer
            doTransfer(msg.sender,_to,_value,fee);
            return true;
        }  else { return false; }
    }
    
    function withFee(address _from,address _to) private returns(bool){
        return !whitelist[2][_from] && !whitelist[1][_to] && !whitelist[3][_to] && !whitelist[3][_from];
    }
    
    function getFee(uint256 _value) private returns (uint256){
        uint256 feeOfValue=_value.onePercent().mul(feePercantage);
        uint256 fee=uint256(maxFee).power(decimals);
         // Check if 1% burn fee exceeds maxfee
        // If so then hard cap for burn fee is maxfee
        if (feeOfValue>= fee) {
            return fee;
        // If 1% burn fee is less than maxfee
        // then use 1% burn fee
        } 
        if (feeOfValue < fee) {
            return feeOfValue;
        }
    }
    function doTransfer(address _from,address _to,uint256 _value,uint256 fee) internal {
            balances[_from] =balances[_from].sub(_value);
            balances[_to] = balances[_to].add(_value);
            Transfer(_from, _to, _value);
            if(withFee(_from,_to)) {
                doBurn(_from,fee);
            }
    }
    
    function doBurn(address _from,uint256 _value) private returns (bool success){
        require(balanceOf(_from) >= _value);   // Check if the sender has enough
        balances[_from] =balances[_from].sub(_value);            // Subtract from the sender
        _totalSupply =_totalSupply.sub(_value);                      // Updates totalSupply
        Burn(_from, _value);
        return true;
    }
    
    function burn(address _from,uint256 _value) onlyOwner public returns (bool success) {
        return doBurn(_from,_value);
    }

    function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {
        //same as above. Replace this line with the following if you want to protect against wrapping uints.
        //if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && balances[_to] + _value > balances[_to]) {
        if(newToken!=0x0){
            return NewToken(newToken).transferFrom(msg.sender,_from,_to,_value);
        }
        uint256 fee=getFee(_value);
        uint256 valueWithFee=_value;
        if(withFee(_from,_to)){
            valueWithFee=valueWithFee.add(fee);
        }
        if (balances[_from] >= valueWithFee && 
            (allowed[_from][msg.sender] >= valueWithFee || allowed[_from][msg.sender] == _value) &&
            _value > 0 ) {
            doTransfer(_from,_to,_value,fee);
            if(allowed[_from][msg.sender] == _value){
                allowed[_from][msg.sender] =allowed[_from][msg.sender].sub(_value);
            }
            else{
                allowed[_from][msg.sender] =allowed[_from][msg.sender].sub(valueWithFee);
            }
            return true;
        } else { return false; }
    }

    function balanceOf(address _owner) constant returns (uint256 balance) {
        return balances[_owner];
    }

    function approve(address _spender, uint256 _value) returns (bool success) {
        if(newToken!=0x0){
            return NewToken(newToken).approve(msg.sender,_spender,_value);
        }
        uint256 valueWithFee=_value;
        if(withFee(_spender,0x0)){
            uint256 fee=getFee(_value);  
            valueWithFee=valueWithFee.add(fee);
        }
        allowed[msg.sender][_spender] = valueWithFee;
        Approval(msg.sender, _spender, valueWithFee);
        return true;
    }

    function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
      return allowed[_owner][_spender];
    }
    
    function totalSupply() constant returns (uint totalSupply){
        return _totalSupply;
    }
    
    function setTotalSupply(uint256 _value) onlyNewToken external {
        _totalSupply=_value;
    }
    
    function setBalance(address _to,uint256 _value) onlyNewToken external {
        balances[_to]=_value;
    }
    
    function setAllowed(address _spender,address _to,uint256 _value) onlyNewToken external {
        allowed[_to][_spender]=_value;
    }
    function getDecimals() constant returns (uint256 decimals){
        return decimals;
    }
    
    function eventTransfer(address _from, address  _to, uint256 _value) onlyNewToken external{
        Transfer(_from,_to,_value);
    }
    
    function eventApproval(address _owner, address  _spender, uint256 _value)onlyNewToken external{
        Approval(_owner,_spender,_value);
    }
    function eventBurn(address from, uint256 value)onlyNewToken external{
        Burn(from,value);
    }
}


contract EqualToken is StandardToken {

    function () {
        //if ether is sent to this address, send it back.
        revert();
    }

    /* Public variables of the token */
    
    /*
    NOTE:
    The following variables are OPTIONAL vanities. One does not have to include them.
    They allow one to customise the token contract & in no way influences the core functionality.
    Some wallets/interfaces might not even bother to look at this information.
    */
    string public name;                   //fancy name: eg Simon Bucks
    string public symbol;                 //An identifier: eg SBX
    string public version = 'H1.0';       //human 0.1 standard. Just an arbitrary versioning scheme.
    address public oldToken=0x0;    
    // Fee info
    string public feeInfo = "Each operation costs 1% of the transaction amount, but not more than 250 tokens.";

    function EqualToken() {
        _owner=msg.sender;
        whitelistModerator[msg.sender]=3;
        whitelist[3][msg.sender]=true;
        
        
        maxFee=250; // max fee for transfer
        feePercantage=1; // fee in percents
        
        name = "EQUAL";                      // Set the name for display purposes
        decimals = 18;                            // Amount of decimals for display purposes
        symbol = "EQL";                          // Set the symbol for display purposes
    }

    function setOldToken(address _oldToken) onlyOwner public{
        require(oldToken==0x0);
        oldToken=_oldToken;
        Token token=Token(_oldToken);
        _totalSupply=token.totalSupply();
        balances[msg.sender] =_totalSupply;
        Transfer(0x0,msg.sender,_totalSupply);
    }
    
    // Redistibute new token with same balances;
    function redistribute(address[] holders) onlyOwner public{
        require(oldToken!=0x0);
        Token token=Token(oldToken);
        for(uint256 i=0;i<holders.length;++i){
            address _to=holders[i];
            if(balances[_to]==0){
                uint256 balance=token.balanceOf(_to);
                balances[_to]=balance;
                balances[msg.sender]=balances[msg.sender].sub(balance);
                Transfer(msg.sender,_to,balance);
            }
        }
    }
    
    function allocate(address _address,uint256 percent) private{
        uint256 bal=_totalSupply.onePercent().mul(percent);
        //balances[_address]=bal;
        whitelist[3][_address]=true;
        doTransfer(msg.sender,_address,bal,0);
    }
   
    // Set address access to inbound whitelist. 
    function setWhitelistIn(address _address,bool _value) canModifyWhitelistIn public{
        setWhitelistValue(_address,_value,1);
    }
    
    // Set address access to outbound whitelist. 
    function setWhitelistOut(address _address,bool _value) canModifyWhitelistOut public{
        setWhitelistValue(_address,_value,2);
    }
    
    // Set address access to inbound and outbound whitelist. 
    function setWhitelist(address _address,bool _value) canModifyWhitelist public{
        setWhitelistValue(_address,_value,3);
    }
    
    function setWhitelistValue(address _address,bool _withoutFee,uint8 _type) internal {
        whitelist[_type][_address]=_withoutFee;
    }
    
    // Set address of moderator whitelist
    // _level can be: 0 -not moderator, 1 -inbound,2 - outbound, 3 -all
    function setWhitelistModerator(address _address,uint8 _level) onlyOwner public {
        whitelistModerator[_address]=_level;
    }
    
    //Set max fee value
    function setMaxFee(uint256 newFee) onlyOwner public {
        maxFee=newFee;
    }
    
    //Set fee percent value
    function setFeePercent(uint256 newFee) onlyOwner public {
        feePercantage=newFee;
    }
    
    //Set fee info
    function setFeeInfo(string newFeeInfo) onlyOwner public {
       feeInfo=newFeeInfo;
    }
    
    function setNewToken(address _newtoken) onlyOwner public{
        newToken=_newtoken;
        UpdateToken(_newtoken);
    }
    
    /* Approves and then calls the receiving contract */
    function approveAndCall(address _spender, uint256 _value, bytes _extraData) returns (bool success) {
        if(!approve(_spender,_value)){
            return false;
        }
        //call the receiveApproval function on the contract you want to be notified. This crafts the function signature manually so one doesn't have to include a contract in here just for this.
        //receiveApproval(address _from, uint256 _value, address _tokenContract, bytes _extraData)
        //it is assumed that when does this that the call *should* succeed, otherwise one would use vanilla approve instead.
        if(!_spender.call(bytes4(bytes32(sha3("receiveApproval(address,uint256,address,bytes)"))), msg.sender, _value, this, _extraData)) { revert(); }
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"maxFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"totalSupply","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"eventTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newFeeInfo","type":"string"}],"name":"setFeeInfo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"setAllowed","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"value","type":"uint256"}],"name":"eventBurn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"},{"name":"_value","type":"bool"}],"name":"setWhitelistIn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"_totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"},{"name":"_value","type":"bool"}],"name":"setWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"},{"name":"_value","type":"bool"}],"name":"setWhitelistOut","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_oldToken","type":"address"}],"name":"setOldToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newtoken","type":"address"}],"name":"setNewToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newFee","type":"uint256"}],"name":"setMaxFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newFee","type":"uint256"}],"name":"setFeePercent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"eventApproval","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"feePercantage","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":"feeInfo","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"holders","type":"address[]"}],"name":"redistribute","outputs":[],"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":"oldToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"},{"name":"_level","type":"uint8"}],"name":"setWhitelistModerator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"setBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getDecimals","outputs":[{"name":"decimals","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"setTotalSupply","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_newtoken","type":"address"}],"name":"UpdateToken","type":"event"}]

606060405260008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006003556040805190810160405280600481526020017f48312e3000000000000000000000000000000000000000000000000000000000815250600c90805190602001906200009792919062000356565b506000600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550608060405190810160405280605081526020017f45616368206f7065726174696f6e20636f737473203125206f6620746865207481526020017f72616e73616374696f6e20616d6f756e742c20627574206e6f74206d6f72652081526020017f7468616e2032353020746f6b656e732e00000000000000000000000000000000815250600e90805190602001906200017492919062000356565b5034156200018157600080fd5b33600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff160217905550600160056000600360ff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060fa60078190555060016008819055506040805190810160405280600581526020017f455155414c000000000000000000000000000000000000000000000000000000815250600a9080519060200190620002e592919062000356565b506012600460006101000a81548160ff021916908360ff1602179055506040805190810160405280600381526020017f45514c0000000000000000000000000000000000000000000000000000000000815250600b90805190602001906200034f92919062000356565b5062000405565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200039957805160ff1916838001178555620003ca565b82800160010185558215620003ca579182015b82811115620003c9578251825591602001919060010190620003ac565b5b509050620003d99190620003dd565b5090565b6200040291905b80821115620003fe576000816000905550600101620003e4565b5090565b90565b6132da80620004156000396000f3006060604052600436106101b7576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301f59d16146101c757806306fdde03146101f0578063095ea7b31461027e57806318160ddd146102d857806323b872dd1461030157806329780a4e1461037a57806330a69955146103db578063313ce5671461043857806333dd1b8a14610467578063346bfd9f146104c85780633b33175b1461050a5780633eaaf86b1461054e57806353d6fd591461057757806354fd4d50146105bb57806359fa0663146106495780635b7a50f71461068d5780635ed411e5146106c657806370a08231146106ff578063710e5d2f1461074c5780637ce3489b1461076f5780637f5b47cd14610792578063867e248c146107f357806395d89b411461081c578063995b5aae146108aa5780639dc29fac14610938578063a9059cbb14610992578063acf97a65146109ec578063b2bdfa7b14610a46578063b31c710a14610a9b578063cae9ca5114610af0578063d5a6c97a14610b8d578063dd62ed3e14610bd2578063e30443bc14610c3e578063f0141d8414610c80578063f7ea7a3d14610ca9575b34156101c257600080fd5b600080fd5b34156101d257600080fd5b6101da610ccc565b6040518082815260200191505060405180910390f35b34156101fb57600080fd5b610203610cd2565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610243578082015181840152602081019050610228565b50505050905090810190601f1680156102705780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561028957600080fd5b6102be600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610d70565b604051808215151515815260200191505060405180910390f35b34156102e357600080fd5b6102eb610ffe565b6040518082815260200191505060405180910390f35b341561030c57600080fd5b610360600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611008565b604051808215151515815260200191505060405180910390f35b341561038557600080fd5b6103d9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611603565b005b34156103e657600080fd5b610436600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506116c8565b005b341561044357600080fd5b61044b61173e565b604051808260ff1660ff16815260200191505060405180910390f35b341561047257600080fd5b6104c6600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611751565b005b34156104d357600080fd5b610508600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611832565b005b341561051557600080fd5b61054c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803515159060200190919050506118df565b005b341561055957600080fd5b6105616119a7565b6040518082815260200191505060405180910390f35b341561058257600080fd5b6105b9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803515159060200190919050506119ad565b005b34156105c657600080fd5b6105ce611a1b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561060e5780820151818401526020810190506105f3565b50505050905090810190601f16801561063b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561065457600080fd5b61068b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080351515906020019091905050611ab9565b005b341561069857600080fd5b6106c4600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611b81565b005b34156106d157600080fd5b6106fd600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d93565b005b341561070a57600080fd5b610736600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611e95565b6040518082815260200191505060405180910390f35b341561075757600080fd5b61076d6004808035906020019091905050611ede565b005b341561077a57600080fd5b6107906004808035906020019091905050611f44565b005b341561079d57600080fd5b6107f1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611faa565b005b34156107fe57600080fd5b61080661206f565b6040518082815260200191505060405180910390f35b341561082757600080fd5b61082f612075565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561086f578082015181840152602081019050610854565b50505050905090810190601f16801561089c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156108b557600080fd5b6108bd612113565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108fd5780820151818401526020810190506108e2565b50505050905090810190601f16801561092a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561094357600080fd5b610978600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506121b1565b604051808215151515815260200191505060405180910390f35b341561099d57600080fd5b6109d2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612221565b604051808215151515815260200191505060405180910390f35b34156109f757600080fd5b610a44600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050612431565b005b3415610a5157600080fd5b610a59612781565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610aa657600080fd5b610aae6127a7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610afb57600080fd5b610b73600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506127cd565b604051808215151515815260200191505060405180910390f35b3415610b9857600080fd5b610bd0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff169060200190919050506129a2565b005b3415610bdd57600080fd5b610c28600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612a5a565b6040518082815260200191505060405180910390f35b3415610c4957600080fd5b610c7e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612ae1565b005b3415610c8b57600080fd5b610c93612b84565b6040518082815260200191505060405180910390f35b3415610cb457600080fd5b610cca6004808035906020019091905050612b8c565b005b60075481565b600a8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d685780601f10610d3d57610100808354040283529160200191610d68565b820191906000526020600020905b815481529060010190602001808311610d4b57829003601f168201915b505050505081565b6000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610ed7576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1f21c673387876000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1515610eb557600080fd5b6102c65a03f11515610ec657600080fd5b505050604051805190509250610ff6565b839150610ee5856000612bf1565b15610f0b57610ef384612d9f565b9050610f088183612e1590919063ffffffff16565b91505b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3600192505b505092915050565b6000600354905090565b6000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111a3576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315dacbea338888886000604051602001526040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050602060405180830381600087803b151561118157600080fd5b6102c65a03f1151561119257600080fd5b5050506040518051905092506115fa565b6111ac84612d9f565b91508390506111bb8686612bf1565b156111d6576111d38282612e1590919063ffffffff16565b90505b80600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015611327575080600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580611326575083600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b5b80156113335750600084115b156115f55761134486868685612e33565b83600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156114dc5761145784600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fe390919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115ec565b61156b81600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fe390919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600192506115fa565b600092505b50509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561165e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561172457600080fd5b80600e908051906020019061173a929190613209565b5050565b600460009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117ac57600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561188d57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a25050565b6001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16148061198c57506003600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16145b151561199757600080fd5b6119a382826001612ffc565b5050565b60035481565b6003600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16141515611a0b57600080fd5b611a1782826003612ffc565b5050565b600c8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611ab15780601f10611a8657610100808354040283529160200191611ab1565b820191906000526020600020905b815481529060010190602001808311611a9457829003601f168201915b505050505081565b6002600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff161480611b6657506003600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16145b1515611b7157600080fd5b611b7d82826002612ffc565b5050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bdf57600080fd5b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c2657600080fd5b81600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508190508073ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515611cd657600080fd5b6102c65a03f11515611ce757600080fd5b50505060405180519050600381905550600354600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6003546040518082815260200191505060405180910390a35050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611def57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fc94c224579611362c1287bb3e82a13fbd4a04dd97c05e9fc3acf9a8c62194adb81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f3a57600080fd5b8060078190555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611fa057600080fd5b8060088190555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561200557600080fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b60085481565b600b8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561210b5780601f106120e05761010080835404028352916020019161210b565b820191906000526020600020905b8154815290600101906020018083116120ee57829003601f168201915b505050505081565b600e8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156121a95780601f1061217e576101008083540402835291602001916121a9565b820191906000526020600020905b81548152906001019060200180831161218c57829003601f168201915b505050505081565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561220f57600080fd5b612219838361306f565b905092915050565b6000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612388576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663beabacc83387876000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b151561236657600080fd5b6102c65a03f1151561237757600080fd5b505050604051805190509250612429565b61239184612d9f565b91508390506123a03386612bf1565b156123bb576123b88282612e1590919063ffffffff16565b90505b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561240a5750600084115b156124245761241b33868685612e33565b60019250612429565b600092505b505092915050565b600080600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561249357600080fd5b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156124db57600080fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169350600092505b845183101561277a57848381518110151561251c57fe5b9060200190602002015191506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561276f578373ffffffffffffffffffffffffffffffffffffffff166370a08231836000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561261357600080fd5b6102c65a03f1151561262457600080fd5b50505060405180519050905080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126c681600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fe390919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b826001019250612505565b5050505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006127d98484610d70565b15156127e8576000905061299b565b8373ffffffffffffffffffffffffffffffffffffffff1660405180807f72656365697665417070726f76616c28616464726573732c75696e743235362c81526020017f616464726573732c627974657329000000000000000000000000000000000000815250602e01905060405180910390207c01000000000000000000000000000000000000000000000000000000009004338530866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828051906020019080838360005b83811015612941578082015181840152602081019050612926565b50505050905090810190601f16801561296e5780820380516001836020036101000a031916815260200191505b5094505050505060006040518083038160008761646e5a03f192505050151561299657600080fd5b600190505b9392505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129fe57600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612b3c57600080fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600080905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612be757600080fd5b8060038190555050565b600060056000600260ff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612cc1575060056000600160ff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d2c575060056000600360ff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d97575060056000600360ff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000806000612dc1600854612db386613190565b6131a490919063ffffffff16565b9150612dea600460009054906101000a900460ff1660ff166007546131d790919063ffffffff16565b90508082101515612dfd57809250612e0e565b80821015612e0d57819250612e0e565b5b5050919050565b6000808284019050838110151515612e2957fe5b8091505092915050565b612e8582600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fe390919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f1a82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e1590919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3612fcc8484612bf1565b15612fdd57612fdb848261306f565b505b50505050565b6000828211151515612ff157fe5b818303905092915050565b81600560008360ff1660ff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008161307b84611e95565b1015151561308857600080fd5b6130da82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fe390919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061313282600354612fe390919063ffffffff16565b6003819055508273ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a26001905092915050565b600061319d8260646131ee565b9050919050565b600080828402905060008414806131c557508284828115156131c257fe5b04145b15156131cd57fe5b8091505092915050565b60006131e68383600a0a6131a4565b905092915050565b60008082848115156131fc57fe5b0490508091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061324a57805160ff1916838001178555613278565b82800160010185558215613278579182015b8281111561327757825182559160200191906001019061325c565b5b5090506132859190613289565b5090565b6132ab91905b808211156132a757600081600090555060010161328f565b5090565b905600a165627a7a7230582069a021846381dd2a17b93e23924abff41470c5a59121fc106cc174e13e576eb70029

Deployed Bytecode

0x6060604052600436106101b7576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301f59d16146101c757806306fdde03146101f0578063095ea7b31461027e57806318160ddd146102d857806323b872dd1461030157806329780a4e1461037a57806330a69955146103db578063313ce5671461043857806333dd1b8a14610467578063346bfd9f146104c85780633b33175b1461050a5780633eaaf86b1461054e57806353d6fd591461057757806354fd4d50146105bb57806359fa0663146106495780635b7a50f71461068d5780635ed411e5146106c657806370a08231146106ff578063710e5d2f1461074c5780637ce3489b1461076f5780637f5b47cd14610792578063867e248c146107f357806395d89b411461081c578063995b5aae146108aa5780639dc29fac14610938578063a9059cbb14610992578063acf97a65146109ec578063b2bdfa7b14610a46578063b31c710a14610a9b578063cae9ca5114610af0578063d5a6c97a14610b8d578063dd62ed3e14610bd2578063e30443bc14610c3e578063f0141d8414610c80578063f7ea7a3d14610ca9575b34156101c257600080fd5b600080fd5b34156101d257600080fd5b6101da610ccc565b6040518082815260200191505060405180910390f35b34156101fb57600080fd5b610203610cd2565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610243578082015181840152602081019050610228565b50505050905090810190601f1680156102705780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561028957600080fd5b6102be600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610d70565b604051808215151515815260200191505060405180910390f35b34156102e357600080fd5b6102eb610ffe565b6040518082815260200191505060405180910390f35b341561030c57600080fd5b610360600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611008565b604051808215151515815260200191505060405180910390f35b341561038557600080fd5b6103d9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611603565b005b34156103e657600080fd5b610436600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506116c8565b005b341561044357600080fd5b61044b61173e565b604051808260ff1660ff16815260200191505060405180910390f35b341561047257600080fd5b6104c6600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611751565b005b34156104d357600080fd5b610508600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611832565b005b341561051557600080fd5b61054c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803515159060200190919050506118df565b005b341561055957600080fd5b6105616119a7565b6040518082815260200191505060405180910390f35b341561058257600080fd5b6105b9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803515159060200190919050506119ad565b005b34156105c657600080fd5b6105ce611a1b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561060e5780820151818401526020810190506105f3565b50505050905090810190601f16801561063b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561065457600080fd5b61068b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080351515906020019091905050611ab9565b005b341561069857600080fd5b6106c4600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611b81565b005b34156106d157600080fd5b6106fd600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d93565b005b341561070a57600080fd5b610736600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611e95565b6040518082815260200191505060405180910390f35b341561075757600080fd5b61076d6004808035906020019091905050611ede565b005b341561077a57600080fd5b6107906004808035906020019091905050611f44565b005b341561079d57600080fd5b6107f1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611faa565b005b34156107fe57600080fd5b61080661206f565b6040518082815260200191505060405180910390f35b341561082757600080fd5b61082f612075565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561086f578082015181840152602081019050610854565b50505050905090810190601f16801561089c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156108b557600080fd5b6108bd612113565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108fd5780820151818401526020810190506108e2565b50505050905090810190601f16801561092a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561094357600080fd5b610978600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506121b1565b604051808215151515815260200191505060405180910390f35b341561099d57600080fd5b6109d2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612221565b604051808215151515815260200191505060405180910390f35b34156109f757600080fd5b610a44600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050612431565b005b3415610a5157600080fd5b610a59612781565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610aa657600080fd5b610aae6127a7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610afb57600080fd5b610b73600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506127cd565b604051808215151515815260200191505060405180910390f35b3415610b9857600080fd5b610bd0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff169060200190919050506129a2565b005b3415610bdd57600080fd5b610c28600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612a5a565b6040518082815260200191505060405180910390f35b3415610c4957600080fd5b610c7e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612ae1565b005b3415610c8b57600080fd5b610c93612b84565b6040518082815260200191505060405180910390f35b3415610cb457600080fd5b610cca6004808035906020019091905050612b8c565b005b60075481565b600a8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d685780601f10610d3d57610100808354040283529160200191610d68565b820191906000526020600020905b815481529060010190602001808311610d4b57829003601f168201915b505050505081565b6000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610ed7576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1f21c673387876000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1515610eb557600080fd5b6102c65a03f11515610ec657600080fd5b505050604051805190509250610ff6565b839150610ee5856000612bf1565b15610f0b57610ef384612d9f565b9050610f088183612e1590919063ffffffff16565b91505b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3600192505b505092915050565b6000600354905090565b6000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111a3576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315dacbea338888886000604051602001526040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050602060405180830381600087803b151561118157600080fd5b6102c65a03f1151561119257600080fd5b5050506040518051905092506115fa565b6111ac84612d9f565b91508390506111bb8686612bf1565b156111d6576111d38282612e1590919063ffffffff16565b90505b80600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015611327575080600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580611326575083600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b5b80156113335750600084115b156115f55761134486868685612e33565b83600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156114dc5761145784600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fe390919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115ec565b61156b81600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fe390919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600192506115fa565b600092505b50509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561165e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561172457600080fd5b80600e908051906020019061173a929190613209565b5050565b600460009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117ac57600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561188d57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a25050565b6001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16148061198c57506003600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16145b151561199757600080fd5b6119a382826001612ffc565b5050565b60035481565b6003600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16141515611a0b57600080fd5b611a1782826003612ffc565b5050565b600c8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611ab15780601f10611a8657610100808354040283529160200191611ab1565b820191906000526020600020905b815481529060010190602001808311611a9457829003601f168201915b505050505081565b6002600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff161480611b6657506003600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16145b1515611b7157600080fd5b611b7d82826002612ffc565b5050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bdf57600080fd5b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c2657600080fd5b81600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508190508073ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515611cd657600080fd5b6102c65a03f11515611ce757600080fd5b50505060405180519050600381905550600354600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6003546040518082815260200191505060405180910390a35050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611def57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fc94c224579611362c1287bb3e82a13fbd4a04dd97c05e9fc3acf9a8c62194adb81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f3a57600080fd5b8060078190555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611fa057600080fd5b8060088190555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561200557600080fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b60085481565b600b8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561210b5780601f106120e05761010080835404028352916020019161210b565b820191906000526020600020905b8154815290600101906020018083116120ee57829003601f168201915b505050505081565b600e8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156121a95780601f1061217e576101008083540402835291602001916121a9565b820191906000526020600020905b81548152906001019060200180831161218c57829003601f168201915b505050505081565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561220f57600080fd5b612219838361306f565b905092915050565b6000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612388576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663beabacc83387876000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b151561236657600080fd5b6102c65a03f1151561237757600080fd5b505050604051805190509250612429565b61239184612d9f565b91508390506123a03386612bf1565b156123bb576123b88282612e1590919063ffffffff16565b90505b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561240a5750600084115b156124245761241b33868685612e33565b60019250612429565b600092505b505092915050565b600080600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561249357600080fd5b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156124db57600080fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169350600092505b845183101561277a57848381518110151561251c57fe5b9060200190602002015191506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561276f578373ffffffffffffffffffffffffffffffffffffffff166370a08231836000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561261357600080fd5b6102c65a03f1151561262457600080fd5b50505060405180519050905080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126c681600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fe390919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b826001019250612505565b5050505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006127d98484610d70565b15156127e8576000905061299b565b8373ffffffffffffffffffffffffffffffffffffffff1660405180807f72656365697665417070726f76616c28616464726573732c75696e743235362c81526020017f616464726573732c627974657329000000000000000000000000000000000000815250602e01905060405180910390207c01000000000000000000000000000000000000000000000000000000009004338530866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828051906020019080838360005b83811015612941578082015181840152602081019050612926565b50505050905090810190601f16801561296e5780820380516001836020036101000a031916815260200191505b5094505050505060006040518083038160008761646e5a03f192505050151561299657600080fd5b600190505b9392505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129fe57600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612b3c57600080fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600080905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612be757600080fd5b8060038190555050565b600060056000600260ff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612cc1575060056000600160ff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d2c575060056000600360ff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d97575060056000600360ff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000806000612dc1600854612db386613190565b6131a490919063ffffffff16565b9150612dea600460009054906101000a900460ff1660ff166007546131d790919063ffffffff16565b90508082101515612dfd57809250612e0e565b80821015612e0d57819250612e0e565b5b5050919050565b6000808284019050838110151515612e2957fe5b8091505092915050565b612e8582600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fe390919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f1a82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e1590919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3612fcc8484612bf1565b15612fdd57612fdb848261306f565b505b50505050565b6000828211151515612ff157fe5b818303905092915050565b81600560008360ff1660ff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008161307b84611e95565b1015151561308857600080fd5b6130da82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fe390919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061313282600354612fe390919063ffffffff16565b6003819055508273ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a26001905092915050565b600061319d8260646131ee565b9050919050565b600080828402905060008414806131c557508284828115156131c257fe5b04145b15156131cd57fe5b8091505092915050565b60006131e68383600a0a6131a4565b905092915050565b60008082848115156131fc57fe5b0490508091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061324a57805160ff1916838001178555613278565b82800160010185558215613278579182015b8281111561327757825182559160200191906001019061325c565b5b5090506132859190613289565b5090565b6132ab91905b808211156132a757600081600090555060010161328f565b5090565b905600a165627a7a7230582069a021846381dd2a17b93e23924abff41470c5a59121fc106cc174e13e576eb70029

Swarm Source

bzzr://69a021846381dd2a17b93e23924abff41470c5a59121fc106cc174e13e576eb7
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.