ETH Price: $3,336.60 (-0.71%)
Gas: 3.32 Gwei

Token

QuickX Protocol (QCX)
 

Overview

Max Total Supply

500,000,000 QCX

Holders

4,991

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Filtered by Token Holder
QuickX Protocol:: Deployer
Balance
5,048.59544984 QCX

Value
$0.00
0xa15c293f035ecf4ed85103cfbb8ab9e124104c90
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

QuickX is a protocol that primarily stands for solving problems of Blockchain, like speed, fees levied on transactions, scalability, cross chain transactions.

ICO Information

ICO Start Date : May 01, 2018  
ICO End Date : Dec 31, 2018
Total Cap : 250,000,000 QCX
Hard Cap : 43,333 ETH
Soft Cap : 4,000 ETH
Token Distribution Date : Jan 25, 2019
ICO Price  : 0.0004 ETH (1 ETH = 2,500 QCX)
Country : Malta

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
QuickxProtocol

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-01-22
*/

pragma solidity 0.4.24;


library SafeMath {

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        assert(c / a == b);
        return c;
    }

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

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

        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
}


// source : https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
contract ERC20 {
    function totalSupply() public view returns (uint);
    function balanceOf(address tokenOwner) public view returns (uint balance);
    function allowance(address tokenOwner, address spender) public view returns (uint remaining);
    function transfer(address to, uint tokens) public returns (bool success);
    function approve(address spender, uint tokens) public returns (bool success);
    function transferFrom(address from, address to, uint tokens) public returns (bool success);

    event Transfer(address indexed from, address indexed to, uint tokens);
    event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
}


contract QuickxToken is ERC20 {
    using SafeMath for uint;


    // ------------------------------------------------------------------------
    //            EVENTS
    // ------------------------------------------------------------------------
    event LogBurn(address indexed from, uint256 amount);
    event LogFreezed(address targetAddress, bool frozen);
    event LogEmerygencyFreezed(bool emergencyFreezeStatus);

    // ------------------------------------------------------------------------
    //          STATE VARIABLES
    // ------------------------------------------------------------------------
    string public name = "QuickX Protocol";
    string public symbol = "QCX";
    uint8 public decimals = 8;
    address public owner;
    uint public totalSupply = 500000000 * (10 ** 8);
    uint public currentSupply = 250000000 * (10 ** 8); // 50% of total supply
    bool public emergencyFreeze = true;
  
    // ------------------------------------------------------------------------
    //              MAPPINNGS
    // ------------------------------------------------------------------------
    mapping (address => uint) internal balances;
    mapping (address => mapping (address => uint) ) private  allowed;
    mapping (address => bool) private frozen;

    // ------------------------------------------------------------------------
    //              CONSTRUCTOR
    // ------------------------------------------------------------------------
    constructor () public {
        owner = address(0x2cf93Eed42d4D0C0121F99a4AbBF0d838A004F64);
    }

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

    modifier unfreezed(address _account) { 
        require(!frozen[_account]);
        _;  
    }
    
    modifier noEmergencyFreeze() { 
        require(!emergencyFreeze);
        _; 
    }

    // ------------------------------------------------------------------------
    // Transfer Token
    // ------------------------------------------------------------------------
    function transfer(address _to, uint _value)
    public
    unfreezed(_to) 
    unfreezed(msg.sender) 
    noEmergencyFreeze()  
    returns (bool success) {
        require(_to != 0x0);
        _transfer(msg.sender, _to, _value);
        return true;
    }

    // ------------------------------------------------------------------------
    // Approve others to spend on your behalf
    //  RACE CONDITION HANDLED
    // ------------------------------------------------------------------------
    function approve(address _spender, uint _value)
        public 
        unfreezed(_spender) 
        unfreezed(msg.sender) 
        noEmergencyFreeze() 
        returns (bool success) {
            // To change the approve amount you first have to reduce the addresses`
            //  allowance to zero by calling `approve(_spender, 0)` if it is not
            //  already 0 to mitigate the race condition described here:
            //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
            require((_value == 0) || (allowed[msg.sender][_spender] == 0));
            allowed[msg.sender][_spender] = _value;
            emit Approval(msg.sender, _spender, _value);
            return true;
        }

    function increaseApproval(address _spender, uint _addedValue)
        public
        unfreezed(_spender)
        unfreezed(msg.sender)
        noEmergencyFreeze()
        returns (bool success) {
            allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
            emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
            return true;
        }

    function decreaseApproval(address _spender, uint _subtractedValue)
        public
        unfreezed(_spender)
        unfreezed(msg.sender)
        noEmergencyFreeze()
        returns (bool success) {
            uint oldAllowance = allowed[msg.sender][_spender];
            if (_subtractedValue > oldAllowance) {
                allowed[msg.sender][_spender] = 0;
            } else {
                allowed[msg.sender][_spender] = oldAllowance.sub(_subtractedValue);
            }
            emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
            return true;
        }

    // ------------------------------------------------------------------------
    // Transferred approved amount from other's account
    // ------------------------------------------------------------------------
    function transferFrom(address _from, address _to, uint _value)
        public 
        unfreezed(_to)
        unfreezed(_from) 
        noEmergencyFreeze() 
        returns (bool success) {
            require(_value <= allowed[_from][msg.sender]);
            allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
            _transfer(_from, _to, _value);
            return true;
        }

    // ------------------------------------------------------------------------
    //               ONLYOWNER METHODS                             
    // ------------------------------------------------------------------------
    // ------------------------------------------------------------------------
    // Freeze account - onlyOwner
    // ------------------------------------------------------------------------
    function freezeAccount (address _target, bool _freeze) public onlyOwner {
        require(_target != 0x0);
        frozen[_target] = _freeze;
        emit LogFreezed(_target, _freeze);
    }

    // ------------------------------------------------------------------------
    // Emerygency freeze - onlyOwner
    // ------------------------------------------------------------------------
    function emergencyFreezeAllAccounts (bool _freeze) public onlyOwner {
        emergencyFreeze = _freeze;
        emit LogEmerygencyFreezed(_freeze);
    }

    // ------------------------------------------------------------------------
    // Burn (Destroy tokens)
    // ------------------------------------------------------------------------
    function burn(uint256 _value) public onlyOwner returns (bool success) {
        require(balances[msg.sender] >= _value);
        balances[msg.sender] = balances[msg.sender].sub(_value);
        totalSupply = totalSupply.sub(_value);
        currentSupply = currentSupply.sub(_value);
        emit LogBurn(msg.sender, _value);
        return true;
    }

    // ------------------------------------------------------------------------
    //               CONSTANT METHODS
    // ------------------------------------------------------------------------
    // ------------------------------------------------------------------------
    // Check Balance : Constant
    // ------------------------------------------------------------------------
    function balanceOf(address _tokenOwner) public view returns (uint) {
        return balances[_tokenOwner];
    }

    // ------------------------------------------------------------------------
    // Total supply : Constant
    // ------------------------------------------------------------------------
    function totalSupply() public view returns (uint) {
        return totalSupply;
    }

    // ------------------------------------------------------------------------
    // Check Allowance : Constant
    // ------------------------------------------------------------------------
    function allowance(address _tokenOwner, address _spender) public view returns (uint) {
        return allowed[_tokenOwner][_spender];
    }

    // ------------------------------------------------------------------------
    // Get Freeze Status : Constant
    // ------------------------------------------------------------------------
    function isFreezed(address _targetAddress) public view returns (bool) {
        return frozen[_targetAddress]; 
    }

    function _transfer(address from, address to, uint amount) internal {
        require(balances[from] >= amount);
        uint balBeforeTransfer = balances[from].add(balances[to]);
        balances[from] = balances[from].sub(amount);
        balances[to] = balances[to].add(amount);
        uint balAfterTransfer = balances[from].add(balances[to]);
        assert(balBeforeTransfer == balAfterTransfer);
        emit Transfer(from, to, amount);
    }
}


