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

Token

JoyToken (JOY)
 

Overview

Max Total Supply

699,998,573.78292991044530348 JOY

Holders

1,776

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
22.32173513918 JOY

Value
$0.00
0x0d1484b833308c0fb109257c21d9295ffce4bd13
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
JoyToken

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-02-07
*/

pragma solidity ^0.4.8;


/**
 * Math operations with safety checks
 * By OpenZeppelin: https://github.com/OpenZeppelin/zeppelin-solidity/contracts/SafeMath.sol
 */
library SafeMath {
  function mul(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

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

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

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

contract ContractReceiver {
    function tokenFallback(address _from, uint256 _value, bytes  _data) external;
}

contract Ownable {
    address public owner;
    address public ownerCandidate;
    event OwnerTransfer(address originalOwner, address currentOwner);

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

    function proposeNewOwner(address newOwner) public onlyOwner {
        require(newOwner != address(0) && newOwner != owner);
        ownerCandidate = newOwner;
    }

    function acceptOwnerTransfer() public {
        require(msg.sender == ownerCandidate);
        OwnerTransfer(owner, ownerCandidate);
        owner = ownerCandidate;
    }
}

contract ERC20Basic {
  uint256 public totalSupply;
  function balanceOf(address who) public constant returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) public constant returns (uint256);
  function transferFrom(address from, address to, uint256 value) public returns (bool);
  function approve(address spender, uint256 value) public returns (bool);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) balances;

  /**
  * @dev transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[msg.sender]);

    // SafeMath.sub will throw if there is not enough balance.
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    Transfer(msg.sender, _to, _value);
    return true;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) public constant returns (uint256 balance) {
    return balances[_owner];
  }

}

contract StandardToken is ERC20, BasicToken {

  mapping (address => mapping (address => uint256)) internal allowed;


  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amount of tokens to be transferred
   */
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[_from]);
    require(_value <= allowed[_from][msg.sender]);

    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
    Transfer(_from, _to, _value);
    return true;
  }

  /**
   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
   *
   * Beware that changing an allowance with this method brings the risk that someone may use both the old
   * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
   * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) public returns (bool) {
    allowed[msg.sender][_spender] = _value;
    Approval(msg.sender, _spender, _value);
    return true;
  }

  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   * @param _owner address The address which owns the funds.
   * @param _spender address The address which will spend the funds.
   * @return A uint256 specifying the amount of tokens still available for the spender.
   */
  function allowance(address _owner, address _spender) public constant returns (uint256 remaining) {
    return allowed[_owner][_spender];
  }

  /**
   * approve should be called when allowed[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   */
  function increaseApproval (address _spender, uint _addedValue) public returns (bool success) {
    allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

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

}


// Based in part on code by Open-Zeppelin: https://github.com/OpenZeppelin/zeppelin-solidity.git
// Based in part on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
// Smart contract for the JoyToken token & the first crowdsale
contract JoyToken is StandardToken, Ownable {
    string public constant name = "JoyToken";
    string public constant symbol = "JOY";
    uint8 public constant decimals = 18;
    address public multisig; //multisig wallet, to which all contributions will be sent

    uint256 public phase1StartBlock; //Crowdsale start block
    uint256 public phase1EndBlock; // Day 7 (estimate)
    uint256 public phase2EndBlock; // Day 13 (estimate)
    uint256 public phase3EndBlock; // Day 19 (estimate)
    uint256 public phase4EndBlock; // Day 25 (estimate)
    uint256 public phase5EndBlock; // Day 31 (estimate)
    uint256 public endBlock; //whole crowdsale end block

    uint256 public basePrice = 1818 * (10**11); // ICO token base price: ~$0.20 (estimate assuming $1100 per Eth)

    uint256 public totalSupply = 700000000 * (10**uint256(decimals)); //Token total supply: 500000000 RPX
    uint256 public presaleTokenSupply = totalSupply.mul(20).div(100); //Amount of tokens available during presale (10%)
    uint256 public crowdsaleTokenSupply = totalSupply.mul(30).div(100); //Amount of tokens available during crowdsale (50%)
    uint256 public rewardsTokenSupply = totalSupply.mul(15).div(100); //Rewards pool (VIP etc, 10%), ambassador share(3%) & ICO bounties(2%)
    uint256 public teamTokenSupply = totalSupply.mul(12).div(100); //Tokens distributed to team (12% in total, 4% vested for 12, 24 & 36 months)
    uint256 public platformTokenSupply = totalSupply.mul(23).div(100); //Token reserve for sale on platform
    uint256 public presaleTokenSold = 0; //Records the amount of tokens sold during presale
    uint256 public crowdsaleTokenSold = 0; //Records the amount of tokens sold during the crowdsale

    uint256 public phase1Cap = crowdsaleTokenSupply.mul(50).div(100);
    uint256 public phase2Cap = crowdsaleTokenSupply.mul(60).div(100);
    uint256 public phase3Cap = crowdsaleTokenSupply.mul(70).div(100);
    uint256 public phase4Cap = crowdsaleTokenSupply.mul(80).div(100);

    uint256 public transferLockup = 5760; //Lock up token transfer until ~2 days after crowdsale concludes
    uint256 public teamLockUp; 
    uint256 private teamWithdrawalCount = 0;
    uint256 public averageBlockTime = 18; //Average block time in seconds

    bool public presaleStarted = false;
    bool public presaleConcluded = false;
    bool public crowdsaleStarted = false;
    bool public crowdsaleConcluded = false;
    bool public halted = false; //Halt crowdsale in emergency

    uint256 contributionCount = 0;
    bytes32[] public contributionHashes;
    mapping (bytes32 => Contribution) private contributions;

    address public platformWithdrawalRecipient = address(0);
    bool public platformWithdrawalProposed = false;
    bool platformWithdrawn = false;
    
    address public rewardsWithdrawalRecipient = address(0);
    bool public rewardsWithdrawalProposed = false;
    bool rewardsWithdrawn = false;

    event Halt(); //Halt event
    event Unhalt(); //Unhalt event
    event Burn(address burner, uint256 amount);
    event StartPresale();
    event ConcludePresale();
    event StartCrowdsale();
    event ConcludeCrowdsale();
    event SetMultisig(address newMultisig);

    struct Contribution {
        address contributor;
        address recipient;
        uint256 ethWei;
        uint256 tokens;
        bool resolved;
        bool success;
        uint8 stage;
    }

    event ContributionReceived(bytes32 contributionHash, address contributor, address recipient,
        uint256 ethWei, uint256 pendingTokens);

    event ContributionResolved(bytes32 contributionHash, bool pass, address contributor, 
        address recipient, uint256 ethWei, uint256 tokens);


    // lockup during and after 48h of end of crowdsale
    modifier crowdsaleTransferLock() {
        require(crowdsaleStarted && block.number >= endBlock.add(transferLockup));
        _;
    }

    modifier whenNotHalted() {
        require(!halted);
        _;
    }

    //Constructor: set owner (team) address & crowdsale recipient multisig wallet address
    //Allocate reward tokens to the team wallet
  	function JoyToken(address _multisig) public {
        owner = msg.sender;
        multisig = _multisig;
        teamLockUp = dayToBlockNumber(31); // 31 days between withdrawing 1/36 of team tokens - vesting period in total is 3 years
  	}

    //Fallback function when receiving Ether. Contributors can directly send Ether to the token address during crowdsale.
    function() public payable {
        buy();
    }


    //Halt ICO in case of emergency.
    function halt() public onlyOwner {
        halted = true;
        Halt();
    }

    function unhalt() public onlyOwner {
        halted = false;
        Unhalt();
    }

    function startPresale() public onlyOwner {
        require(!presaleStarted);
        presaleStarted = true;
        StartPresale();
    }

    function concludePresale() public onlyOwner {
        require(presaleStarted && !presaleConcluded);
        presaleConcluded = true;
        //Unsold tokens in the presale are made available in the crowdsale.
        crowdsaleTokenSupply = crowdsaleTokenSupply.add(presaleTokenSupply.sub(presaleTokenSold)); 
        ConcludePresale();
    }

    // Can only be called after presale is concluded.
    function startCrowdsale() public onlyOwner {
        require(presaleConcluded && !crowdsaleStarted);
        crowdsaleStarted = true;
        phase1StartBlock = block.number;
        phase1EndBlock = phase1StartBlock.add(dayToBlockNumber(7));
        phase2EndBlock = phase1EndBlock.add(dayToBlockNumber(6));
        phase3EndBlock = phase2EndBlock.add(dayToBlockNumber(6));
        phase4EndBlock = phase3EndBlock.add(dayToBlockNumber(6));
        phase5EndBlock = phase4EndBlock.add(dayToBlockNumber(6));
        endBlock = phase5EndBlock;
        StartCrowdsale();
    }

    // Can only be called either after crowdsale time period ends, or after tokens have sold out
    function concludeCrowdsale() public onlyOwner {
        require(crowdsaleStarted && !crowdsaleOn() && !crowdsaleConcluded);
        
        crowdsaleConcluded = true;
        endBlock = block.number;
        uint256 unsold = crowdsaleTokenSupply.sub(crowdsaleTokenSold);
        
        if (unsold > 0) {
            //Burn unsold tokens
            totalSupply = totalSupply.sub(unsold);
            Burn(this, unsold);
            Transfer(this, address(0), unsold);
        }
        
        ConcludeCrowdsale();
    }

    // Make it possible for team to withdraw team tokens over 3 years
    function withdrawTeamToken(address recipient) public onlyOwner {
        require(crowdsaleStarted);
        require(teamWithdrawalCount < 36);
        require(block.number >= endBlock.add(teamLockUp.mul(teamWithdrawalCount.add(1)))); // 36-month lock-up in total, team can withdraw 1/36 of tokens each month
        
        teamWithdrawalCount++;
        uint256 tokens = teamTokenSupply.div(36); // distribute 1/36 of team tokens each month
        balances[recipient] = balances[recipient].add(tokens);
        Transfer(this, recipient, tokens);
    }
    
    // Withdrawing Platform Tokens supply
    function proposePlatformWithdrawal(address recipient) public onlyOwner {
        require(!platformWithdrawn);

        platformWithdrawalRecipient = recipient;
        platformWithdrawalProposed = true;
    }

    function cancelPlatformWithdrawal() public onlyOwner {
        require(!platformWithdrawn);
        require(platformWithdrawalProposed);

        platformWithdrawalProposed = false;
        platformWithdrawalRecipient = address(0); 
    }

    function confirmPlatformWithdrawal() public {
        require(!platformWithdrawn);
        require(platformWithdrawalProposed);
        require(msg.sender == platformWithdrawalRecipient);

        platformWithdrawn = true;
        balances[msg.sender] = balances[msg.sender].add(platformTokenSupply);

        Transfer(this, msg.sender, platformTokenSupply);
    }
    
    // Withdrawing Rewards Pool Tokens
    function proposeRewardsWithdrawal(address recipient) public onlyOwner {
        require(!rewardsWithdrawn);

        rewardsWithdrawalRecipient = recipient;
        rewardsWithdrawalProposed = true;
    }

    function cancelRewardsWithdrawal() public onlyOwner {
        require(!rewardsWithdrawn);
        require(rewardsWithdrawalProposed);

        rewardsWithdrawalProposed = false;
        rewardsWithdrawalRecipient = address(0); 
    }

    function confirmRewardsWithdrawal() public {
        require(!rewardsWithdrawn);
        require(rewardsWithdrawalProposed);
        require(msg.sender == rewardsWithdrawalRecipient);

        rewardsWithdrawn = true;
        balances[msg.sender] = balances[msg.sender].add(rewardsTokenSupply);

        Transfer(this, msg.sender, rewardsTokenSupply);
    }

    function buy() public payable {
        buyRecipient(msg.sender);
    }

    // Allow addresses to buy token for another account
    function buyRecipient(address recipient) public payable whenNotHalted {
        require(msg.value > 0);
        require(presaleOn()||crowdsaleOn()); //Contribution only allowed during presale/crowdsale
        uint256 tokens = msg.value.mul(10**uint256(decimals)).div(tokenPrice()); 
        uint8 stage = 0;

        if(presaleOn()) {
            require(presaleTokenSold.add(tokens) <= presaleTokenSupply);
            presaleTokenSold = presaleTokenSold.add(tokens);
        } else {
            require(crowdsaleTokenSold.add(tokens) <= crowdsaleTokenSupply);
            crowdsaleTokenSold = crowdsaleTokenSold.add(tokens);
            stage = 1;
        }
        contributionCount = contributionCount.add(1);
        bytes32 transactionHash = keccak256(contributionCount, msg.sender, msg.value, msg.data,
            msg.gas, block.number, tx.gasprice);
        contributions[transactionHash] = Contribution(msg.sender, recipient, msg.value, 
            tokens, false, false, stage);
        contributionHashes.push(transactionHash);
        ContributionReceived(transactionHash, msg.sender, recipient, msg.value, tokens);
    }

    //Accept a contribution if KYC passed.
    function acceptContribution(bytes32 transactionHash) public onlyOwner {
        Contribution storage c = contributions[transactionHash];
        require(!c.resolved);
        c.resolved = true;
        c.success = true;
        balances[c.recipient] = balances[c.recipient].add(c.tokens);
        assert(multisig.send(c.ethWei));
        Transfer(this, c.recipient, c.tokens);
        ContributionResolved(transactionHash, true, c.contributor, c.recipient, c.ethWei, 
            c.tokens);
    }

    //Reject a contribution if KYC failed.
    function rejectContribution(bytes32 transactionHash) public onlyOwner {
        Contribution storage c = contributions[transactionHash];
        require(!c.resolved);
        c.resolved = true;
        c.success = false;
        if (c.stage == 0) {
            presaleTokenSold = presaleTokenSold.sub(c.tokens);
        } else {
            crowdsaleTokenSold = crowdsaleTokenSold.sub(c.tokens);
        }
        assert(c.contributor.send(c.ethWei));
        ContributionResolved(transactionHash, false, c.contributor, c.recipient, c.ethWei, 
            c.tokens);
    }

    // Team manually mints tokens in case of BTC/wire-transfer contributions
    function mint(address recipient, uint256 value) public onlyOwner {
    	require(value > 0);
    	require(presaleStarted && !crowdsaleConcluded); // Minting allowed after presale started, up to crowdsale concluded (time for team to distribute tokens)

    	if (presaleOn()) {
            require(presaleTokenSold.add(value) <= presaleTokenSupply);
            presaleTokenSold = presaleTokenSold.add(value);
        } else {
            require(crowdsaleTokenSold.add(value) <= crowdsaleTokenSupply);
            crowdsaleTokenSold = crowdsaleTokenSold.add(value);
        }

        balances[recipient] = balances[recipient].add(value);
        Transfer(this, recipient, value);
    }

    //Burns the specified amount of tokens from the team wallet address
    function burn(uint256 _value) public onlyOwner returns (bool) {
        balances[msg.sender] = balances[msg.sender].sub(_value);
        totalSupply = totalSupply.sub(_value);
        Transfer(msg.sender, address(0), _value);
        Burn(msg.sender, _value);
        return true;
    }

    //Allow team to change the recipient multisig address
    function setMultisig(address addr) public onlyOwner {
      	require(addr != address(0));
      	multisig = addr;
        SetMultisig(addr);
    }

    //Allows Team to adjust average blocktime according to network status, 
    //in order to provide more precise timing for ICO phases & lock-up periods
    function setAverageBlockTime(uint256 newBlockTime) public onlyOwner {
        require(newBlockTime > 0);
        averageBlockTime = newBlockTime;
    }

    //Allows Team to adjust basePrice so price of the token has correct correlation to dollar
    function setBasePrice(uint256 newBasePrice) public onlyOwner {
        require(!crowdsaleStarted);
        require(newBasePrice > 0);
        basePrice = newBasePrice;
    }

    function transfer(address _to, uint256 _value) public crowdsaleTransferLock 
    returns(bool) {
        return super.transfer(_to, _value);
    }

    function transferFrom(address _from, address _to, uint256 _value) public 
    crowdsaleTransferLock returns(bool) {
        return super.transferFrom(_from, _to, _value);
    }

    //Price of token in terms of ether.
    function tokenPrice() public constant returns(uint256) {
        uint8 p = phase();
        if (p == 0) return basePrice.mul(50).div(100); //Presale: 50% discount
        if (p == 1) return basePrice.mul(70).div(100); //ICO phase 1: 30% discount
        if (p == 2) return basePrice.mul(75).div(100); //Phase 2 :25% discount
        if (p == 3) return basePrice.mul(80).div(100); //Phase 3: 20% discount
        if (p == 4) return basePrice.mul(85).div(100); //Phase 4: 15% discount
        if (p == 5) return basePrice.mul(90).div(100); //Phase 5: 10% discount
        return basePrice;
    }

    function phase() public constant returns (uint8) {
        if (presaleOn()) return 0;
        if (crowdsaleTokenSold <= phase1Cap && block.number <= phase1EndBlock) return 1;
        if (crowdsaleTokenSold <= phase2Cap && block.number <= phase2EndBlock) return 2;
        if (crowdsaleTokenSold <= phase3Cap && block.number <= phase3EndBlock) return 3;
        if (crowdsaleTokenSold <= phase4Cap && block.number <= phase4EndBlock) return 4;
        if (crowdsaleTokenSold <= crowdsaleTokenSupply && block.number <= phase5EndBlock) return 5;
        return 6;
    }

    function presaleOn() public constant returns (bool) {
        return (presaleStarted && !presaleConcluded && presaleTokenSold < presaleTokenSupply);
    }

    function crowdsaleOn() public constant returns (bool) {
        return (crowdsaleStarted && block.number <= endBlock && crowdsaleTokenSold < crowdsaleTokenSupply);
    }

    function dayToBlockNumber(uint256 dayNum) public constant returns(uint256) {
        return dayNum.mul(86400).div(averageBlockTime); //86400 = 24*60*60 = number of seconds in a day
    }

    function getContributionFromHash(bytes32 contributionHash) public constant returns (
            address contributor,
            address recipient,
            uint256 ethWei,
            uint256 tokens,
            bool resolved,
            bool success
        ) {
        Contribution c = contributions[contributionHash];
        contributor = c.contributor;
        recipient = c.recipient;
        ethWei = c.ethWei;
        tokens = c.tokens;
        resolved = c.resolved;
        success = c.success;
    }

    function getContributionHashes() public constant returns (bytes32[]) {
        return contributionHashes;
    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"crowdsaleConcluded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleOn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"presaleStarted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"startPresale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"}],"name":"proposePlatformWithdrawal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"}],"name":"buyRecipient","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"phase1StartBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardsWithdrawalRecipient","outputs":[{"name":"","type":"address"}],"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":"crowdsaleTokenSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"presaleOn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"confirmPlatformWithdrawal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardsWithdrawalProposed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"averageBlockTime","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":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"}],"name":"withdrawTeamToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"phase5EndBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newBlockTime","type":"uint256"}],"name":"setAverageBlockTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"platformTokenSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"},{"name":"value","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleTokenSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getContributionHashes","outputs":[{"name":"","type":"bytes32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"multisig","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"contributionHashes","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"phase1EndBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"halt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ownerCandidate","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"transactionHash","type":"bytes32"}],"name":"acceptContribution","outputs":[],"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":"transactionHash","type":"bytes32"}],"name":"rejectContribution","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"phase4Cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"phase2EndBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnerTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleStarted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"concludePresale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"cancelRewardsWithdrawal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"concludeCrowdsale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"phase3EndBlock","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":"dayNum","type":"uint256"}],"name":"dayToBlockNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"confirmRewardsWithdrawal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"cancelPlatformWithdrawal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"startCrowdsale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"platformWithdrawalRecipient","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"phase","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"proposeNewOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"halted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"transferLockup","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"presaleTokenSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"phase4EndBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"basePrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamLockUp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"platformWithdrawalProposed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unhalt","outputs":[],"payable":false,"stateMutability":"nonpayable","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":true,"inputs":[],"name":"phase2Cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"phase3Cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardsTokenSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newBasePrice","type":"uint256"}],"name":"setBasePrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"phase1Cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"presaleConcluded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"contributionHash","type":"bytes32"}],"name":"getContributionFromHash","outputs":[{"name":"contributor","type":"address"},{"name":"recipient","type":"address"},{"name":"ethWei","type":"uint256"},{"name":"tokens","type":"uint256"},{"name":"resolved","type":"bool"},{"name":"success","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setMultisig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"}],"name":"proposeRewardsWithdrawal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"teamTokenSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"presaleTokenSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_multisig","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[],"name":"Halt","type":"event"},{"anonymous":false,"inputs":[],"name":"Unhalt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"burner","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[],"name":"StartPresale","type":"event"},{"anonymous":false,"inputs":[],"name":"ConcludePresale","type":"event"},{"anonymous":false,"inputs":[],"name":"StartCrowdsale","type":"event"},{"anonymous":false,"inputs":[],"name":"ConcludeCrowdsale","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newMultisig","type":"address"}],"name":"SetMultisig","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"contributionHash","type":"bytes32"},{"indexed":false,"name":"contributor","type":"address"},{"indexed":false,"name":"recipient","type":"address"},{"indexed":false,"name":"ethWei","type":"uint256"},{"indexed":false,"name":"pendingTokens","type":"uint256"}],"name":"ContributionReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"contributionHash","type":"bytes32"},{"indexed":false,"name":"pass","type":"bool"},{"indexed":false,"name":"contributor","type":"address"},{"indexed":false,"name":"recipient","type":"address"},{"indexed":false,"name":"ethWei","type":"uint256"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"ContributionResolved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"originalOwner","type":"address"},{"indexed":false,"name":"currentOwner","type":"address"}],"name":"OwnerTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