contract QuickxProtocol is QuickxToken {
    using SafeMath for uint;
    // ------------------------------------------------------------------------
    //          STATE VARIABLES  00000000
    // ------------------------------------------------------------------------
    // 50% of totail coins will be sold in ico
    uint public tokenSaleAllocation = 250000000 * (10 ** 8);
    // 2% of total supply goes for bounty 
    uint public bountyAllocation = 10000000 * (10 ** 8); 
    //13% of total tokens is reserved for founders and team
    uint public founderAllocation =  65000000 * (10 ** 8); 
    //5% of total tokens is reserved for partners
    uint public partnersAllocation = 25000000 * (10 ** 8); 
    // 15% of total tokens is for Liquidity reserve
    uint public liquidityReserveAllocation = 75000000 * (10 ** 8); 
    //5% of total tokens is reserved for advisors
    uint public advisoryAllocation = 25000000 * (10 ** 8); 
    //10% of total tokens in reserved for pre-seed Inverstors
    uint public preSeedInvestersAllocation = 50000000 * (10 ** 8); 
    
    uint[] public founderFunds = [
        1300000000000000,
        2600000000000000, 
        3900000000000000, 
        5200000000000000, 
        6500000000000000
    ]; // 8 decimals included

    uint[] public advisoryFunds = [
        500000000000000, 
        1000000000000000,
        1500000000000000, 
        2000000000000000, 
        2500000000000000
    ];

    uint public founderFundsWithdrawn = 0;
    uint public advisoryFundsWithdrawn = 0;
    // check allcatios
    bool public bountyAllocated;
    //bool public founderAllocated;
    bool public partnersAllocated;
    bool public liquidityReserveAllocated;
    bool public preSeedInvestersAllocated;
    
    uint public icoSuccessfulTime;
    bool public isIcoSuccessful;

    address public beneficiary;   // address of hard wallet of admin. 

    // ico state variables
    uint private totalRaised = 0;     // total wei raised by ICO
    uint private totalCoinsSold = 0;   // total coins sold in ICO
    uint private softCap;             // soft cap target in ether
    uint private hardCap;             // hard cap target in ether
    // rate is number of tokens (including decimals) per wei
    uint private rateNum;              // rate numerator (to avoid fractions) (rate = rateNum/rateDeno)
    uint private rateDeno;              // rate denominator (to avoid fractions) (rate = rateNum/rateDeno)
    uint public tokenSaleStart;       // time when token sale starts
    uint public tokenSaleEnds;        // time when token sale ends
    bool public icoPaused;            // ICO can be paused anytime

    // ------------------------------------------------------------------------
    //                EVENTS
    // ------------------------------------------------------------------------
    event LogBontyAllocated(
        address recepient, 
        uint amount);

    event LogPartnersAllocated(
        address recepient, 
        uint amount);

    event LogLiquidityreserveAllocated(
        address recepient, 
        uint amount);

    event LogPreSeedInverstorsAllocated(
        address recepient,
        uint amount);

    event LogAdvisorsAllocated(
        address recepient, 
        uint amount);

    event LogFoundersAllocated(
        address indexed recepient, 
        uint indexed amount);
    
    // ico events
    event LogFundingReceived(
        address indexed addr, 
        uint indexed weiRecieved, 
        uint indexed tokenTransferred, 
        uint currentTotal);

    event LogRateUpdated(
        uint rateNum, 
        uint rateDeno); 

    event LogPaidToOwner(
        address indexed beneficiary,
        uint indexed amountPaid);

    event LogWithdrawnRemaining(
        address _owner, 
        uint amountWithdrawan);

    event LogIcoEndDateUpdated(
        uint _oldEndDate, 
        uint _newEndDate);

    event LogIcoSuccessful();
    
    /* mappings */
    mapping (address => uint) public contributedAmount; // amount contributed by a user

    // ------------------------------------------------------------------------
    //               CONSTRUCTOR
    // ------------------------------------------------------------------------
    constructor () public {
        owner = address(0x2cf93Eed42d4D0C0121F99a4AbBF0d838A004F64);
        rateNum = 75;
        rateDeno = 100000000;
        softCap = 4000  ether;
        hardCap = 30005019135500000000000  wei;
        tokenSaleStart = now;
        tokenSaleEnds = now;
        balances[this] = currentSupply;
        isIcoSuccessful = true;
        icoSuccessfulTime = now;
        beneficiary = address(0x2cf93Eed42d4D0C0121F99a4AbBF0d838A004F64);
        emit LogIcoSuccessful();
        emit Transfer(0x0, address(this), currentSupply);
    }

    /* Fallback function */
    function () public payable {
        require(msg.data.length == 0);
        contribute();
    }

    modifier isFundRaising() { 
        require(
            totalRaised <= hardCap &&
            now >= tokenSaleStart &&
            now < tokenSaleEnds &&
            !icoPaused
            );
        _;
    }

    // ------------------------------------------------------------------------
    //                ONLY OWNER METHODS
    // ------------------------------------------------------------------------
    function allocateBountyTokens() public onlyOwner {
        require(isIcoSuccessful && icoSuccessfulTime > 0);
        require(!bountyAllocated); 
        balances[owner] = balances[owner].add(bountyAllocation);
        currentSupply = currentSupply.add(bountyAllocation);
        bountyAllocated = true;
        assert(currentSupply <= totalSupply);
        emit LogBontyAllocated(owner, bountyAllocation);
        emit Transfer(0x0, owner, bountyAllocation);
    }

    function allocatePartnersTokens() public onlyOwner {
        require(isIcoSuccessful && icoSuccessfulTime > 0);
        require(!partnersAllocated);
        balances[owner] = balances[owner].add(partnersAllocation);
        currentSupply = currentSupply.add(partnersAllocation);
        partnersAllocated = true;
        assert(currentSupply <= totalSupply);
        emit LogPartnersAllocated(owner, partnersAllocation);
        emit Transfer(0x0, owner, partnersAllocation);
    }

    function allocateLiquidityReserveTokens() public onlyOwner {
        require(isIcoSuccessful && icoSuccessfulTime > 0);
        require(!liquidityReserveAllocated);
        balances[owner] = balances[owner].add(liquidityReserveAllocation);
        currentSupply = currentSupply.add(liquidityReserveAllocation);
        liquidityReserveAllocated = true;
        assert(currentSupply <= totalSupply);
        emit LogLiquidityreserveAllocated(owner, liquidityReserveAllocation);
        emit Transfer(0x0, owner, liquidityReserveAllocation);
    }

    function allocatePreSeedInvesterTokens() public onlyOwner {
        require(isIcoSuccessful && icoSuccessfulTime > 0);
        require(!preSeedInvestersAllocated);
        balances[owner] = balances[owner].add(preSeedInvestersAllocation);
        currentSupply = currentSupply.add(preSeedInvestersAllocation);
        preSeedInvestersAllocated = true;
        assert(currentSupply <= totalSupply);
        emit LogPreSeedInverstorsAllocated(owner, preSeedInvestersAllocation);
        emit Transfer(0x0, owner, preSeedInvestersAllocation);
    }

    function allocateFounderTokens() public onlyOwner {
        require(isIcoSuccessful && icoSuccessfulTime > 0);
        uint calculatedFunds = calculateFoundersTokens();
        uint eligibleFunds = calculatedFunds.sub(founderFundsWithdrawn);
        require(eligibleFunds > 0);
        balances[owner] = balances[owner].add(eligibleFunds);
        currentSupply = currentSupply.add(eligibleFunds);
        founderFundsWithdrawn = founderFundsWithdrawn.add(eligibleFunds);
        assert(currentSupply <= totalSupply);
        emit LogFoundersAllocated(owner, eligibleFunds);
        emit Transfer(0x0, owner, eligibleFunds);
    }

    function allocateAdvisoryTokens() public onlyOwner {
        require(isIcoSuccessful && icoSuccessfulTime > 0);
        uint calculatedFunds = calculateAdvisoryTokens();
        uint eligibleFunds = calculatedFunds.sub(advisoryFundsWithdrawn);
        require(eligibleFunds > 0);
        balances[owner] = balances[owner].add(eligibleFunds);
        currentSupply = currentSupply.add(eligibleFunds);
        advisoryFundsWithdrawn = advisoryFundsWithdrawn.add(eligibleFunds);
        assert(currentSupply <= totalSupply);
        emit LogAdvisorsAllocated(owner, eligibleFunds);
        emit Transfer(0x0, owner, eligibleFunds);
    }

    // there is no explicit need of this function as funds are directly transferred to owner's hardware wallet.
    // but this is kept just to avoid any case when ETH is locked in contract
    function withdrawEth () public onlyOwner {
        owner.transfer(address(this).balance);
        emit LogPaidToOwner(owner, address(this).balance);
    }

    function updateRate (uint _rateNum, uint _rateDeno) public onlyOwner {
        rateNum = _rateNum;
        rateDeno = _rateDeno;
        emit LogRateUpdated(rateNum, rateDeno);
    }

    function updateIcoEndDate(uint _newDate) public onlyOwner {
        uint oldEndDate = tokenSaleEnds;
        tokenSaleEnds = _newDate;
        emit LogIcoEndDateUpdated (oldEndDate, _newDate);
    }

    // admin can withdraw token not sold in ICO
    function withdrawUnsold() public onlyOwner returns (bool) {
        require(now > tokenSaleEnds);
        uint unsold = (tokenSaleAllocation.sub(totalCoinsSold));
        balances[owner] = balances[owner].add(unsold);
        balances[address(this)] = balances[address(this)].sub(unsold);
        emit LogWithdrawnRemaining(owner, unsold);
        emit Transfer(address(this), owner, unsold);
        return true;
    }

    // ------------------------------------------------------------------------
    // Owner can transfer out any accidentally sent ERC20 tokens
    // ------------------------------------------------------------------------
    function transferAnyERC20Token(address _tokenAddress, uint _value) public onlyOwner returns (bool success) {
        // this condition is to stop admin from withdrawing funds unless all funds of ICO are successfully settelled
        if (_tokenAddress == address(this)) {
            require(now > tokenSaleStart + 730 days); // expecting 2 years time, all vested funds will be released.
        }
        return ERC20(_tokenAddress).transfer(owner, _value);
    }

    function pauseICO(bool pauseStatus) public onlyOwner returns (bool status) {
        require(icoPaused != pauseStatus);
        icoPaused = pauseStatus;
        return true;
    }

    // ------------------------------------------------------------------------
    //               PUBLIC METHODS
    // ------------------------------------------------------------------------
    function contribute () public payable isFundRaising returns(bool) {
        uint calculatedTokens =  calculateTokens(msg.value);
        require(calculatedTokens > 0);
        require(totalCoinsSold.add(calculatedTokens) <= tokenSaleAllocation);
        contributedAmount[msg.sender] = contributedAmount[msg.sender].add(msg.value);
        totalRaised = totalRaised.add(msg.value);
        totalCoinsSold = totalCoinsSold.add(calculatedTokens);
        _transfer(address(this), msg.sender, calculatedTokens);
        beneficiary.transfer(msg.value);
        checkIfSoftCapReached();
        emit LogFundingReceived(msg.sender, msg.value, calculatedTokens, totalRaised);
        emit LogPaidToOwner(beneficiary, msg.value);
        return true;
    }

    // ------------------------------------------------------------------------
    //              CONSTANT METHODS
    // ------------------------------------------------------------------------
    function calculateTokens(uint weisToTransfer) public view returns(uint) {
        uint discount = calculateDiscount();
        uint coins = weisToTransfer.mul(rateNum).mul(discount).div(100 * rateDeno);
        return coins;
    }

    function getTotalWeiRaised () public view returns(uint totalEthRaised) {
        return totalRaised;
    }

    function getTotalCoinsSold() public view returns(uint _coinsSold) {
        return totalCoinsSold;
    }
      
    function getSoftCap () public view returns(uint _softCap) {
        return softCap;
    }

    function getHardCap () public view returns(uint _hardCap) {
        return hardCap;
    }

    function getContractOwner () public view returns(address contractOwner) {
        return owner;
    }

    function isContractAcceptingPayment() public view returns (bool) {
        if (totalRaised < hardCap && 
            now >= tokenSaleStart && 
            now < tokenSaleEnds && 
            totalCoinsSold < tokenSaleAllocation)
            return true;
        else
            return false;
    }

    // ------------------------------------------------------------------------
    //                INTERNAL METHODS
    // ------------------------------------------------------------------------
    function calculateFoundersTokens() internal view returns(uint) {
        uint timeAferIcoSuceess = now.sub(icoSuccessfulTime);
        uint timeSpendInMonths = timeAferIcoSuceess.div(30 days);
        if (timeSpendInMonths >= 3 && timeSpendInMonths < 6) {
            return founderFunds[0];
        } else  if (timeSpendInMonths >= 6 && timeSpendInMonths < 9) {
            return founderFunds[1];
        } else if (timeSpendInMonths >= 9 && timeSpendInMonths < 12) {
            return founderFunds[2];
        } else if (timeSpendInMonths >= 12 && timeSpendInMonths < 18) {
            return founderFunds[3];
        } else if (timeSpendInMonths >= 18) {
            return founderFunds[4];
        } else {
            revert();
        }
    } 

    function calculateAdvisoryTokens()internal view returns(uint) {
        uint timeSpentAfterIcoEnd = now.sub(icoSuccessfulTime);
        uint timeSpendInMonths = timeSpentAfterIcoEnd.div(30 days);
        if (timeSpendInMonths >= 0 && timeSpendInMonths < 3)
            return advisoryFunds[0];
        if (timeSpendInMonths < 6)
            return advisoryFunds[1];
        if (timeSpendInMonths < 9)
            return advisoryFunds[2];
        if (timeSpendInMonths < 12)
            return advisoryFunds[3];
        if (timeSpendInMonths >= 12)
            return advisoryFunds[4];
        revert();
    }

    function checkIfSoftCapReached() internal returns (bool) {
        if (totalRaised >= softCap && !isIcoSuccessful) {
            isIcoSuccessful = true;
            icoSuccessfulTime = now;
            emit LogIcoSuccessful();
        }
        return;
    }

    function calculateDiscount() internal view returns(uint) {
        if (totalCoinsSold < 12500000000000000) {
            return 115;   // 15 % discount
        } else if (totalCoinsSold < 18750000000000000) {
            return 110;   // 10 % discount
        } else if (totalCoinsSold < 25000000000000000) {
            return 105;   // 5 % discount
        } else {  // this case should never arise
            return 100;   // 0 % discount
        }
    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"tokenSaleAllocation","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":false,"inputs":[{"name":"_newDate","type":"uint256"}],"name":"updateIcoEndDate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"advisoryFundsWithdrawn","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"founderFunds","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"founderFundsWithdrawn","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bountyAllocated","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"advisoryFunds","outputs":[{"name":"","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":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"beneficiary","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"icoPaused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenSaleStart","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_rateNum","type":"uint256"},{"name":"_rateDeno","type":"uint256"}],"name":"updateRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getContractOwner","outputs":[{"name":"contractOwner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTotalCoinsSold","outputs":[{"name":"_coinsSold","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getSoftCap","outputs":[{"name":"_softCap","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"pauseStatus","type":"bool"}],"name":"pauseICO","outputs":[{"name":"status","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"allocateLiquidityReserveTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawUnsold","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"allocatePreSeedInvesterTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"weisToTransfer","type":"uint256"}],"name":"calculateTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_freeze","type":"bool"}],"name":"emergencyFreezeAllAccounts","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"allocatePartnersTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isIcoSuccessful","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_targetAddress","type":"address"}],"name":"isFreezed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"allocateBountyTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"founderAllocation","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"preSeedInvestersAllocation","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"liquidityReserveAllocated","outputs":[{"name":"","type":"bool"}],"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":"isContractAcceptingPayment","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"partnersAllocated","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTotalWeiRaised","outputs":[{"name":"totalEthRaised","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawEth","outputs":[],"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":true,"inputs":[],"name":"tokenSaleEnds","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"allocateAdvisoryTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"partnersAllocation","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"allocateFounderTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getHardCap","outputs":[{"name":"_hardCap","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"advisoryAllocation","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"icoSuccessfulTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"contribute","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferAnyERC20Token","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenOwner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"contributedAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"},{"name":"_freeze","type":"bool"}],"name":"freezeAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"emergencyFreeze","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"liquidityReserveAllocation","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bountyAllocation","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"preSeedInvestersAllocated","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"recepient","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogBontyAllocated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"recepient","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogPartnersAllocated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"recepient","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogLiquidityreserveAllocated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"recepient","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogPreSeedInverstorsAllocated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"recepient","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogAdvisorsAllocated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"recepient","type":"address"},{"indexed":true,"name":"amount","type":"uint256"}],"name":"LogFoundersAllocated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":true,"name":"weiRecieved","type":"uint256"},{"indexed":true,"name":"tokenTransferred","type":"uint256"},{"indexed":false,"name":"currentTotal","type":"uint256"}],"name":"LogFundingReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"rateNum","type":"uint256"},{"indexed":false,"name":"rateDeno","type":"uint256"}],"name":"LogRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":true,"name":"amountPaid","type":"uint256"}],"name":"LogPaidToOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_owner","type":"address"},{"indexed":false,"name":"amountWithdrawan","type":"uint256"}],"name":"LogWithdrawnRemaining","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_oldEndDate","type":"uint256"},{"indexed":false,"name":"_newEndDate","type":"uint256"}],"name":"LogIcoEndDateUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"LogIcoSuccessful","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogBurn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"targetAddress","type":"address"},{"indexed":false,"name":"frozen","type":"bool"}],"name":"LogFreezed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"emergencyFreezeStatus","type":"bool"}],"name":"LogEmerygencyFreezed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenOwner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Approval","type":"event"}]