606060405265a5589c6b9000600d55601260ff16600a0a6329b9270002600e556200006860646200004b6014600e54620005396401000000000262004498179091906401000000009004565b6200056f64010000000002620044cb179091906401000000009004565b600f55620000b4606462000097601e600e54620005396401000000000262004498179091906401000000009004565b6200056f64010000000002620044cb179091906401000000009004565b601055620001006064620000e3600f600e54620005396401000000000262004498179091906401000000009004565b6200056f64010000000002620044cb179091906401000000009004565b6011556200014c60646200012f600c600e54620005396401000000000262004498179091906401000000009004565b6200056f64010000000002620044cb179091906401000000009004565b6012556200019860646200017b6017600e54620005396401000000000262004498179091906401000000009004565b6200056f64010000000002620044cb179091906401000000009004565b60135560006014556000601555620001ee6064620001d16032601054620005396401000000000262004498179091906401000000009004565b6200056f64010000000002620044cb179091906401000000009004565b6016556200023a60646200021d603c601054620005396401000000000262004498179091906401000000009004565b6200056f64010000000002620044cb179091906401000000009004565b601755620002866064620002696046601054620005396401000000000262004498179091906401000000009004565b6200056f64010000000002620044cb179091906401000000009004565b601855620002d26064620002b56050601054620005396401000000000262004498179091906401000000009004565b6200056f64010000000002620044cb179091906401000000009004565b601955611680601a556000601c556012601d556000601e60006101000a81548160ff0219169083151502179055506000601e60016101000a81548160ff0219169083151502179055506000601e60026101000a81548160ff0219169083151502179055506000601e60036101000a81548160ff0219169083151502179055506000601e60046101000a81548160ff0219169083151502179055506000601f556000602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000602260146101000a81548160ff0219169083151502179055506000602260156101000a81548160ff0219169083151502179055506000602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000602360146101000a81548160ff0219169083151502179055506000602360156101000a81548160ff02191690831515021790555034156200046d57600080fd5b6040516020806200517f8339810160405280805190602001909190505033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200052c601f6200058b640100000000026200366e176401000000009004565b601b8190555050620005de565b600080828402905060008414806200055c57508284828115156200055957fe5b04145b15156200056557fe5b8091505092915050565b60008082848115156200057e57fe5b0490508091505092915050565b6000620005d7601d54620005ba6201518085620005396401000000000262004498179091906401000000009004565b6200056f64010000000002620044cb179091906401000000009004565b9050919050565b614b9180620005ee6000396000f300606060405260043610610384576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062c988e81461038e57806302dd92c4146103bb57806304549d6f146103e857806304c98b2b1461041557806306fdde031461042a578063083c6323146104b8578063095ea7b3146104e15780630b3af9011461053b57806311a4c71014610574578063145538ea146105a2578063165c86df146105cb57806318160ddd1461062057806319af6f48146106495780631ad874b414610672578063207019671461069f57806321338d1b146106b4578063233dedf1146106e157806323b872dd1461070a578063313ce56714610783578063315a6d65146107b2578063335b7c13146107eb5780633736d853146108145780633fdb705b1461083757806340c10f191461086057806342966c68146108a257806344acb8da146108dd57806345a7b991146109065780634783c35b146109705780634c7b8fba146109c5578063575d462a14610a045780635ed7ca5b14610a2d5780635f504a8214610a425780636380877314610a975780636618846314610abe5780636828d54914610b18578063690c5de814610b3f5780636aa68a1514610b68578063707a7ab314610b9157806370a0823114610ba65780637ff9b59614610bf3578063809ef92f14610c1c57806386517df414610c495780638751775b14610c5e5780638863c8d514610c73578063899ecf2b14610c885780638da5cb5b14610cb15780638f2ec01214610d06578063935814a614610d3d57806395d89b4114610d5257806397ff6d1014610de0578063a39953b214610df5578063a6f2ae3a14610e0a578063a70616de14610e14578063a9059cbb14610e69578063b1c9fe6e14610ec3578063b1f8100d14610ef2578063b9b8af0b14610f2b578063c24fe21b14610f58578063c4fc3a3b14610f81578063c588415e14610faa578063c7876ea414610fd3578063c7c80f0214610ffc578063c974631b14611025578063cb3e64fd14611052578063d73dd62314611067578063d7638b73146110c1578063d8cba7a2146110ea578063da62a24614611113578063dd62ed3e1461113c578063de4b3262146111a8578063e9629d7f146111cb578063e9deb98c146111f4578063eee457f714611221578063f3283fba146112df578063f994789a14611318578063fd17f28914611351578063ff197bc31461137a575b61038c6113a3565b005b341561039957600080fd5b6103a16113ae565b604051808215151515815260200191505060405180910390f35b34156103c657600080fd5b6103ce6113c1565b604051808215151515815260200191505060405180910390f35b34156103f357600080fd5b6103fb6113f5565b604051808215151515815260200191505060405180910390f35b341561042057600080fd5b610428611408565b005b341561043557600080fd5b61043d6114c9565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561047d578082015181840152602081019050610462565b50505050905090810190601f1680156104aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156104c357600080fd5b6104cb611502565b6040518082815260200191505060405180910390f35b34156104ec57600080fd5b610521600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611508565b604051808215151515815260200191505060405180910390f35b341561054657600080fd5b610572600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506115fa565b005b6105a0600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506116d1565b005b34156105ad57600080fd5b6105b5611b12565b6040518082815260200191505060405180910390f35b34156105d657600080fd5b6105de611b18565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561062b57600080fd5b610633611b3e565b6040518082815260200191505060405180910390f35b341561065457600080fd5b61065c611b44565b6040518082815260200191505060405180910390f35b341561067d57600080fd5b610685611b4a565b604051808215151515815260200191505060405180910390f35b34156106aa57600080fd5b6106b2611b89565b005b34156106bf57600080fd5b6106c7611d37565b604051808215151515815260200191505060405180910390f35b34156106ec57600080fd5b6106f4611d4a565b6040518082815260200191505060405180910390f35b341561071557600080fd5b610769600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611d50565b604051808215151515815260200191505060405180910390f35b341561078e57600080fd5b610796611da3565b604051808260ff1660ff16815260200191505060405180910390f35b34156107bd57600080fd5b6107e9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611da8565b005b34156107f657600080fd5b6107fe611fa6565b6040518082815260200191505060405180910390f35b341561081f57600080fd5b6108356004808035906020019091905050611fac565b005b341561084257600080fd5b61084a612021565b6040518082815260200191505060405180910390f35b341561086b57600080fd5b6108a0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612027565b005b34156108ad57600080fd5b6108c36004808035906020019091905050612257565b604051808215151515815260200191505060405180910390f35b34156108e857600080fd5b6108f061243f565b6040518082815260200191505060405180910390f35b341561091157600080fd5b610919612445565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561095c578082015181840152602081019050610941565b505050509050019250505060405180910390f35b341561097b57600080fd5b6109836124a7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109d057600080fd5b6109e660048080359060200190919050506124cd565b60405180826000191660001916815260200191505060405180910390f35b3415610a0f57600080fd5b610a176124f1565b6040518082815260200191505060405180910390f35b3415610a3857600080fd5b610a406124f7565b005b3415610a4d57600080fd5b610a5561259c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610aa257600080fd5b610abc6004808035600019169060200190919050506125c2565b005b3415610ac957600080fd5b610afe600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061297e565b604051808215151515815260200191505060405180910390f35b3415610b2357600080fd5b610b3d600480803560001916906020019091905050612c0f565b005b3415610b4a57600080fd5b610b52612ec0565b6040518082815260200191505060405180910390f35b3415610b7357600080fd5b610b7b612ec6565b6040518082815260200191505060405180910390f35b3415610b9c57600080fd5b610ba4612ecc565b005b3415610bb157600080fd5b610bdd600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613068565b6040518082815260200191505060405180910390f35b3415610bfe57600080fd5b610c066130b1565b6040518082815260200191505060405180910390f35b3415610c2757600080fd5b610c2f613230565b604051808215151515815260200191505060405180910390f35b3415610c5457600080fd5b610c5c613243565b005b3415610c6957600080fd5b610c7161334d565b005b3415610c7e57600080fd5b610c8661343f565b005b3415610c9357600080fd5b610c9b613642565b6040518082815260200191505060405180910390f35b3415610cbc57600080fd5b610cc4613648565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610d1157600080fd5b610d27600480803590602001909190505061366e565b6040518082815260200191505060405180910390f35b3415610d4857600080fd5b610d506136a1565b005b3415610d5d57600080fd5b610d6561384f565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610da5578082015181840152602081019050610d8a565b50505050905090810190601f168015610dd25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610deb57600080fd5b610df3613888565b005b3415610e0057600080fd5b610e0861397a565b005b610e126113a3565b005b3415610e1f57600080fd5b610e27613b17565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610e7457600080fd5b610ea9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050613b3d565b604051808215151515815260200191505060405180910390f35b3415610ece57600080fd5b610ed6613b8e565b604051808260ff1660ff16815260200191505060405180910390f35b3415610efd57600080fd5b610f29600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613c62565b005b3415610f3657600080fd5b610f3e613d98565b604051808215151515815260200191505060405180910390f35b3415610f6357600080fd5b610f6b613dab565b6040518082815260200191505060405180910390f35b3415610f8c57600080fd5b610f94613db1565b6040518082815260200191505060405180910390f35b3415610fb557600080fd5b610fbd613db7565b6040518082815260200191505060405180910390f35b3415610fde57600080fd5b610fe6613dbd565b6040518082815260200191505060405180910390f35b341561100757600080fd5b61100f613dc3565b6040518082815260200191505060405180910390f35b341561103057600080fd5b611038613dc9565b604051808215151515815260200191505060405180910390f35b341561105d57600080fd5b611065613ddc565b005b341561107257600080fd5b6110a7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050613e81565b604051808215151515815260200191505060405180910390f35b34156110cc57600080fd5b6110d461407d565b6040518082815260200191505060405180910390f35b34156110f557600080fd5b6110fd614083565b6040518082815260200191505060405180910390f35b341561111e57600080fd5b611126614089565b6040518082815260200191505060405180910390f35b341561114757600080fd5b611192600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061408f565b6040518082815260200191505060405180910390f35b34156111b357600080fd5b6111c96004808035906020019091905050614116565b005b34156111d657600080fd5b6111de6141a7565b6040518082815260200191505060405180910390f35b34156111ff57600080fd5b6112076141ad565b604051808215151515815260200191505060405180910390f35b341561122c57600080fd5b6112466004808035600019169060200190919050506141c0565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018315151515815260200182151515158152602001965050505050505060405180910390f35b34156112ea57600080fd5b611316600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050614276565b005b341561132357600080fd5b61134f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506143b5565b005b341561135c57600080fd5b61136461448c565b6040518082815260200191505060405180910390f35b341561138557600080fd5b61138d614492565b6040518082815260200191505060405180910390f35b6113ac336116d1565b565b601e60039054906101000a900460ff1681565b6000601e60029054906101000a900460ff1680156113e15750600c544311155b80156113f05750601054601554105b905090565b601e60009054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561146457600080fd5b601e60009054906101000a900460ff1615151561148057600080fd5b6001601e60006101000a81548160ff0219169083151502179055507fd1cca6fe4d5aee03a8d044728a03c4ddae5db4b5b972a6485d78a168fd6e852460405160405180910390a1565b6040805190810160405280600881526020017f4a6f79546f6b656e00000000000000000000000000000000000000000000000081525081565b600c5481565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561165657600080fd5b602260159054906101000a900460ff1615151561167257600080fd5b80602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001602260146101000a81548160ff02191690831515021790555050565b6000806000601e60049054906101000a900460ff161515156116f257600080fd5b60003411151561170157600080fd5b611709611b4a565b8061171857506117176113c1565b5b151561172357600080fd5b61175661172e6130b1565b611748601260ff16600a0a3461449890919063ffffffff16565b6144cb90919063ffffffff16565b925060009150611764611b4a565b156117ae57600f54611781846014546144e690919063ffffffff16565b1115151561178e57600080fd5b6117a3836014546144e690919063ffffffff16565b6014819055506117f3565b6010546117c6846015546144e690919063ffffffff16565b111515156117d357600080fd5b6117e8836015546144e690919063ffffffff16565b601581905550600191505b6118096001601f546144e690919063ffffffff16565b601f81905550601f5433346000365a433a604051808981526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018781526020018686808284378201915050848152602001838152602001828152602001985050505050505050506040518091039020905060e0604051908101604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020013481526020018481526020016000151581526020016000151581526020018360ff1681525060216000836000191660001916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015560808201518160040160006101000a81548160ff02191690831515021790555060a08201518160040160016101000a81548160ff02191690831515021790555060c08201518160040160026101000a81548160ff021916908360ff16021790555090505060208054806001018281611a3a9190614b00565b9160005260206000209001600083909190915090600019169055507fff0c5a4b2effdcf75368a7b8cb608675e273cbd755505bf9e1a837e9701bd89e81338634876040518086600019166000191681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019550505050505060405180910390a150505050565b60065481565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b60155481565b6000601e60009054906101000a900460ff168015611b755750601e60019054906101000a900460ff16155b8015611b845750600f54601454105b905090565b602260159054906101000a900460ff16151515611ba557600080fd5b602260149054906101000a900460ff161515611bc057600080fd5b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c1c57600080fd5b6001602260156101000a81548160ff021916908315150217905550611c8b601354600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6013546040518082815260200191505060405180910390a3565b602360149054906101000a900460ff1681565b601d5481565b6000601e60029054906101000a900460ff168015611d845750611d80601a54600c546144e690919063ffffffff16565b4310155b1515611d8f57600080fd5b611d9a848484614504565b90509392505050565b601281565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e0657600080fd5b601e60029054906101000a900460ff161515611e2157600080fd5b6024601c54101515611e3257600080fd5b611e70611e5f611e4e6001601c546144e690919063ffffffff16565b601b5461449890919063ffffffff16565b600c546144e690919063ffffffff16565b4310151515611e7e57600080fd5b601c60008154809291906001019190505550611ea660246012546144cb90919063ffffffff16565b9050611efa81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600b5481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561200857600080fd5b60008111151561201757600080fd5b80601d8190555050565b60135481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561208357600080fd5b60008111151561209257600080fd5b601e60009054906101000a900460ff1680156120bb5750601e60039054906101000a900460ff16155b15156120c657600080fd5b6120ce611b4a565b1561211857600f546120eb826014546144e690919063ffffffff16565b111515156120f857600080fd5b61210d816014546144e690919063ffffffff16565b601481905550612159565b601054612130826015546144e690919063ffffffff16565b1115151561213d57600080fd5b612152816015546144e690919063ffffffff16565b6015819055505b6121ab81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156122b557600080fd5b61230782600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148c390919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061235f82600e546148c390919063ffffffff16565b600e81905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a37fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca53383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a160019050919050565b60105481565b61244d614b2c565b602080548060200260200160405190810160405280929190818152602001828054801561249d57602002820191906000526020600020905b81546000191681526020019060010190808311612485575b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6020818154811015156124dc57fe5b90600052602060002090016000915090505481565b60075481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561255357600080fd5b6001601e60046101000a81548160ff0219169083151502179055507fa8d1ea886eaf8bd3d113c770bf7af546123c70e235b0d036ff752d5e920a7b5660405160405180910390a1565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561262057600080fd5b60216000836000191660001916815260200190815260200160002090508060040160009054906101000a900460ff1615151561265b57600080fd5b60018160040160006101000a81548160ff02191690831515021790555060018160040160016101000a81548160ff02191690831515021790555061270f8160030154600160008460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160008360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82600201549081150290604051600060405180830381858888f1935050505015156127d957fe5b8060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83600301546040518082815260200191505060405180910390a37f83711c709923be4ac11f3793650dc879f27f832eb4831a15f7c7eaefecdca2608260018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685600201548660030154604051808760001916600019168152602001861515151581526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001965050505050505060405180910390a15050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115612a8f576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b23565b612aa283826148c390919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c6d57600080fd5b60216000836000191660001916815260200190815260200160002090508060040160009054906101000a900460ff16151515612ca857600080fd5b60018160040160006101000a81548160ff02191690831515021790555060008160040160016101000a81548160ff02191690831515021790555060008160040160029054906101000a900460ff1660ff161415612d2357612d1881600301546014546148c390919063ffffffff16565b601481905550612d43565b612d3c81600301546015546148c390919063ffffffff16565b6015819055505b8060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82600201549081150290604051600060405180830381858888f193505050501515612da857fe5b7f83711c709923be4ac11f3793650dc879f27f832eb4831a15f7c7eaefecdca2608260008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685600201548660030154604051808760001916600019168152602001861515151581526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001965050505050505060405180910390a15050565b60195481565b60085481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612f2857600080fd5b7f5327f96e1b66776c2f90adb141c8f65efa8dd259adb405009213276527cbf69a600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806130bc613b8e565b905060008160ff1614156130fa576130f360646130e56032600d5461449890919063ffffffff16565b6144cb90919063ffffffff16565b915061322c565b60018160ff1614156131365761312f60646131216046600d5461449890919063ffffffff16565b6144cb90919063ffffffff16565b915061322c565b60028160ff1614156131725761316b606461315d604b600d5461449890919063ffffffff16565b6144cb90919063ffffffff16565b915061322c565b60038160ff1614156131ae576131a760646131996050600d5461449890919063ffffffff16565b6144cb90919063ffffffff16565b915061322c565b60048160ff1614156131ea576131e360646131d56055600d5461449890919063ffffffff16565b6144cb90919063ffffffff16565b915061322c565b60058160ff1614156132265761321f6064613211605a600d5461449890919063ffffffff16565b6144cb90919063ffffffff16565b915061322c565b600d5491505b5090565b601e60029054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561329f57600080fd5b601e60009054906101000a900460ff1680156132c85750601e60019054906101000a900460ff16155b15156132d357600080fd5b6001601e60016101000a81548160ff021916908315150217905550613319613308601454600f546148c390919063ffffffff16565b6010546144e690919063ffffffff16565b6010819055507fb528945f9f8d6e631c43589e01dda0ae94be16ce2ed59fe5d804143fc67d6eb560405160405180910390a1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156133a957600080fd5b602360159054906101000a900460ff161515156133c557600080fd5b602360149054906101000a900460ff1615156133e057600080fd5b6000602360146101000a81548160ff0219169083151502179055506000602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561349d57600080fd5b601e60029054906101000a900460ff1680156134be57506134bc6113c1565b155b80156134d75750601e60039054906101000a900460ff16155b15156134e257600080fd5b6001601e60036101000a81548160ff02191690831515021790555043600c8190555061351b6015546010546148c390919063ffffffff16565b905060008111156136135761353b81600e546148c390919063ffffffff16565b600e819055507fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca53082604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1600073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b7f0ca69ffaa24f7585a46a230e239f637d8aab90db504f53ac8e60515d75ee065e60405160405180910390a150565b60095481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061369a601d5461368c620151808561449890919063ffffffff16565b6144cb90919063ffffffff16565b9050919050565b602360159054906101000a900460ff161515156136bd57600080fd5b602360149054906101000a900460ff1615156136d857600080fd5b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561373457600080fd5b6001602360156101000a81548160ff0219169083151502179055506137a3601154600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6011546040518082815260200191505060405180910390a3565b6040805190810160405280600381526020017f4a4f59000000000000000000000000000000000000000000000000000000000081525081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156138e457600080fd5b602260159054906101000a900460ff1615151561390057600080fd5b602260149054906101000a900460ff16151561391b57600080fd5b6000602260146101000a81548160ff0219169083151502179055506000602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156139d657600080fd5b601e60019054906101000a900460ff1680156139ff5750601e60029054906101000a900460ff16155b1515613a0a57600080fd5b6001601e60026101000a81548160ff02191690831515021790555043600681905550613a4a613a39600761366e565b6006546144e690919063ffffffff16565b600781905550613a6e613a5d600661366e565b6007546144e690919063ffffffff16565b600881905550613a92613a81600661366e565b6008546144e690919063ffffffff16565b600981905550613ab6613aa5600661366e565b6009546144e690919063ffffffff16565b600a81905550613ada613ac9600661366e565b600a546144e690919063ffffffff16565b600b81905550600b54600c819055507fc7a327262dbe9cd2bf3282d035e03d69a2b73561e7dcc74caa29f84ee3b9ab6d60405160405180910390a1565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601e60029054906101000a900460ff168015613b715750613b6d601a54600c546144e690919063ffffffff16565b4310155b1515613b7c57600080fd5b613b8683836148dc565b905092915050565b6000613b98611b4a565b15613ba65760009050613c5f565b60165460155411158015613bbc57506007544311155b15613bca5760019050613c5f565b60175460155411158015613be057506008544311155b15613bee5760029050613c5f565b60185460155411158015613c0457506009544311155b15613c125760039050613c5f565b60195460155411158015613c285750600a544311155b15613c365760049050613c5f565b60105460155411158015613c4c5750600b544311155b15613c5a5760059050613c5f565b600690505b90565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613cbe57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015613d495750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515613d5457600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e60049054906101000a900460ff1681565b601a5481565b600f5481565b600a5481565b600d5481565b601b5481565b602260149054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613e3857600080fd5b6000601e60046101000a81548160ff0219169083151502179055507f6426a220e8910820230d4f2e29cc2bee7c13058ff2524cbcc4d823ba49aa2f6660405160405180910390a1565b6000613f1282600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60175481565b60185481565b60115481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561417257600080fd5b601e60029054906101000a900460ff1615151561418e57600080fd5b60008111151561419d57600080fd5b80600d8190555050565b60165481565b601e60019054906101000a900460ff1681565b600080600080600080600060216000896000191660001916815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1696508060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16955080600201549450806003015493508060040160009054906101000a900460ff1692508060040160019054906101000a900460ff1691505091939550919395565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156142d257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561430e57600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f8921d9ed49fbcd5da840617d62bf35c34f4871caaf7bbfef6da589dd8c2c1f3881604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561441157600080fd5b602360159054906101000a900460ff1615151561442d57600080fd5b80602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001602360146101000a81548160ff02191690831515021790555050565b60125481565b60145481565b600080828402905060008414806144b957508284828115156144b657fe5b04145b15156144c157fe5b8091505092915050565b60008082848115156144d957fe5b0490508091505092915050565b60008082840190508381101515156144fa57fe5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561454157600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561458f57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561461a57600080fd5b61466c82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148c390919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061470182600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506147d382600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148c390919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60008282111515156148d157fe5b818303905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561491957600080fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561496757600080fd5b6149b982600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148c390919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a4e82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b815481835581811511614b2757818360005260206000209182019101614b269190614b40565b5b505050565b602060405190810160405280600081525090565b614b6291905b80821115614b5e576000816000905550600101614b46565b5090565b905600a165627a7a72305820b231e4c4161541ff50f2b860627aa9580972ec42043d16348d4c06c75ae55d0b00290000000000000000000000007c90992fbe7084b6531f086349187ebacec898a5

Deployed Bytecode

0x606060405260043610610384576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062c988e81461038e57806302dd92c4146103bb57806304549d6f146103e857806304c98b2b1461041557806306fdde031461042a578063083c6323146104b8578063095ea7b3146104e15780630b3af9011461053b57806311a4c71014610574578063145538ea146105a2578063165c86df146105cb57806318160ddd1461062057806319af6f48146106495780631ad874b414610672578063207019671461069f57806321338d1b146106b4578063233dedf1146106e157806323b872dd1461070a578063313ce56714610783578063315a6d65146107b2578063335b7c13146107eb5780633736d853146108145780633fdb705b1461083757806340c10f191461086057806342966c68146108a257806344acb8da146108dd57806345a7b991146109065780634783c35b146109705780634c7b8fba146109c5578063575d462a14610a045780635ed7ca5b14610a2d5780635f504a8214610a425780636380877314610a975780636618846314610abe5780636828d54914610b18578063690c5de814610b3f5780636aa68a1514610b68578063707a7ab314610b9157806370a0823114610ba65780637ff9b59614610bf3578063809ef92f14610c1c57806386517df414610c495780638751775b14610c5e5780638863c8d514610c73578063899ecf2b14610c885780638da5cb5b14610cb15780638f2ec01214610d06578063935814a614610d3d57806395d89b4114610d5257806397ff6d1014610de0578063a39953b214610df5578063a6f2ae3a14610e0a578063a70616de14610e14578063a9059cbb14610e69578063b1c9fe6e14610ec3578063b1f8100d14610ef2578063b9b8af0b14610f2b578063c24fe21b14610f58578063c4fc3a3b14610f81578063c588415e14610faa578063c7876ea414610fd3578063c7c80f0214610ffc578063c974631b14611025578063cb3e64fd14611052578063d73dd62314611067578063d7638b73146110c1578063d8cba7a2146110ea578063da62a24614611113578063dd62ed3e1461113c578063de4b3262146111a8578063e9629d7f146111cb578063e9deb98c146111f4578063eee457f714611221578063f3283fba146112df578063f994789a14611318578063fd17f28914611351578063ff197bc31461137a575b61038c6113a3565b005b341561039957600080fd5b6103a16113ae565b604051808215151515815260200191505060405180910390f35b34156103c657600080fd5b6103ce6113c1565b604051808215151515815260200191505060405180910390f35b34156103f357600080fd5b6103fb6113f5565b604051808215151515815260200191505060405180910390f35b341561042057600080fd5b610428611408565b005b341561043557600080fd5b61043d6114c9565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561047d578082015181840152602081019050610462565b50505050905090810190601f1680156104aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156104c357600080fd5b6104cb611502565b6040518082815260200191505060405180910390f35b34156104ec57600080fd5b610521600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611508565b604051808215151515815260200191505060405180910390f35b341561054657600080fd5b610572600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506115fa565b005b6105a0600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506116d1565b005b34156105ad57600080fd5b6105b5611b12565b6040518082815260200191505060405180910390f35b34156105d657600080fd5b6105de611b18565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561062b57600080fd5b610633611b3e565b6040518082815260200191505060405180910390f35b341561065457600080fd5b61065c611b44565b6040518082815260200191505060405180910390f35b341561067d57600080fd5b610685611b4a565b604051808215151515815260200191505060405180910390f35b34156106aa57600080fd5b6106b2611b89565b005b34156106bf57600080fd5b6106c7611d37565b604051808215151515815260200191505060405180910390f35b34156106ec57600080fd5b6106f4611d4a565b6040518082815260200191505060405180910390f35b341561071557600080fd5b610769600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611d50565b604051808215151515815260200191505060405180910390f35b341561078e57600080fd5b610796611da3565b604051808260ff1660ff16815260200191505060405180910390f35b34156107bd57600080fd5b6107e9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611da8565b005b34156107f657600080fd5b6107fe611fa6565b6040518082815260200191505060405180910390f35b341561081f57600080fd5b6108356004808035906020019091905050611fac565b005b341561084257600080fd5b61084a612021565b6040518082815260200191505060405180910390f35b341561086b57600080fd5b6108a0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612027565b005b34156108ad57600080fd5b6108c36004808035906020019091905050612257565b604051808215151515815260200191505060405180910390f35b34156108e857600080fd5b6108f061243f565b6040518082815260200191505060405180910390f35b341561091157600080fd5b610919612445565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561095c578082015181840152602081019050610941565b505050509050019250505060405180910390f35b341561097b57600080fd5b6109836124a7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109d057600080fd5b6109e660048080359060200190919050506124cd565b60405180826000191660001916815260200191505060405180910390f35b3415610a0f57600080fd5b610a176124f1565b6040518082815260200191505060405180910390f35b3415610a3857600080fd5b610a406124f7565b005b3415610a4d57600080fd5b610a5561259c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610aa257600080fd5b610abc6004808035600019169060200190919050506125c2565b005b3415610ac957600080fd5b610afe600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061297e565b604051808215151515815260200191505060405180910390f35b3415610b2357600080fd5b610b3d600480803560001916906020019091905050612c0f565b005b3415610b4a57600080fd5b610b52612ec0565b6040518082815260200191505060405180910390f35b3415610b7357600080fd5b610b7b612ec6565b6040518082815260200191505060405180910390f35b3415610b9c57600080fd5b610ba4612ecc565b005b3415610bb157600080fd5b610bdd600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613068565b6040518082815260200191505060405180910390f35b3415610bfe57600080fd5b610c066130b1565b6040518082815260200191505060405180910390f35b3415610c2757600080fd5b610c2f613230565b604051808215151515815260200191505060405180910390f35b3415610c5457600080fd5b610c5c613243565b005b3415610c6957600080fd5b610c7161334d565b005b3415610c7e57600080fd5b610c8661343f565b005b3415610c9357600080fd5b610c9b613642565b6040518082815260200191505060405180910390f35b3415610cbc57600080fd5b610cc4613648565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610d1157600080fd5b610d27600480803590602001909190505061366e565b6040518082815260200191505060405180910390f35b3415610d4857600080fd5b610d506136a1565b005b3415610d5d57600080fd5b610d6561384f565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610da5578082015181840152602081019050610d8a565b50505050905090810190601f168015610dd25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610deb57600080fd5b610df3613888565b005b3415610e0057600080fd5b610e0861397a565b005b610e126113a3565b005b3415610e1f57600080fd5b610e27613b17565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610e7457600080fd5b610ea9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050613b3d565b604051808215151515815260200191505060405180910390f35b3415610ece57600080fd5b610ed6613b8e565b604051808260ff1660ff16815260200191505060405180910390f35b3415610efd57600080fd5b610f29600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613c62565b005b3415610f3657600080fd5b610f3e613d98565b604051808215151515815260200191505060405180910390f35b3415610f6357600080fd5b610f6b613dab565b6040518082815260200191505060405180910390f35b3415610f8c57600080fd5b610f94613db1565b6040518082815260200191505060405180910390f35b3415610fb557600080fd5b610fbd613db7565b6040518082815260200191505060405180910390f35b3415610fde57600080fd5b610fe6613dbd565b6040518082815260200191505060405180910390f35b341561100757600080fd5b61100f613dc3565b6040518082815260200191505060405180910390f35b341561103057600080fd5b611038613dc9565b604051808215151515815260200191505060405180910390f35b341561105d57600080fd5b611065613ddc565b005b341561107257600080fd5b6110a7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050613e81565b604051808215151515815260200191505060405180910390f35b34156110cc57600080fd5b6110d461407d565b6040518082815260200191505060405180910390f35b34156110f557600080fd5b6110fd614083565b6040518082815260200191505060405180910390f35b341561111e57600080fd5b611126614089565b6040518082815260200191505060405180910390f35b341561114757600080fd5b611192600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061408f565b6040518082815260200191505060405180910390f35b34156111b357600080fd5b6111c96004808035906020019091905050614116565b005b34156111d657600080fd5b6111de6141a7565b6040518082815260200191505060405180910390f35b34156111ff57600080fd5b6112076141ad565b604051808215151515815260200191505060405180910390f35b341561122c57600080fd5b6112466004808035600019169060200190919050506141c0565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018315151515815260200182151515158152602001965050505050505060405180910390f35b34156112ea57600080fd5b611316600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050614276565b005b341561132357600080fd5b61134f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506143b5565b005b341561135c57600080fd5b61136461448c565b6040518082815260200191505060405180910390f35b341561138557600080fd5b61138d614492565b6040518082815260200191505060405180910390f35b6113ac336116d1565b565b601e60039054906101000a900460ff1681565b6000601e60029054906101000a900460ff1680156113e15750600c544311155b80156113f05750601054601554105b905090565b601e60009054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561146457600080fd5b601e60009054906101000a900460ff1615151561148057600080fd5b6001601e60006101000a81548160ff0219169083151502179055507fd1cca6fe4d5aee03a8d044728a03c4ddae5db4b5b972a6485d78a168fd6e852460405160405180910390a1565b6040805190810160405280600881526020017f4a6f79546f6b656e00000000000000000000000000000000000000000000000081525081565b600c5481565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561165657600080fd5b602260159054906101000a900460ff1615151561167257600080fd5b80602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001602260146101000a81548160ff02191690831515021790555050565b6000806000601e60049054906101000a900460ff161515156116f257600080fd5b60003411151561170157600080fd5b611709611b4a565b8061171857506117176113c1565b5b151561172357600080fd5b61175661172e6130b1565b611748601260ff16600a0a3461449890919063ffffffff16565b6144cb90919063ffffffff16565b925060009150611764611b4a565b156117ae57600f54611781846014546144e690919063ffffffff16565b1115151561178e57600080fd5b6117a3836014546144e690919063ffffffff16565b6014819055506117f3565b6010546117c6846015546144e690919063ffffffff16565b111515156117d357600080fd5b6117e8836015546144e690919063ffffffff16565b601581905550600191505b6118096001601f546144e690919063ffffffff16565b601f81905550601f5433346000365a433a604051808981526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018781526020018686808284378201915050848152602001838152602001828152602001985050505050505050506040518091039020905060e0604051908101604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020013481526020018481526020016000151581526020016000151581526020018360ff1681525060216000836000191660001916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015560808201518160040160006101000a81548160ff02191690831515021790555060a08201518160040160016101000a81548160ff02191690831515021790555060c08201518160040160026101000a81548160ff021916908360ff16021790555090505060208054806001018281611a3a9190614b00565b9160005260206000209001600083909190915090600019169055507fff0c5a4b2effdcf75368a7b8cb608675e273cbd755505bf9e1a837e9701bd89e81338634876040518086600019166000191681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019550505050505060405180910390a150505050565b60065481565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b60155481565b6000601e60009054906101000a900460ff168015611b755750601e60019054906101000a900460ff16155b8015611b845750600f54601454105b905090565b602260159054906101000a900460ff16151515611ba557600080fd5b602260149054906101000a900460ff161515611bc057600080fd5b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c1c57600080fd5b6001602260156101000a81548160ff021916908315150217905550611c8b601354600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6013546040518082815260200191505060405180910390a3565b602360149054906101000a900460ff1681565b601d5481565b6000601e60029054906101000a900460ff168015611d845750611d80601a54600c546144e690919063ffffffff16565b4310155b1515611d8f57600080fd5b611d9a848484614504565b90509392505050565b601281565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e0657600080fd5b601e60029054906101000a900460ff161515611e2157600080fd5b6024601c54101515611e3257600080fd5b611e70611e5f611e4e6001601c546144e690919063ffffffff16565b601b5461449890919063ffffffff16565b600c546144e690919063ffffffff16565b4310151515611e7e57600080fd5b601c60008154809291906001019190505550611ea660246012546144cb90919063ffffffff16565b9050611efa81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600b5481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561200857600080fd5b60008111151561201757600080fd5b80601d8190555050565b60135481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561208357600080fd5b60008111151561209257600080fd5b601e60009054906101000a900460ff1680156120bb5750601e60039054906101000a900460ff16155b15156120c657600080fd5b6120ce611b4a565b1561211857600f546120eb826014546144e690919063ffffffff16565b111515156120f857600080fd5b61210d816014546144e690919063ffffffff16565b601481905550612159565b601054612130826015546144e690919063ffffffff16565b1115151561213d57600080fd5b612152816015546144e690919063ffffffff16565b6015819055505b6121ab81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156122b557600080fd5b61230782600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148c390919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061235f82600e546148c390919063ffffffff16565b600e81905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a37fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca53383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a160019050919050565b60105481565b61244d614b2c565b602080548060200260200160405190810160405280929190818152602001828054801561249d57602002820191906000526020600020905b81546000191681526020019060010190808311612485575b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6020818154811015156124dc57fe5b90600052602060002090016000915090505481565b60075481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561255357600080fd5b6001601e60046101000a81548160ff0219169083151502179055507fa8d1ea886eaf8bd3d113c770bf7af546123c70e235b0d036ff752d5e920a7b5660405160405180910390a1565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561262057600080fd5b60216000836000191660001916815260200190815260200160002090508060040160009054906101000a900460ff1615151561265b57600080fd5b60018160040160006101000a81548160ff02191690831515021790555060018160040160016101000a81548160ff02191690831515021790555061270f8160030154600160008460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160008360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82600201549081150290604051600060405180830381858888f1935050505015156127d957fe5b8060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83600301546040518082815260200191505060405180910390a37f83711c709923be4ac11f3793650dc879f27f832eb4831a15f7c7eaefecdca2608260018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685600201548660030154604051808760001916600019168152602001861515151581526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001965050505050505060405180910390a15050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115612a8f576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b23565b612aa283826148c390919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c6d57600080fd5b60216000836000191660001916815260200190815260200160002090508060040160009054906101000a900460ff16151515612ca857600080fd5b60018160040160006101000a81548160ff02191690831515021790555060008160040160016101000a81548160ff02191690831515021790555060008160040160029054906101000a900460ff1660ff161415612d2357612d1881600301546014546148c390919063ffffffff16565b601481905550612d43565b612d3c81600301546015546148c390919063ffffffff16565b6015819055505b8060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82600201549081150290604051600060405180830381858888f193505050501515612da857fe5b7f83711c709923be4ac11f3793650dc879f27f832eb4831a15f7c7eaefecdca2608260008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685600201548660030154604051808760001916600019168152602001861515151581526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001965050505050505060405180910390a15050565b60195481565b60085481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612f2857600080fd5b7f5327f96e1b66776c2f90adb141c8f65efa8dd259adb405009213276527cbf69a600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806130bc613b8e565b905060008160ff1614156130fa576130f360646130e56032600d5461449890919063ffffffff16565b6144cb90919063ffffffff16565b915061322c565b60018160ff1614156131365761312f60646131216046600d5461449890919063ffffffff16565b6144cb90919063ffffffff16565b915061322c565b60028160ff1614156131725761316b606461315d604b600d5461449890919063ffffffff16565b6144cb90919063ffffffff16565b915061322c565b60038160ff1614156131ae576131a760646131996050600d5461449890919063ffffffff16565b6144cb90919063ffffffff16565b915061322c565b60048160ff1614156131ea576131e360646131d56055600d5461449890919063ffffffff16565b6144cb90919063ffffffff16565b915061322c565b60058160ff1614156132265761321f6064613211605a600d5461449890919063ffffffff16565b6144cb90919063ffffffff16565b915061322c565b600d5491505b5090565b601e60029054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561329f57600080fd5b601e60009054906101000a900460ff1680156132c85750601e60019054906101000a900460ff16155b15156132d357600080fd5b6001601e60016101000a81548160ff021916908315150217905550613319613308601454600f546148c390919063ffffffff16565b6010546144e690919063ffffffff16565b6010819055507fb528945f9f8d6e631c43589e01dda0ae94be16ce2ed59fe5d804143fc67d6eb560405160405180910390a1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156133a957600080fd5b602360159054906101000a900460ff161515156133c557600080fd5b602360149054906101000a900460ff1615156133e057600080fd5b6000602360146101000a81548160ff0219169083151502179055506000602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561349d57600080fd5b601e60029054906101000a900460ff1680156134be57506134bc6113c1565b155b80156134d75750601e60039054906101000a900460ff16155b15156134e257600080fd5b6001601e60036101000a81548160ff02191690831515021790555043600c8190555061351b6015546010546148c390919063ffffffff16565b905060008111156136135761353b81600e546148c390919063ffffffff16565b600e819055507fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca53082604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1600073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b7f0ca69ffaa24f7585a46a230e239f637d8aab90db504f53ac8e60515d75ee065e60405160405180910390a150565b60095481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061369a601d5461368c620151808561449890919063ffffffff16565b6144cb90919063ffffffff16565b9050919050565b602360159054906101000a900460ff161515156136bd57600080fd5b602360149054906101000a900460ff1615156136d857600080fd5b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561373457600080fd5b6001602360156101000a81548160ff0219169083151502179055506137a3601154600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6011546040518082815260200191505060405180910390a3565b6040805190810160405280600381526020017f4a4f59000000000000000000000000000000000000000000000000000000000081525081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156138e457600080fd5b602260159054906101000a900460ff1615151561390057600080fd5b602260149054906101000a900460ff16151561391b57600080fd5b6000602260146101000a81548160ff0219169083151502179055506000602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156139d657600080fd5b601e60019054906101000a900460ff1680156139ff5750601e60029054906101000a900460ff16155b1515613a0a57600080fd5b6001601e60026101000a81548160ff02191690831515021790555043600681905550613a4a613a39600761366e565b6006546144e690919063ffffffff16565b600781905550613a6e613a5d600661366e565b6007546144e690919063ffffffff16565b600881905550613a92613a81600661366e565b6008546144e690919063ffffffff16565b600981905550613ab6613aa5600661366e565b6009546144e690919063ffffffff16565b600a81905550613ada613ac9600661366e565b600a546144e690919063ffffffff16565b600b81905550600b54600c819055507fc7a327262dbe9cd2bf3282d035e03d69a2b73561e7dcc74caa29f84ee3b9ab6d60405160405180910390a1565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601e60029054906101000a900460ff168015613b715750613b6d601a54600c546144e690919063ffffffff16565b4310155b1515613b7c57600080fd5b613b8683836148dc565b905092915050565b6000613b98611b4a565b15613ba65760009050613c5f565b60165460155411158015613bbc57506007544311155b15613bca5760019050613c5f565b60175460155411158015613be057506008544311155b15613bee5760029050613c5f565b60185460155411158015613c0457506009544311155b15613c125760039050613c5f565b60195460155411158015613c285750600a544311155b15613c365760049050613c5f565b60105460155411158015613c4c5750600b544311155b15613c5a5760059050613c5f565b600690505b90565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613cbe57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015613d495750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515613d5457600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e60049054906101000a900460ff1681565b601a5481565b600f5481565b600a5481565b600d5481565b601b5481565b602260149054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613e3857600080fd5b6000601e60046101000a81548160ff0219169083151502179055507f6426a220e8910820230d4f2e29cc2bee7c13058ff2524cbcc4d823ba49aa2f6660405160405180910390a1565b6000613f1282600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60175481565b60185481565b60115481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561417257600080fd5b601e60029054906101000a900460ff1615151561418e57600080fd5b60008111151561419d57600080fd5b80600d8190555050565b60165481565b601e60019054906101000a900460ff1681565b600080600080600080600060216000896000191660001916815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1696508060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16955080600201549450806003015493508060040160009054906101000a900460ff1692508060040160019054906101000a900460ff1691505091939550919395565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156142d257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561430e57600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f8921d9ed49fbcd5da840617d62bf35c34f4871caaf7bbfef6da589dd8c2c1f3881604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561441157600080fd5b602360159054906101000a900460ff1615151561442d57600080fd5b80602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001602360146101000a81548160ff02191690831515021790555050565b60125481565b60145481565b600080828402905060008414806144b957508284828115156144b657fe5b04145b15156144c157fe5b8091505092915050565b60008082848115156144d957fe5b0490508091505092915050565b60008082840190508381101515156144fa57fe5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561454157600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561458f57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561461a57600080fd5b61466c82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148c390919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061470182600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506147d382600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148c390919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60008282111515156148d157fe5b818303905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561491957600080fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561496757600080fd5b6149b982600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148c390919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a4e82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b815481835581811511614b2757818360005260206000209182019101614b269190614b40565b5b505050565b602060405190810160405280600081525090565b614b6291905b80821115614b5e576000816000905550600101614b46565b5090565b905600a165627a7a72305820b231e4c4161541ff50f2b860627aa9580972ec42043d16348d4c06c75ae55d0b0029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007c90992fbe7084b6531f086349187ebacec898a5

-----Decoded View---------------
Arg [0] : _multisig (address): 0x7C90992FBe7084B6531f086349187EBacEC898A5

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007c90992fbe7084b6531f086349187ebacec898a5


Swarm Source

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