60806040526040805190810160405280600f81526020017f517569636b582050726f746f636f6c000000000000000000000000000000000081525060009080519060200190620000519291906200049f565b506040805190810160405280600381526020017f5143580000000000000000000000000000000000000000000000000000000000815250600190805190602001906200009f9291906200049f565b506008600260006101000a81548160ff021916908360ff16021790555066b1a2bc2ec500006003556658d15e176280006004556001600560006101000a81548160ff0219169083151502179055506658d15e1762800060095566038d7ea4c68000600a55661717b72f0a4000600b556608e1bc9bf04000600c55661aa535d3d0c000600d556608e1bc9bf04000600e556611c37937e08000600f5560a06040519081016040528066049e57d635400066ffffffffffffff16815260200166093cafac6a800066ffffffffffffff168152602001660ddb07829fc00066ffffffffffffff1681526020016612795f58d5000066ffffffffffffff168152602001661717b72f0a400066ffffffffffffff168152506010906005620001c492919062000526565b5060a0604051908101604052806601c6bf5263400066ffffffffffffff16815260200166038d7ea4c6800066ffffffffffffff1681526020016605543df729c00066ffffffffffffff16815260200166071afd498d000066ffffffffffffff1681526020016608e1bc9bf0400066ffffffffffffff1681525060119060056200024f92919062000526565b5060006012556000601355600060175560006018553480156200027157600080fd5b50732cf93eed42d4d0c0121f99a4abbf0d838a004f64600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732cf93eed42d4d0c0121f99a4abbf0d838a004f64600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604b601b819055506305f5e100601c8190555068d8d726b7177a80000060198190555069065a9349ea5523cd7800601a8190555042601d8190555042601e81905550600454600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001601660006101000a81548160ff02191690831515021790555042601581905550732cf93eed42d4d0c0121f99a4abbf0d838a004f64601660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fc8ba19d69e2df173a022cf0fcdaee173bc9cdb3553f54528c68f82ef7f1539b860405160405180910390a13073ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040518082815260200191505060405180910390a3620005ab565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004e257805160ff191683800117855562000513565b8280016001018555821562000513579182015b8281111562000512578251825591602001919060010190620004f5565b5b50905062000522919062000583565b5090565b82805482825590600052602060002090810192821562000570579160200282015b828111156200056f578251829066ffffffffffffff1690559160200191906001019062000547565b5b5090506200057f919062000583565b5090565b620005a891905b80821115620005a45760008160009055506001016200058a565b5090565b90565b61482880620005bb6000396000f3006080604052600436106102ca576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630459bb1d146102e757806306fdde0314610312578063095ea7b3146103a25780630a1fdc1e14610407578063132714aa14610434578063150b56351461045f57806317811af5146104a057806318160ddd146104cb5780631bc59aa6146104f6578063239b1f541461052557806323b872dd14610566578063313ce567146105eb57806338af3eed1461061c5780633b278f2a14610673578063403911a6146106a2578063405abb41146106cd57806342966c6814610704578063442890d5146107495780634a1d0e6f146107a05780634d52a512146107cb5780634f2f1af9146107f657806359d96a7e1461083d57806361d6d3851461085457806366188463146108835780637080e99f146108e857806370a08231146108ff57806371aa60fd14610956578063771282f6146109975780637898278f146109c257806379116c5d146109f15780637f28c44f14610a085780638111f24e14610a3757806381fcfbcc14610a92578063824338bd14610aa957806388b1c1ce14610ad45780638da5cb5b14610aff57806391cc2cc514610b5657806395d89b4114610b8557806399ed0d1714610c155780639b677edc14610c445780639f0c83f914610c73578063a0ef91df14610c9e578063a9059cbb14610cb5578063a9d2495414610d1a578063b450710214610d45578063bae5e69314610d5c578063bcfcb03e14610d87578063bf0a07bd14610d9e578063c026f58d14610dc9578063ca135a6114610df4578063d73dd62314610e1f578063d7bb99ba14610e84578063dc39d06d14610ea6578063dd62ed3e14610f0b578063e0961f1714610f82578063e724529c14610fd9578063f3d4b94214611028578063f4fc3e6f14611057578063f6b9d05d14611082578063f846eb19146110ad575b6000803690501415156102dc57600080fd5b6102e46110dc565b50005b3480156102f357600080fd5b506102fc61136d565b6040518082815260200191505060405180910390f35b34801561031e57600080fd5b50610327611373565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561036757808201518184015260208101905061034c565b50505050905090810190601f1680156103945780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103ae57600080fd5b506103ed600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611411565b604051808215151515815260200191505060405180910390f35b34801561041357600080fd5b506104326004803603810190808035906020019092919050505061166b565b005b34801561044057600080fd5b50610449611718565b6040518082815260200191505060405180910390f35b34801561046b57600080fd5b5061048a6004803603810190808035906020019092919050505061171e565b6040518082815260200191505060405180910390f35b3480156104ac57600080fd5b506104b5611741565b6040518082815260200191505060405180910390f35b3480156104d757600080fd5b506104e0611747565b6040518082815260200191505060405180910390f35b34801561050257600080fd5b5061050b611751565b604051808215151515815260200191505060405180910390f35b34801561053157600080fd5b5061055060048036038101908080359060200190929190505050611764565b6040518082815260200191505060405180910390f35b34801561057257600080fd5b506105d1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611787565b604051808215151515815260200191505060405180910390f35b3480156105f757600080fd5b50610600611a0b565b604051808260ff1660ff16815260200191505060405180910390f35b34801561062857600080fd5b50610631611a1e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561067f57600080fd5b50610688611a44565b604051808215151515815260200191505060405180910390f35b3480156106ae57600080fd5b506106b7611a57565b6040518082815260200191505060405180910390f35b3480156106d957600080fd5b506107026004803603810190808035906020019092919080359060200190929190505050611a5d565b005b34801561071057600080fd5b5061072f60048036038101908080359060200190929190505050611b0e565b604051808215151515815260200191505060405180910390f35b34801561075557600080fd5b5061075e611cdc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107ac57600080fd5b506107b5611d06565b6040518082815260200191505060405180910390f35b3480156107d757600080fd5b506107e0611d10565b6040518082815260200191505060405180910390f35b34801561080257600080fd5b50610823600480360381019080803515159060200190929190505050611d1a565b604051808215151515815260200191505060405180910390f35b34801561084957600080fd5b50610852611dbd565b005b34801561086057600080fd5b50610869612086565b604051808215151515815260200191505060405180910390f35b34801561088f57600080fd5b506108ce600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612398565b604051808215151515815260200191505060405180910390f35b3480156108f457600080fd5b506108fd6126fb565b005b34801561090b57600080fd5b50610940600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129c4565b6040518082815260200191505060405180910390f35b34801561096257600080fd5b5061098160048036038101908080359060200190929190505050612a0d565b6040518082815260200191505060405180910390f35b3480156109a357600080fd5b506109ac612a66565b6040518082815260200191505060405180910390f35b3480156109ce57600080fd5b506109ef600480360381019080803515159060200190929190505050612a6c565b005b3480156109fd57600080fd5b50610a06612b20565b005b348015610a1457600080fd5b50610a1d612de9565b604051808215151515815260200191505060405180910390f35b348015610a4357600080fd5b50610a78600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dfc565b604051808215151515815260200191505060405180910390f35b348015610a9e57600080fd5b50610aa7612e52565b005b348015610ab557600080fd5b50610abe61311b565b6040518082815260200191505060405180910390f35b348015610ae057600080fd5b50610ae9613121565b6040518082815260200191505060405180910390f35b348015610b0b57600080fd5b50610b14613127565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b6257600080fd5b50610b6b61314d565b604051808215151515815260200191505060405180910390f35b348015610b9157600080fd5b50610b9a613160565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bda578082015181840152602081019050610bbf565b50505050905090810190601f168015610c075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c2157600080fd5b50610c2a6131fe565b604051808215151515815260200191505060405180910390f35b348015610c5057600080fd5b50610c59613247565b604051808215151515815260200191505060405180910390f35b348015610c7f57600080fd5b50610c8861325a565b6040518082815260200191505060405180910390f35b348015610caa57600080fd5b50610cb3613264565b005b348015610cc157600080fd5b50610d00600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506133bf565b604051808215151515815260200191505060405180910390f35b348015610d2657600080fd5b50610d2f6134ce565b6040518082815260200191505060405180910390f35b348015610d5157600080fd5b50610d5a6134d4565b005b348015610d6857600080fd5b50610d716137ae565b6040518082815260200191505060405180910390f35b348015610d9357600080fd5b50610d9c6137b4565b005b348015610daa57600080fd5b50610db3613a67565b6040518082815260200191505060405180910390f35b348015610dd557600080fd5b50610dde613a71565b6040518082815260200191505060405180910390f35b348015610e0057600080fd5b50610e09613a77565b6040518082815260200191505060405180910390f35b348015610e2b57600080fd5b50610e6a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613a7d565b604051808215151515815260200191505060405180910390f35b610e8c6110dc565b604051808215151515815260200191505060405180910390f35b348015610eb257600080fd5b50610ef1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613d4b565b604051808215151515815260200191505060405180910390f35b348015610f1757600080fd5b50610f6c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613efc565b6040518082815260200191505060405180910390f35b348015610f8e57600080fd5b50610fc3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613f83565b6040518082815260200191505060405180910390f35b348015610fe557600080fd5b50611026600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613f9a565b005b34801561103457600080fd5b5061103d6140e6565b604051808215151515815260200191505060405180910390f35b34801561106357600080fd5b5061106c6140f9565b6040518082815260200191505060405180910390f35b34801561108e57600080fd5b506110976140ff565b6040518082815260200191505060405180910390f35b3480156110b957600080fd5b506110c2614105565b604051808215151515815260200191505060405180910390f35b600080601a54601754111580156110f55750601d544210155b80156111025750601e5442105b801561111b5750601f60009054906101000a900460ff16155b151561112657600080fd5b61112f34612a0d565b905060008111151561114057600080fd5b6009546111588260185461411890919063ffffffff16565b1115151561116557600080fd5b6111b734602060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411890919063ffffffff16565b602060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061120f3460175461411890919063ffffffff16565b60178190555061122a8160185461411890919063ffffffff16565b60188190555061123b303383614136565b601660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156112a3573d6000803e3d6000fd5b506112ac61444e565b5080343373ffffffffffffffffffffffffffffffffffffffff167fa73186877f0b4ccd5219831b83db2813c7b9a2dd91e43b7f238cdd41bc8b6b316017546040518082815260200191505060405180910390a434601660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8ed948c0cb38c1f447cb19b6f45212d2d735ee2d59dd0a02d2697a25ea7473c360405160405180910390a3600191505090565b60095481565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114095780601f106113de57610100808354040283529160200191611409565b820191906000526020600020905b8154815290600101906020018083116113ec57829003601f168201915b505050505081565b600082600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561146d57600080fd5b33600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156114c757600080fd5b600560009054906101000a900460ff161515156114e357600080fd5b600084148061156e57506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b151561157957600080fd5b83600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925866040518082815260200191505060405180910390a360019250505092915050565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116c957600080fd5b601e54905081601e819055507f33dd1f01879e9bccfcb3ae9d640e0a4c46721aee0287c96e1ec887b8e16595258183604051808381526020018281526020019250505060405180910390a15050565b60135481565b60108181548110151561172d57fe5b906000526020600020016000915090505481565b60125481565b6000600354905090565b601460009054906101000a900460ff1681565b60118181548110151561177357fe5b906000526020600020016000915090505481565b600082600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156117e357600080fd5b84600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561183d57600080fd5b600560009054906101000a900460ff1615151561185957600080fd5b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484111515156118e457600080fd5b61197384600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144c890919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119fe868686614136565b6001925050509392505050565b600260009054906101000a900460ff1681565b601660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601f60009054906101000a900460ff1681565b601d5481565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ab957600080fd5b81601b8190555080601c819055507f1d6b5a42045a5ee15c609786566814fdea6efac4f0c041d3577b5a9ce304a525601b54601c54604051808381526020018281526020019250505060405180910390a15050565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b6c57600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515611bba57600080fd5b611c0c82600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144c890919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c64826003546144c890919063ffffffff16565b600381905550611c7f826004546144c890919063ffffffff16565b6004819055503373ffffffffffffffffffffffffffffffffffffffff167f38d762ef507761291a578e921acfe29c1af31a7331ea03e391cf16cfc4d4f581836040518082815260200191505060405180910390a260019050919050565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601854905090565b6000601954905090565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d7857600080fd5b811515601f60009054906101000a900460ff16151514151515611d9a57600080fd5b81601f60006101000a81548160ff02191690831515021790555060019050919050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e1957600080fd5b601660009054906101000a900460ff168015611e3757506000601554115b1515611e4257600080fd5b601460029054906101000a900460ff16151515611e5e57600080fd5b611ed4600d5460066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411890919063ffffffff16565b60066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f50600d5460045461411890919063ffffffff16565b6004819055506001601460026101000a81548160ff02191690831515021790555060035460045411151515611f8157fe5b7f79cfa97a78f0d65b153dd45ab4cd59441c54634d8771fd00e6aec8365bc5f09a600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d54604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d546040518082815260200191505060405180910390a3565b600080600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120e557600080fd5b601e54421115156120f557600080fd5b61210c6018546009546144c890919063ffffffff16565b90506121828160066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411890919063ffffffff16565b60066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061223981600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144c890919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f19c53189df303bd288346a6d153f4f28d05e891dc832e73b72b3b0ef1642357e600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3600191505090565b60008083600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156123f557600080fd5b33600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561244f57600080fd5b600560009054906101000a900460ff1615151561246b57600080fd5b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054925082851115612579576000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061260d565b61258c85846144c890919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001935050505092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561275757600080fd5b601660009054906101000a900460ff16801561277557506000601554115b151561278057600080fd5b601460039054906101000a900460ff1615151561279c57600080fd5b612812600f5460066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411890919063ffffffff16565b60066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061288e600f5460045461411890919063ffffffff16565b6004819055506001601460036101000a81548160ff021916908315150217905550600354600454111515156128bf57fe5b7f408e353c0b43da18517f296753c7bd84650649d71e05b4e9a54a0415d62488a0600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f54604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600f546040518082815260200191505060405180910390a3565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806000612a1a6144e1565b9150612a5a601c54606402612a4c84612a3e601b548961453990919063ffffffff16565b61453990919063ffffffff16565b61457490919063ffffffff16565b90508092505050919050565b60045481565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612ac857600080fd5b80600560006101000a81548160ff0219169083151502179055507f607a2eb5bc51cd7ff68792f9e7c49352b7be26fd0068783e323e36f9f635980681604051808215151515815260200191505060405180910390a150565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612b7c57600080fd5b601660009054906101000a900460ff168015612b9a57506000601554115b1515612ba557600080fd5b601460019054906101000a900460ff16151515612bc157600080fd5b612c37600c5460066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411890919063ffffffff16565b60066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612cb3600c5460045461411890919063ffffffff16565b6004819055506001601460016101000a81548160ff02191690831515021790555060035460045411151515612ce457fe5b7fb02502445088457e4c9e503bccdcfe4e5dd8c1d41fbb2d0b1a1d94ff6261a073600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c54604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c546040518082815260200191505060405180910390a3565b601660009054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612eae57600080fd5b601660009054906101000a900460ff168015612ecc57506000601554115b1515612ed757600080fd5b601460009054906101000a900460ff16151515612ef357600080fd5b612f69600a5460066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411890919063ffffffff16565b60066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fe5600a5460045461411890919063ffffffff16565b6004819055506001601460006101000a81548160ff0219169083151502179055506003546004541115151561301657fe5b7f9595a4f845fc9697f1974afc41d46cdfdb3a787f057c1d080db9044152ddca65600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a54604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a546040518082815260200191505060405180910390a3565b600b5481565b600f5481565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601460029054906101000a900460ff1681565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156131f65780601f106131cb576101008083540402835291602001916131f6565b820191906000526020600020905b8154815290600101906020018083116131d957829003601f168201915b505050505081565b6000601a546017541080156132155750601d544210155b80156132225750601e5442105b80156132315750600954601854105b1561323f5760019050613244565b600090505b90565b601460019054906101000a900460ff1681565b6000601754905090565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156132c057600080fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015801561333f573d6000803e3d6000fd5b503073ffffffffffffffffffffffffffffffffffffffff1631600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8ed948c0cb38c1f447cb19b6f45212d2d735ee2d59dd0a02d2697a25ea7473c360405160405180910390a3565b600082600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561341b57600080fd5b33600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561347557600080fd5b600560009054906101000a900460ff1615151561349157600080fd5b60008573ffffffffffffffffffffffffffffffffffffffff16141515156134b757600080fd5b6134c2338686614136565b60019250505092915050565b601e5481565b600080600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561353357600080fd5b601660009054906101000a900460ff16801561355157506000601554115b151561355c57600080fd5b61356461458f565b915061357b601354836144c890919063ffffffff16565b905060008111151561358c57600080fd5b6136008160066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411890919063ffffffff16565b60066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061367a8160045461411890919063ffffffff16565b6004819055506136958160135461411890919063ffffffff16565b601381905550600354600454111515156136ab57fe5b7fbbf4e0ab9f7955cde2442d5d6dc3a80c7a35b38d90820c9b89e4748520a0a6eb600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600c5481565b600080600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561381357600080fd5b601660009054906101000a900460ff16801561383157506000601554115b151561383c57600080fd5b6138446146b2565b915061385b601254836144c890919063ffffffff16565b905060008111151561386c57600080fd5b6138e08160066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411890919063ffffffff16565b60066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061395a8160045461411890919063ffffffff16565b6004819055506139758160125461411890919063ffffffff16565b6012819055506003546004541115151561398b57fe5b80600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddfe4a1c5b60069989d419e1800e71a9806afe484ceedd1c34221379f918211e60405160405180910390a3600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000601a54905090565b600e5481565b60155481565b600082600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515613ad957600080fd5b33600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515613b3357600080fd5b600560009054906101000a900460ff16151515613b4f57600080fd5b613bde84600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411890919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a360019250505092915050565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613da957600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613df4576303c26700601d540142111515613df357600080fd5b5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613eb957600080fd5b505af1158015613ecd573d6000803e3d6000fd5b505050506040513d6020811015613ee357600080fd5b8101908080519060200190929190505050905092915050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b602080528060005260406000206000915090505481565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613ff657600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff161415151561401c57600080fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fdad2539b39cdbb96eb5dac852bf880a471c22b0e9d698aa1d48eae8d014ea8f48282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a15050565b600560009054906101000a900460ff1681565b600d5481565b600a5481565b601460039054906101000a900460ff1681565b600080828401905083811015151561412c57fe5b8091505092915050565b60008082600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561418757600080fd5b614218600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411890919063ffffffff16565b915061426c83600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144c890919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061430183600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411890919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506143d5600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411890919063ffffffff16565b905080821415156143e257fe5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35050505050565b6000601954601754101580156144715750601660009054906101000a900460ff16155b156144c5576001601660006101000a81548160ff021916908315150217905550426015819055507fc8ba19d69e2df173a022cf0fcdaee173bc9cdb3553f54528c68f82ef7f1539b860405160405180910390a15b90565b60008282111515156144d657fe5b818303905092915050565b6000662c68af0bb1400060185410156144fd5760739050614536565b66429d069189e000601854101561451757606e9050614536565b6658d15e1762800060185410156145315760699050614536565b606490505b90565b600080600084141561454e576000915061456d565b828402905082848281151561455f57fe5b0414151561456957fe5b8091505b5092915050565b600080828481151561458257fe5b0490508091505092915050565b60008060006145a9601554426144c890919063ffffffff16565b91506145c162278d008361457490919063ffffffff16565b9050600081101580156145d45750600381105b156145fb57601160008154811015156145e957fe5b906000526020600020015492506146ad565b6006811015614626576011600181548110151561461457fe5b906000526020600020015492506146ad565b6009811015614651576011600281548110151561463f57fe5b906000526020600020015492506146ad565b600c81101561467c576011600381548110151561466a57fe5b906000526020600020015492506146ad565b600c811015156146a8576011600481548110151561469657fe5b906000526020600020015492506146ad565b600080fd5b505090565b60008060006146cc601554426144c890919063ffffffff16565b91506146e462278d008361457490919063ffffffff16565b9050600381101580156146f75750600681105b1561471e576010600081548110151561470c57fe5b906000526020600020015492506147f7565b6006811015801561472f5750600981105b15614756576010600181548110151561474457fe5b906000526020600020015492506147f7565b600981101580156147675750600c81105b1561478e576010600281548110151561477c57fe5b906000526020600020015492506147f7565b600c811015801561479f5750601281105b156147c657601060038154811015156147b457fe5b906000526020600020015492506147f7565b6012811015156147f257601060048154811015156147e057fe5b906000526020600020015492506147f7565b600080fd5b5050905600a165627a7a7230582095b089bf1de7ff070e4079be62adc1d5cfcb46e5e711f69ed73da71297aaac440029

Deployed Bytecode

0x6080604052600436106102ca576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630459bb1d146102e757806306fdde0314610312578063095ea7b3146103a25780630a1fdc1e14610407578063132714aa14610434578063150b56351461045f57806317811af5146104a057806318160ddd146104cb5780631bc59aa6146104f6578063239b1f541461052557806323b872dd14610566578063313ce567146105eb57806338af3eed1461061c5780633b278f2a14610673578063403911a6146106a2578063405abb41146106cd57806342966c6814610704578063442890d5146107495780634a1d0e6f146107a05780634d52a512146107cb5780634f2f1af9146107f657806359d96a7e1461083d57806361d6d3851461085457806366188463146108835780637080e99f146108e857806370a08231146108ff57806371aa60fd14610956578063771282f6146109975780637898278f146109c257806379116c5d146109f15780637f28c44f14610a085780638111f24e14610a3757806381fcfbcc14610a92578063824338bd14610aa957806388b1c1ce14610ad45780638da5cb5b14610aff57806391cc2cc514610b5657806395d89b4114610b8557806399ed0d1714610c155780639b677edc14610c445780639f0c83f914610c73578063a0ef91df14610c9e578063a9059cbb14610cb5578063a9d2495414610d1a578063b450710214610d45578063bae5e69314610d5c578063bcfcb03e14610d87578063bf0a07bd14610d9e578063c026f58d14610dc9578063ca135a6114610df4578063d73dd62314610e1f578063d7bb99ba14610e84578063dc39d06d14610ea6578063dd62ed3e14610f0b578063e0961f1714610f82578063e724529c14610fd9578063f3d4b94214611028578063f4fc3e6f14611057578063f6b9d05d14611082578063f846eb19146110ad575b6000803690501415156102dc57600080fd5b6102e46110dc565b50005b3480156102f357600080fd5b506102fc61136d565b6040518082815260200191505060405180910390f35b34801561031e57600080fd5b50610327611373565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561036757808201518184015260208101905061034c565b50505050905090810190601f1680156103945780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103ae57600080fd5b506103ed600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611411565b604051808215151515815260200191505060405180910390f35b34801561041357600080fd5b506104326004803603810190808035906020019092919050505061166b565b005b34801561044057600080fd5b50610449611718565b6040518082815260200191505060405180910390f35b34801561046b57600080fd5b5061048a6004803603810190808035906020019092919050505061171e565b6040518082815260200191505060405180910390f35b3480156104ac57600080fd5b506104b5611741565b6040518082815260200191505060405180910390f35b3480156104d757600080fd5b506104e0611747565b6040518082815260200191505060405180910390f35b34801561050257600080fd5b5061050b611751565b604051808215151515815260200191505060405180910390f35b34801561053157600080fd5b5061055060048036038101908080359060200190929190505050611764565b6040518082815260200191505060405180910390f35b34801561057257600080fd5b506105d1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611787565b604051808215151515815260200191505060405180910390f35b3480156105f757600080fd5b50610600611a0b565b604051808260ff1660ff16815260200191505060405180910390f35b34801561062857600080fd5b50610631611a1e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561067f57600080fd5b50610688611a44565b604051808215151515815260200191505060405180910390f35b3480156106ae57600080fd5b506106b7611a57565b6040518082815260200191505060405180910390f35b3480156106d957600080fd5b506107026004803603810190808035906020019092919080359060200190929190505050611a5d565b005b34801561071057600080fd5b5061072f60048036038101908080359060200190929190505050611b0e565b604051808215151515815260200191505060405180910390f35b34801561075557600080fd5b5061075e611cdc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107ac57600080fd5b506107b5611d06565b6040518082815260200191505060405180910390f35b3480156107d757600080fd5b506107e0611d10565b6040518082815260200191505060405180910390f35b34801561080257600080fd5b50610823600480360381019080803515159060200190929190505050611d1a565b604051808215151515815260200191505060405180910390f35b34801561084957600080fd5b50610852611dbd565b005b34801561086057600080fd5b50610869612086565b604051808215151515815260200191505060405180910390f35b34801561088f57600080fd5b506108ce600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612398565b604051808215151515815260200191505060405180910390f35b3480156108f457600080fd5b506108fd6126fb565b005b34801561090b57600080fd5b50610940600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129c4565b6040518082815260200191505060405180910390f35b34801561096257600080fd5b5061098160048036038101908080359060200190929190505050612a0d565b6040518082815260200191505060405180910390f35b3480156109a357600080fd5b506109ac612a66565b6040518082815260200191505060405180910390f35b3480156109ce57600080fd5b506109ef600480360381019080803515159060200190929190505050612a6c565b005b3480156109fd57600080fd5b50610a06612b20565b005b348015610a1457600080fd5b50610a1d612de9565b604051808215151515815260200191505060405180910390f35b348015610a4357600080fd5b50610a78600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dfc565b604051808215151515815260200191505060405180910390f35b348015610a9e57600080fd5b50610aa7612e52565b005b348015610ab557600080fd5b50610abe61311b565b6040518082815260200191505060405180910390f35b348015610ae057600080fd5b50610ae9613121565b6040518082815260200191505060405180910390f35b348015610b0b57600080fd5b50610b14613127565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b6257600080fd5b50610b6b61314d565b604051808215151515815260200191505060405180910390f35b348015610b9157600080fd5b50610b9a613160565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bda578082015181840152602081019050610bbf565b50505050905090810190601f168015610c075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c2157600080fd5b50610c2a6131fe565b604051808215151515815260200191505060405180910390f35b348015610c5057600080fd5b50610c59613247565b604051808215151515815260200191505060405180910390f35b348015610c7f57600080fd5b50610c8861325a565b6040518082815260200191505060405180910390f35b348015610caa57600080fd5b50610cb3613264565b005b348015610cc157600080fd5b50610d00600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506133bf565b604051808215151515815260200191505060405180910390f35b348015610d2657600080fd5b50610d2f6134ce565b6040518082815260200191505060405180910390f35b348015610d5157600080fd5b50610d5a6134d4565b005b348015610d6857600080fd5b50610d716137ae565b6040518082815260200191505060405180910390f35b348015610d9357600080fd5b50610d9c6137b4565b005b348015610daa57600080fd5b50610db3613a67565b6040518082815260200191505060405180910390f35b348015610dd557600080fd5b50610dde613a71565b6040518082815260200191505060405180910390f35b348015610e0057600080fd5b50610e09613a77565b6040518082815260200191505060405180910390f35b348015610e2b57600080fd5b50610e6a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613a7d565b604051808215151515815260200191505060405180910390f35b610e8c6110dc565b604051808215151515815260200191505060405180910390f35b348015610eb257600080fd5b50610ef1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613d4b565b604051808215151515815260200191505060405180910390f35b348015610f1757600080fd5b50610f6c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613efc565b6040518082815260200191505060405180910390f35b348015610f8e57600080fd5b50610fc3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613f83565b6040518082815260200191505060405180910390f35b348015610fe557600080fd5b50611026600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613f9a565b005b34801561103457600080fd5b5061103d6140e6565b604051808215151515815260200191505060405180910390f35b34801561106357600080fd5b5061106c6140f9565b6040518082815260200191505060405180910390f35b34801561108e57600080fd5b506110976140ff565b6040518082815260200191505060405180910390f35b3480156110b957600080fd5b506110c2614105565b604051808215151515815260200191505060405180910390f35b600080601a54601754111580156110f55750601d544210155b80156111025750601e5442105b801561111b5750601f60009054906101000a900460ff16155b151561112657600080fd5b61112f34612a0d565b905060008111151561114057600080fd5b6009546111588260185461411890919063ffffffff16565b1115151561116557600080fd5b6111b734602060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411890919063ffffffff16565b602060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061120f3460175461411890919063ffffffff16565b60178190555061122a8160185461411890919063ffffffff16565b60188190555061123b303383614136565b601660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156112a3573d6000803e3d6000fd5b506112ac61444e565b5080343373ffffffffffffffffffffffffffffffffffffffff167fa73186877f0b4ccd5219831b83db2813c7b9a2dd91e43b7f238cdd41bc8b6b316017546040518082815260200191505060405180910390a434601660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8ed948c0cb38c1f447cb19b6f45212d2d735ee2d59dd0a02d2697a25ea7473c360405160405180910390a3600191505090565b60095481565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114095780601f106113de57610100808354040283529160200191611409565b820191906000526020600020905b8154815290600101906020018083116113ec57829003601f168201915b505050505081565b600082600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561146d57600080fd5b33600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156114c757600080fd5b600560009054906101000a900460ff161515156114e357600080fd5b600084148061156e57506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b151561157957600080fd5b83600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925866040518082815260200191505060405180910390a360019250505092915050565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116c957600080fd5b601e54905081601e819055507f33dd1f01879e9bccfcb3ae9d640e0a4c46721aee0287c96e1ec887b8e16595258183604051808381526020018281526020019250505060405180910390a15050565b60135481565b60108181548110151561172d57fe5b906000526020600020016000915090505481565b60125481565b6000600354905090565b601460009054906101000a900460ff1681565b60118181548110151561177357fe5b906000526020600020016000915090505481565b600082600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156117e357600080fd5b84600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561183d57600080fd5b600560009054906101000a900460ff1615151561185957600080fd5b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484111515156118e457600080fd5b61197384600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144c890919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119fe868686614136565b6001925050509392505050565b600260009054906101000a900460ff1681565b601660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601f60009054906101000a900460ff1681565b601d5481565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ab957600080fd5b81601b8190555080601c819055507f1d6b5a42045a5ee15c609786566814fdea6efac4f0c041d3577b5a9ce304a525601b54601c54604051808381526020018281526020019250505060405180910390a15050565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b6c57600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515611bba57600080fd5b611c0c82600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144c890919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c64826003546144c890919063ffffffff16565b600381905550611c7f826004546144c890919063ffffffff16565b6004819055503373ffffffffffffffffffffffffffffffffffffffff167f38d762ef507761291a578e921acfe29c1af31a7331ea03e391cf16cfc4d4f581836040518082815260200191505060405180910390a260019050919050565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601854905090565b6000601954905090565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d7857600080fd5b811515601f60009054906101000a900460ff16151514151515611d9a57600080fd5b81601f60006101000a81548160ff02191690831515021790555060019050919050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e1957600080fd5b601660009054906101000a900460ff168015611e3757506000601554115b1515611e4257600080fd5b601460029054906101000a900460ff16151515611e5e57600080fd5b611ed4600d5460066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411890919063ffffffff16565b60066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f50600d5460045461411890919063ffffffff16565b6004819055506001601460026101000a81548160ff02191690831515021790555060035460045411151515611f8157fe5b7f79cfa97a78f0d65b153dd45ab4cd59441c54634d8771fd00e6aec8365bc5f09a600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d54604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d546040518082815260200191505060405180910390a3565b600080600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120e557600080fd5b601e54421115156120f557600080fd5b61210c6018546009546144c890919063ffffffff16565b90506121828160066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411890919063ffffffff16565b60066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061223981600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144c890919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f19c53189df303bd288346a6d153f4f28d05e891dc832e73b72b3b0ef1642357e600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3600191505090565b60008083600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156123f557600080fd5b33600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561244f57600080fd5b600560009054906101000a900460ff1615151561246b57600080fd5b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054925082851115612579576000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061260d565b61258c85846144c890919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001935050505092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561275757600080fd5b601660009054906101000a900460ff16801561277557506000601554115b151561278057600080fd5b601460039054906101000a900460ff1615151561279c57600080fd5b612812600f5460066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411890919063ffffffff16565b60066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061288e600f5460045461411890919063ffffffff16565b6004819055506001601460036101000a81548160ff021916908315150217905550600354600454111515156128bf57fe5b7f408e353c0b43da18517f296753c7bd84650649d71e05b4e9a54a0415d62488a0600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f54604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600f546040518082815260200191505060405180910390a3565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806000612a1a6144e1565b9150612a5a601c54606402612a4c84612a3e601b548961453990919063ffffffff16565b61453990919063ffffffff16565b61457490919063ffffffff16565b90508092505050919050565b60045481565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612ac857600080fd5b80600560006101000a81548160ff0219169083151502179055507f607a2eb5bc51cd7ff68792f9e7c49352b7be26fd0068783e323e36f9f635980681604051808215151515815260200191505060405180910390a150565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612b7c57600080fd5b601660009054906101000a900460ff168015612b9a57506000601554115b1515612ba557600080fd5b601460019054906101000a900460ff16151515612bc157600080fd5b612c37600c5460066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411890919063ffffffff16565b60066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612cb3600c5460045461411890919063ffffffff16565b6004819055506001601460016101000a81548160ff02191690831515021790555060035460045411151515612ce457fe5b7fb02502445088457e4c9e503bccdcfe4e5dd8c1d41fbb2d0b1a1d94ff6261a073600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c54604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c546040518082815260200191505060405180910390a3565b601660009054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612eae57600080fd5b601660009054906101000a900460ff168015612ecc57506000601554115b1515612ed757600080fd5b601460009054906101000a900460ff16151515612ef357600080fd5b612f69600a5460066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411890919063ffffffff16565b60066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fe5600a5460045461411890919063ffffffff16565b6004819055506001601460006101000a81548160ff0219169083151502179055506003546004541115151561301657fe5b7f9595a4f845fc9697f1974afc41d46cdfdb3a787f057c1d080db9044152ddca65600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a54604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a546040518082815260200191505060405180910390a3565b600b5481565b600f5481565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601460029054906101000a900460ff1681565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156131f65780601f106131cb576101008083540402835291602001916131f6565b820191906000526020600020905b8154815290600101906020018083116131d957829003601f168201915b505050505081565b6000601a546017541080156132155750601d544210155b80156132225750601e5442105b80156132315750600954601854105b1561323f5760019050613244565b600090505b90565b601460019054906101000a900460ff1681565b6000601754905090565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156132c057600080fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015801561333f573d6000803e3d6000fd5b503073ffffffffffffffffffffffffffffffffffffffff1631600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8ed948c0cb38c1f447cb19b6f45212d2d735ee2d59dd0a02d2697a25ea7473c360405160405180910390a3565b600082600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561341b57600080fd5b33600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561347557600080fd5b600560009054906101000a900460ff1615151561349157600080fd5b60008573ffffffffffffffffffffffffffffffffffffffff16141515156134b757600080fd5b6134c2338686614136565b60019250505092915050565b601e5481565b600080600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561353357600080fd5b601660009054906101000a900460ff16801561355157506000601554115b151561355c57600080fd5b61356461458f565b915061357b601354836144c890919063ffffffff16565b905060008111151561358c57600080fd5b6136008160066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411890919063ffffffff16565b60066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061367a8160045461411890919063ffffffff16565b6004819055506136958160135461411890919063ffffffff16565b601381905550600354600454111515156136ab57fe5b7fbbf4e0ab9f7955cde2442d5d6dc3a80c7a35b38d90820c9b89e4748520a0a6eb600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600c5481565b600080600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561381357600080fd5b601660009054906101000a900460ff16801561383157506000601554115b151561383c57600080fd5b6138446146b2565b915061385b601254836144c890919063ffffffff16565b905060008111151561386c57600080fd5b6138e08160066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411890919063ffffffff16565b60066000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061395a8160045461411890919063ffffffff16565b6004819055506139758160125461411890919063ffffffff16565b6012819055506003546004541115151561398b57fe5b80600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddfe4a1c5b60069989d419e1800e71a9806afe484ceedd1c34221379f918211e60405160405180910390a3600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000601a54905090565b600e5481565b60155481565b600082600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515613ad957600080fd5b33600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515613b3357600080fd5b600560009054906101000a900460ff16151515613b4f57600080fd5b613bde84600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411890919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a360019250505092915050565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613da957600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613df4576303c26700601d540142111515613df357600080fd5b5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613eb957600080fd5b505af1158015613ecd573d6000803e3d6000fd5b505050506040513d6020811015613ee357600080fd5b8101908080519060200190929190505050905092915050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b602080528060005260406000206000915090505481565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613ff657600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff161415151561401c57600080fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fdad2539b39cdbb96eb5dac852bf880a471c22b0e9d698aa1d48eae8d014ea8f48282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a15050565b600560009054906101000a900460ff1681565b600d5481565b600a5481565b601460039054906101000a900460ff1681565b600080828401905083811015151561412c57fe5b8091505092915050565b60008082600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561418757600080fd5b614218600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411890919063ffffffff16565b915061426c83600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144c890919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061430183600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411890919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506143d5600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411890919063ffffffff16565b905080821415156143e257fe5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35050505050565b6000601954601754101580156144715750601660009054906101000a900460ff16155b156144c5576001601660006101000a81548160ff021916908315150217905550426015819055507fc8ba19d69e2df173a022cf0fcdaee173bc9cdb3553f54528c68f82ef7f1539b860405160405180910390a15b90565b60008282111515156144d657fe5b818303905092915050565b6000662c68af0bb1400060185410156144fd5760739050614536565b66429d069189e000601854101561451757606e9050614536565b6658d15e1762800060185410156145315760699050614536565b606490505b90565b600080600084141561454e576000915061456d565b828402905082848281151561455f57fe5b0414151561456957fe5b8091505b5092915050565b600080828481151561458257fe5b0490508091505092915050565b60008060006145a9601554426144c890919063ffffffff16565b91506145c162278d008361457490919063ffffffff16565b9050600081101580156145d45750600381105b156145fb57601160008154811015156145e957fe5b906000526020600020015492506146ad565b6006811015614626576011600181548110151561461457fe5b906000526020600020015492506146ad565b6009811015614651576011600281548110151561463f57fe5b906000526020600020015492506146ad565b600c81101561467c576011600381548110151561466a57fe5b906000526020600020015492506146ad565b600c811015156146a8576011600481548110151561469657fe5b906000526020600020015492506146ad565b600080fd5b505090565b60008060006146cc601554426144c890919063ffffffff16565b91506146e462278d008361457490919063ffffffff16565b9050600381101580156146f75750600681105b1561471e576010600081548110151561470c57fe5b906000526020600020015492506147f7565b6006811015801561472f5750600981105b15614756576010600181548110151561474457fe5b906000526020600020015492506147f7565b600981101580156147675750600c81105b1561478e576010600281548110151561477c57fe5b906000526020600020015492506147f7565b600c811015801561479f5750601281105b156147c657601060038154811015156147b457fe5b906000526020600020015492506147f7565b6012811015156147f257601060048154811015156147e057fe5b906000526020600020015492506147f7565b600080fd5b5050905600a165627a7a7230582095b089bf1de7ff070e4079be62adc1d5cfcb46e5e711f69ed73da71297aaac440029

Swarm Source

bzzr://95b089bf1de7ff070e4079be62adc1d5cfcb46e5e711f69ed73da71297aaac44
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.