ETH Price: $1,971.97 (-2.53%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer122822472021-04-21 7:31:471775 days ago1618990307IN
0x9cD8d1d3...86cdcfA14
0 ETH0.003229145
Transfer122822372021-04-21 7:29:461775 days ago1618990186IN
0x9cD8d1d3...86cdcfA14
0 ETH0.00836913154
Transfer122660022021-04-18 19:29:441778 days ago1618774184IN
0x9cD8d1d3...86cdcfA14
0 ETH0.00587185108
Transfer122657892021-04-18 18:45:281778 days ago1618771528IN
0x9cD8d1d3...86cdcfA14
0 ETH0.00576057106
Transfer122657892021-04-18 18:45:281778 days ago1618771528IN
0x9cD8d1d3...86cdcfA14
0 ETH0.00576311106
Transfer122657862021-04-18 18:44:291778 days ago1618771469IN
0x9cD8d1d3...86cdcfA14
0 ETH0.00657864121
Transfer122657862021-04-18 18:44:291778 days ago1618771469IN
0x9cD8d1d3...86cdcfA14
0 ETH0.00712233131
Transfer122657852021-04-18 18:44:281778 days ago1618771468IN
0x9cD8d1d3...86cdcfA14
0 ETH0.0052737997
Transfer122657342021-04-18 18:33:361778 days ago1618770816IN
0x9cD8d1d3...86cdcfA14
0 ETH0.00603495111
Transfer122657142021-04-18 18:29:271778 days ago1618770567IN
0x9cD8d1d3...86cdcfA14
0 ETH0.00614369113
Transfer122657102021-04-18 18:29:001778 days ago1618770540IN
0x9cD8d1d3...86cdcfA14
0 ETH0.00614369113
Transfer122657082021-04-18 18:28:471778 days ago1618770527IN
0x9cD8d1d3...86cdcfA14
0 ETH0.00549126101
Transfer122656462021-04-18 18:17:391778 days ago1618769859IN
0x9cD8d1d3...86cdcfA14
0 ETH0.00706797130
Transfer122656462021-04-18 18:17:391778 days ago1618769859IN
0x9cD8d1d3...86cdcfA14
0 ETH0.0071767132
Transfer122656462021-04-18 18:17:391778 days ago1618769859IN
0x9cD8d1d3...86cdcfA14
0 ETH0.00608932112
Transfer122655512021-04-18 17:52:531778 days ago1618768373IN
0x9cD8d1d3...86cdcfA14
0 ETH0.0059236109
Transfer122655502021-04-18 17:52:491778 days ago1618768369IN
0x9cD8d1d3...86cdcfA14
0 ETH0.00592622109
Transfer122655362021-04-18 17:49:171778 days ago1618768157IN
0x9cD8d1d3...86cdcfA14
0 ETH0.00641554118
End ICO118809182021-02-18 12:40:051837 days ago1613652005IN
0x9cD8d1d3...86cdcfA14
0 ETH0.01863554110
Transfer94410232020-02-08 8:29:372213 days ago1581150577IN
0x9cD8d1d3...86cdcfA14
0 ETH0.000072613
Transfer94409882020-02-08 8:23:012213 days ago1581150181IN
0x9cD8d1d3...86cdcfA14
0 ETH0.000162613
Add Presale Amou...92472282020-01-09 15:15:592243 days ago1578582959IN
0x9cD8d1d3...86cdcfA14
0 ETH0.00098316
Add Presale Amou...92471992020-01-09 15:11:032243 days ago1578582663IN
0x9cD8d1d3...86cdcfA14
0 ETH0.000983216
Add Presale Amou...92471452020-01-09 14:58:452243 days ago1578581925IN
0x9cD8d1d3...86cdcfA14
0 ETH0.000983216
Add Presale Amou...91522202019-12-23 19:46:322260 days ago1577130392IN
0x9cD8d1d3...86cdcfA14
0 ETH0.0009833916
View all transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

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

Contract Source Code Verified (Exact Match)

Contract Name:
CrwdToken

Compiler Version
v0.5.12+commit.7709ece9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2019-12-23
*/

pragma solidity ^0.5.0;

// File: contracts/zeppelin_v1_12_0/ERC20Basic.sol

//copy from https://github.com/OpenZeppelin/openzeppelin-solidity/blob/v1.12.0/contracts/token/ERC20/ERC20Basic.sol
//changes: upgraded pragma

pragma solidity ^0.5.12;

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * See https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  function totalSupply() public view returns (uint256);
  function balanceOf(address _who) public view returns (uint256);
  function transfer(address _to, uint256 _value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

// File: openzeppelin-solidity/contracts/math/SafeMath.sol

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     *
     * _Available since v2.4.0._
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     *
     * _Available since v2.4.0._
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     *
     * _Available since v2.4.0._
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

// File: contracts/zeppelin_v1_12_0/BasicToken.sol

//copy from https://github.com/OpenZeppelin/openzeppelin-solidity/blob/v1.12.0/contracts/token/ERC20/BasicToken.sol
//changes: upgraded pragma, used SafeMath from current openzeppelin

pragma solidity ^0.5.12;




/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 */
contract BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) internal balances;

  uint256 internal totalSupply_;

  /**
  * @dev Total number of tokens in existence
  */
  function totalSupply() public view returns (uint256) {
    return totalSupply_;
  }

  /**
  * @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(_value <= balances[msg.sender], "too little");
    require(_to != address(0));

    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    emit 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 view returns (uint256) {
    return balances[_owner];
  }

}

// File: contracts/zeppelin_v1_12_0/ERC20.sol

//copy from https://github.com/OpenZeppelin/openzeppelin-solidity/blob/v1.12.0/contracts/token/ERC20/ERC20.sol
//changes: upgraded pragma

pragma solidity ^0.5.12;



/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
  function allowance(address _owner, address _spender)
    public view 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
  );
}

// File: contracts/zeppelin_v1_12_0/StandardToken.sol

//copy from https://github.com/OpenZeppelin/openzeppelin-solidity/blob/v1.12.0/contracts/token/ERC20/StandardToken.sol
//changes: upgraded pragma

pragma solidity ^0.5.12;




/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * https://github.com/ethereum/EIPs/issues/20
 * Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
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(_value <= balances[_from]);
    require(_value <= allowed[_from][msg.sender]);
    require(_to != address(0));

    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
    emit 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;
    emit 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
    view
    returns (uint256)
  {
    return allowed[_owner][_spender];
  }

  /**
   * @dev Increase the amount of tokens that an owner allowed to a 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
   * @param _spender The address which will spend the funds.
   * @param _addedValue The amount of tokens to increase the allowance by.
   */
  function increaseApproval(
    address _spender,
    uint256 _addedValue
  )
    public
    returns (bool)
  {
    allowed[msg.sender][_spender] = (
      allowed[msg.sender][_spender].add(_addedValue));
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  /**
   * @dev Decrease the amount of tokens that an owner allowed to a spender.
   * approve should be called when allowed[_spender] == 0. To decrement
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _subtractedValue The amount of tokens to decrease the allowance by.
   */
  function decreaseApproval(
    address _spender,
    uint256 _subtractedValue
  )
    public
    returns (bool)
  {
    uint256 oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue >= oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

}

// File: contracts\CrwdToken.sol

/*
Implements ERC 20 Token standard: https://github.com/ethereum/EIPs/issues/20.
*/
pragma solidity ^0.5.12;


contract CrwdToken is StandardToken {

    // data structures
    enum States {
        Initial, // deployment time
        ValuationSet,
        Ico, // whitelist addresses, accept funds, update balances
        Underfunded, // ICO time finished and minimal amount not raised
        Operational, // production phase
        Paused // for contract upgrades
    }

    mapping(address => uint256) public ethPossibleRefunds;

    uint256 public soldTokens;

    string public constant name = "CRWDToken";

    string public constant symbol = "CRWT";

    uint8 public constant decimals = 18;

    mapping(address => bool) public whitelist;

    address public teamTimeLock;
    address public devTimeLock;
    address public countryTimeLock;

    address public miscNotLocked;

    address public stateControl;

    address public whitelistControl;

    address public withdrawControl;

    address public tokenAssignmentControl;

    States public state;

    uint256 public weiICOMinimum;

    uint256 public weiICOMaximum;

    uint256 public silencePeriod;

    uint256 public startAcceptingFundsBlock;

    uint256 public endBlock;

    uint256 public ETH_CRWDTOKEN; //number of tokens per ETH

    uint256 constant pointMultiplier = 1e18; //100% = 1*10^18 points

    uint256 public constant maxTotalSupply = 45000000 * pointMultiplier;

    uint256 public constant percentForSale = 50;

    event Mint(address indexed to, uint256 amount);
    event MintFinished();

    bool public mintingFinished = false;

    //this creates the contract and stores the owner. it also passes in 3 addresses to be used later during the lifetime of the contract.
    constructor(
        address _stateControl,
        address _whitelistControl,
        address _withdrawControl,
        address _tokenAssignmentControl,
        address _notLocked, //15%
        address _lockedTeam, //15%
        address _lockedDev, //10%
        address _lockedCountry //10%
    ) public {
        stateControl = _stateControl;
        whitelistControl = _whitelistControl;
        withdrawControl = _withdrawControl;
        tokenAssignmentControl = _tokenAssignmentControl;
        moveToState(States.Initial);
        weiICOMinimum = 0;
        //to be overridden
        weiICOMaximum = 0;
        endBlock = 0;
        ETH_CRWDTOKEN = 0;
        totalSupply_ = 0;
        soldTokens = 0;
        teamTimeLock = _lockedTeam;
        devTimeLock = _lockedDev;
        countryTimeLock = _lockedCountry;
        miscNotLocked = _notLocked;
    }

    event Whitelisted(address addr);

    event StateTransition(States oldState, States newState);

    modifier onlyWhitelist() {
        require(msg.sender == whitelistControl, "only whitelisted wallets");
        _;
    }

    modifier onlyStateControl() {
        require(msg.sender == stateControl, "only state-controller");
        _;
    }

    modifier onlyTokenAssignmentControl() {
        require(msg.sender == tokenAssignmentControl, "only assignment controller");
        _;
    }

    modifier onlyWithdraw() {
        require(msg.sender == withdrawControl, "only withdraw controller");
        _;
    }

    modifier requireState(States _requiredState) {
        require(state == _requiredState, "invalid token state");
        _;
    }

    modifier requireAnyOfTwoStates(States _requiredState1, States _requiredState2) {
        require(state == _requiredState1 || state == _requiredState2, "wrong token state");
        _;
    }

    /**
    BEGIN ICO functions
    */

    //this is the main funding function, it updates the balances of tokens during the ICO.
    //no particular incentive schemes have been implemented here
    //it is only accessible during the "ICO" phase.
    function() external payable
    requireState(States.Ico)
    {
        require(whitelist[msg.sender] == true, "not whitelisted");
        require(address(this).balance <= weiICOMaximum, "weiICOMaximum");
        //note that msg.value is already included in address(this).balance
        require(block.number < endBlock, "endBlock reached");
        require(block.number >= startAcceptingFundsBlock, "startBlock future");

        uint256 basisTokens = msg.value.mul(ETH_CRWDTOKEN);

        issueTokensToUser(msg.sender, basisTokens);
        ethPossibleRefunds[msg.sender] = ethPossibleRefunds[msg.sender].add(msg.value);
    }

    function issueTokensToUser(address beneficiary, uint256 amount)
    internal
    {
        balances[beneficiary] = balances[beneficiary].add(amount);
        soldTokens = soldTokens.add(amount);
        totalSupply_ = totalSupply_.add(amount.mul(100).div(percentForSale));
        emit Mint(beneficiary, amount);
        emit Transfer(address(0x0), beneficiary, amount);
    }

    function issuePercentToReserve(address beneficiary, uint256 percentOfSold)
    internal
    {
        uint256 amount = totalSupply_.mul(percentOfSold).div(100);
        balances[beneficiary] = balances[beneficiary].add(amount);
        emit Mint(beneficiary, amount);
        emit Transfer(address(0x0), beneficiary, amount);
    }

    function moveToState(States _newState)
    internal
    {
        emit StateTransition(state, _newState);
        state = _newState;
    }

    // ICO contract configuration function
    // newEthICOMinimum is the minimum amount of funds to raise
    // newEthICOMaximum is the maximum amount of funds to raise
    // silencePeriod is a number of blocks to wait after starting the ICO. No funds are accepted during the silence period. It can be set to zero.
    // newEndBlock is the absolute block number at which the ICO must stop. It must be set after now + silence period.
    function updateEthICOThresholds(uint256 _newWeiICOMinimum, uint256 _newWeiICOMaximum, uint256 _silencePeriod, uint256 _newEndBlock)
    public
    onlyStateControl
    {
        require(state == States.Initial || state == States.ValuationSet, "invalid state");
        require(_newWeiICOMaximum > _newWeiICOMinimum, "weiMax");
        require(block.number + silencePeriod < _newEndBlock, "high silence");
        require(block.number < _newEndBlock, "past endBock");
        weiICOMinimum = _newWeiICOMinimum;
        weiICOMaximum = _newWeiICOMaximum;
        silencePeriod = _silencePeriod;
        endBlock = _newEndBlock;
        // initial conversion rate of ETH_CRWDTOKEN set now, this is used during the Ico phase.
        ETH_CRWDTOKEN = maxTotalSupply.mul(percentForSale).div(100).div(weiICOMaximum);
        // check pointMultiplier
        moveToState(States.ValuationSet);
    }

    function startICO()
    public
    onlyStateControl
    requireState(States.ValuationSet)
    {
        require(block.number < endBlock, "ended");
        require(block.number + silencePeriod < endBlock, "ended w silence");
        startAcceptingFundsBlock = block.number + silencePeriod;
        moveToState(States.Ico);
    }

    function addPresaleAmount(address beneficiary, uint256 amount)
    public
    onlyTokenAssignmentControl
    {
        require(state == States.ValuationSet || state == States.Ico, "invalid token state");
        issueTokensToUser(beneficiary, amount);
    }


    function endICO()
    public
    onlyStateControl
    requireState(States.Ico)
    {
        if (address(this).balance < weiICOMinimum) {
            moveToState(States.Underfunded);
        }
        else {
            burnAndFinish();
            moveToState(States.Operational);
        }
    }

    function anyoneEndICO()
    public
    requireState(States.Ico)
    {
        require(block.number > endBlock, "not ended");
        if (address(this).balance < weiICOMinimum) {
            moveToState(States.Underfunded);
        }
        else {
            burnAndFinish();
            moveToState(States.Operational);
        }
    }

    function burnAndFinish()
    internal
    {
        issuePercentToReserve(teamTimeLock, 15);
        issuePercentToReserve(devTimeLock, 10);
        issuePercentToReserve(countryTimeLock, 10);
        issuePercentToReserve(miscNotLocked, 15);

        totalSupply_ = soldTokens
        .add(balances[teamTimeLock])
        .add(balances[devTimeLock])
        .add(balances[countryTimeLock])
        .add(balances[miscNotLocked]);

        mintingFinished = true;
        emit MintFinished();
    }

    function addToWhitelist(address _whitelisted)
    public
    onlyWhitelist
        //    requireState(States.Ico)
    {
        whitelist[_whitelisted] = true;
        emit Whitelisted(_whitelisted);
    }


    //emergency pause for the ICO
    function pause()
    public
    onlyStateControl
    requireState(States.Ico)
    {
        moveToState(States.Paused);
    }

    //in case we want to completely abort
    function abort()
    public
    onlyStateControl
    requireState(States.Paused)
    {
        moveToState(States.Underfunded);
    }

    //un-pause
    function resumeICO()
    public
    onlyStateControl
    requireState(States.Paused)
    {
        moveToState(States.Ico);
    }

    //in case of a failed/aborted ICO every investor can get back their money
    function requestRefund()
    public
    requireState(States.Underfunded)
    {
        require(ethPossibleRefunds[msg.sender] > 0, "nothing to refund");
        //there is no need for updateAccount(msg.sender) since the token never became active.
        uint256 payout = ethPossibleRefunds[msg.sender];
        //reverse calculate the amount to pay out
        ethPossibleRefunds[msg.sender] = 0;
        msg.sender.transfer(payout);
    }

    //after the ico has run its course, the withdraw account can drain funds bit-by-bit as needed.
    function requestPayout(uint _amount)
    public
    onlyWithdraw //very important!
    requireState(States.Operational)
    {
        msg.sender.transfer(_amount);
    }

    //if this contract gets a balance in some other ERC20 contract - or even iself - then we can rescue it.
    function rescueToken(ERC20Basic _foreignToken, address _to)
    public
    onlyTokenAssignmentControl
    requireState(States.Operational)
    {
        _foreignToken.transfer(_to, _foreignToken.balanceOf(address(this)));
    }
    /**
    END ICO functions
    */

    /**
    BEGIN ERC20 functions
    */
    function transfer(address _to, uint256 _value)
    public
    requireAnyOfTwoStates(States.Operational, States.Ico)
    returns (bool success) {
        return super.transfer(_to, _value);
    }

    function transferFrom(address _from, address _to, uint256 _value)
    public
    requireAnyOfTwoStates(States.Operational, States.Ico)
    returns (bool success) {
        return super.transferFrom(_from, _to, _value);
    }

    function balanceOf(address _account)
    public
    view
    returns (uint256 balance) {
        return balances[_account];
    }

    /**
    END ERC20 functions
    */
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_stateControl","type":"address"},{"internalType":"address","name":"_whitelistControl","type":"address"},{"internalType":"address","name":"_withdrawControl","type":"address"},{"internalType":"address","name":"_tokenAssignmentControl","type":"address"},{"internalType":"address","name":"_notLocked","type":"address"},{"internalType":"address","name":"_lockedTeam","type":"address"},{"internalType":"address","name":"_lockedDev","type":"address"},{"internalType":"address","name":"_lockedCountry","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"enum CrwdToken.States","name":"oldState","type":"uint8"},{"indexed":false,"internalType":"enum CrwdToken.States","name":"newState","type":"uint8"}],"name":"StateTransition","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"addr","type":"address"}],"name":"Whitelisted","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"ETH_CRWDTOKEN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"abort","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"beneficiary","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"addPresaleAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_whitelisted","type":"address"}],"name":"addToWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"anyoneEndICO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"countryTimeLock","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"devTimeLock","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"endICO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ethPossibleRefunds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"maxTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mintingFinished","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"miscNotLocked","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"percentForSale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"requestPayout","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"requestRefund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract ERC20Basic","name":"_foreignToken","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"rescueToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"resumeICO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"silencePeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"soldTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startAcceptingFundsBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"startICO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"state","outputs":[{"internalType":"enum CrwdToken.States","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stateControl","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamTimeLock","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenAssignmentControl","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_newWeiICOMinimum","type":"uint256"},{"internalType":"uint256","name":"_newWeiICOMaximum","type":"uint256"},{"internalType":"uint256","name":"_silencePeriod","type":"uint256"},{"internalType":"uint256","name":"_newEndBlock","type":"uint256"}],"name":"updateEthICOThresholds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"weiICOMaximum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"weiICOMinimum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"whitelistControl","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"withdrawControl","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}]

60806040526000601460006101000a81548160ff0219169083151502179055503480156200002c57600080fd5b50604051620047ab380380620047ab83398181016040526101008110156200005357600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505087600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001c060006200030260201b60201c565b6000600e819055506000600f81905550600060128190555060006013819055506000600181905550600060048190555082600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050505062000395565b7f3a779de46631dd65116ae538600f1bc3c338200c6aef638429b5de43301c28f7600d60149054906101000a900460ff1682604051808360058111156200034557fe5b60ff1681526020018260058111156200035a57fe5b60ff1681526020019250505060405180910390a180600d60146101000a81548160ff021916908360058111156200038d57fe5b021790555050565b61440680620003a56000396000f3fe6080604052600436106102675760003560e01c80637b807a5111610144578063c19d93fb116100b6578063d73dd6231161007a578063d73dd62314611087578063d87d2a66146110fa578063dd62ed3e14611125578063e43252d7146111aa578063f4e68486146111fb578063f8b1fb121461122657610267565b8063c19d93fb14610f5a578063c8c2ed5414610f93578063cc577f3814610fea578063d5cef13314611045578063d6fea3061461105c57610267565b806390c79af91161010857806390c79af914610d8157806395d89b4114610dac5780639b19251a14610e3c5780639cbd7da514610ea5578063a9059cbb14610ebc578063b21ed44e14610f2f57610267565b80637b807a5114610c685780637fa8c15814610cbf5780637fe98ae014610cd65780638456cb5914610d2f5780638f97e3a014610d4657610267565b806338dacaab116101dd57806359d3dad9116101a157806359d3dad914610a605780635ed9ebfc14610ab7578063650d22e814610ae25780636618846314610b395780636aa9c82b14610bac57806370a0823114610c0357610267565b806338dacaab146108ff5780633cae09ac1461095657806341f1d4dd146109815780634707d000146109d85780634f24840914610a4957610267565b806318160ddd1161022f57806318160ddd146107b757806323b872dd146107e25780632ab4d05214610875578063313ce567146108a057806332b3c323146108d157806335a063b4146108e857610267565b806304b2bf991461060357806305d2035b1461065a57806306fdde0314610689578063083c632314610719578063095ea7b314610744575b600280600581111561027557fe5b600d60149054906101000a900460ff16600581111561029057fe5b14610303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c696420746f6b656e2073746174650000000000000000000000000081525060200191505060405180910390fd5b60011515600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146103c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6e6f742077686974656c6973746564000000000000000000000000000000000081525060200191505060405180910390fd5b600f543073ffffffffffffffffffffffffffffffffffffffff16311115610458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f77656949434f4d6178696d756d0000000000000000000000000000000000000081525060200191505060405180910390fd5b60125443106104cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f656e64426c6f636b20726561636865640000000000000000000000000000000081525060200191505060405180910390fd5b601154431015610547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f7374617274426c6f636b2066757475726500000000000000000000000000000081525060200191505060405180910390fd5b600061055e6013543461128b90919063ffffffff16565b905061056a3382611311565b6105bc34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b890919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050005b34801561060f57600080fd5b50610618611540565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561066657600080fd5b5061066f611566565b604051808215151515815260200191505060405180910390f35b34801561069557600080fd5b5061069e611579565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106de5780820151818401526020810190506106c3565b50505050905090810190601f16801561070b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561072557600080fd5b5061072e6115b2565b6040518082815260200191505060405180910390f35b34801561075057600080fd5b5061079d6004803603604081101561076757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115b8565b604051808215151515815260200191505060405180910390f35b3480156107c357600080fd5b506107cc6116aa565b6040518082815260200191505060405180910390f35b3480156107ee57600080fd5b5061085b6004803603606081101561080557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116b4565b604051808215151515815260200191505060405180910390f35b34801561088157600080fd5b5061088a611799565b6040518082815260200191505060405180910390f35b3480156108ac57600080fd5b506108b56117ab565b604051808260ff1660ff16815260200191505060405180910390f35b3480156108dd57600080fd5b506108e66117b0565b005b3480156108f457600080fd5b506108fd611909565b005b34801561090b57600080fd5b50610914611a75565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561096257600080fd5b5061096b611a9b565b6040518082815260200191505060405180910390f35b34801561098d57600080fd5b50610996611aa1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109e457600080fd5b50610a47600480360360408110156109fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ac7565b005b348015610a5557600080fd5b50610a5e611da5565b005b348015610a6c57600080fd5b50610a75611f4a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ac357600080fd5b50610acc611f70565b6040518082815260200191505060405180910390f35b348015610aee57600080fd5b50610af7611f76565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b4557600080fd5b50610b9260048036036040811015610b5c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f9c565b604051808215151515815260200191505060405180910390f35b348015610bb857600080fd5b50610bc161222c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c0f57600080fd5b50610c5260048036036020811015610c2657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612252565b6040518082815260200191505060405180910390f35b348015610c7457600080fd5b50610c7d61229a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ccb57600080fd5b50610cd46122c0565b005b348015610ce257600080fd5b50610d2d60048036036080811015610cf957600080fd5b8101908080359060200190929190803590602001909291908035906020019092919080359060200190929190505050612529565b005b348015610d3b57600080fd5b50610d44612895565b005b348015610d5257600080fd5b50610d7f60048036036020811015610d6957600080fd5b8101908080359060200190929190505050612a01565b005b348015610d8d57600080fd5b50610d96612bab565b6040518082815260200191505060405180910390f35b348015610db857600080fd5b50610dc1612bb1565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610e01578082015181840152602081019050610de6565b50505050905090810190601f168015610e2e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610e4857600080fd5b50610e8b60048036036020811015610e5f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612bea565b604051808215151515815260200191505060405180910390f35b348015610eb157600080fd5b50610eba612c0a565b005b348015610ec857600080fd5b50610f1560048036036040811015610edf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612d76565b604051808215151515815260200191505060405180910390f35b348015610f3b57600080fd5b50610f44612e59565b6040518082815260200191505060405180910390f35b348015610f6657600080fd5b50610f6f612e5e565b60405180826005811115610f7f57fe5b60ff16815260200191505060405180910390f35b348015610f9f57600080fd5b50610fa8612e71565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ff657600080fd5b506110436004803603604081101561100d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612e97565b005b34801561105157600080fd5b5061105a613033565b005b34801561106857600080fd5b50611071613258565b6040518082815260200191505060405180910390f35b34801561109357600080fd5b506110e0600480360360408110156110aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061325e565b604051808215151515815260200191505060405180910390f35b34801561110657600080fd5b5061110f61345a565b6040518082815260200191505060405180910390f35b34801561113157600080fd5b506111946004803603604081101561114857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613460565b6040518082815260200191505060405180910390f35b3480156111b657600080fd5b506111f9600480360360208110156111cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134e7565b005b34801561120757600080fd5b50611210613668565b6040518082815260200191505060405180910390f35b34801561123257600080fd5b506112756004803603602081101561124957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061366e565b6040518082815260200191505060405180910390f35b60008083141561129e576000905061130b565b60008284029050828482816112af57fe5b0414611306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806143b16021913960400191505060405180910390fd5b809150505b92915050565b611362816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b890919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113b9816004546114b890919063ffffffff16565b6004819055506113fa6113e960326113db60648561128b90919063ffffffff16565b61368690919063ffffffff16565b6001546114b890919063ffffffff16565b6001819055508173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040518082815260200191505060405180910390a28173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080828401905083811015611536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601460009054906101000a900460ff1681565b6040518060400160405280600981526020017f43525744546f6b656e000000000000000000000000000000000000000000000081525081565b60125481565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600154905090565b6000600460028160058111156116c657fe5b600d60149054906101000a900460ff1660058111156116e157fe5b148061171157508060058111156116f457fe5b600d60149054906101000a900460ff16600581111561170f57fe5b145b611783576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f77726f6e6720746f6b656e20737461746500000000000000000000000000000081525060200191505060405180910390fd5b61178e8686866136d0565b925050509392505050565b670de0b6b3a76400006302aea5400281565b601281565b60028060058111156117be57fe5b600d60149054906101000a900460ff1660058111156117d957fe5b1461184c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c696420746f6b656e2073746174650000000000000000000000000081525060200191505060405180910390fd5b60125443116118c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f6e6f7420656e646564000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600e543073ffffffffffffffffffffffffffffffffffffffff163110156118f3576118ee6003613a85565b611906565b6118fb613b15565b6119056004613a85565b5b50565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6f6e6c792073746174652d636f6e74726f6c6c6572000000000000000000000081525060200191505060405180910390fd5b60058060058111156119da57fe5b600d60149054906101000a900460ff1660058111156119f557fe5b14611a68576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c696420746f6b656e2073746174650000000000000000000000000081525060200191505060405180910390fd5b611a726003613a85565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f6f6e6c792061737369676e6d656e7420636f6e74726f6c6c657200000000000081525060200191505060405180910390fd5b6004806005811115611b9857fe5b600d60149054906101000a900460ff166005811115611bb357fe5b14611c26576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c696420746f6b656e2073746174650000000000000000000000000081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb838573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cc057600080fd5b505afa158015611cd4573d6000803e3d6000fd5b505050506040513d6020811015611cea57600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611d6457600080fd5b505af1158015611d78573d6000803e3d6000fd5b505050506040513d6020811015611d8e57600080fd5b810190808051906020019092919050505050505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e68576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6f6e6c792073746174652d636f6e74726f6c6c6572000000000000000000000081525060200191505060405180910390fd5b6002806005811115611e7657fe5b600d60149054906101000a900460ff166005811115611e9157fe5b14611f04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c696420746f6b656e2073746174650000000000000000000000000081525060200191505060405180910390fd5b600e543073ffffffffffffffffffffffffffffffffffffffff16311015611f3457611f2f6003613a85565b611f47565b611f3c613b15565b611f466004613a85565b5b50565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083106120ac576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612140565b6120bf8382613de390919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612383576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6f6e6c792073746174652d636f6e74726f6c6c6572000000000000000000000081525060200191505060405180910390fd5b600180600581111561239157fe5b600d60149054906101000a900460ff1660058111156123ac57fe5b1461241f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c696420746f6b656e2073746174650000000000000000000000000081525060200191505060405180910390fd5b6012544310612496576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f656e64656400000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b601254601054430110612511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f656e64656420772073696c656e6365000000000000000000000000000000000081525060200191505060405180910390fd5b60105443016011819055506125266002613a85565b50565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146125ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6f6e6c792073746174652d636f6e74726f6c6c6572000000000000000000000081525060200191505060405180910390fd5b600060058111156125f957fe5b600d60149054906101000a900460ff16600581111561261457fe5b148061264557506001600581111561262857fe5b600d60149054906101000a900460ff16600581111561264357fe5b145b6126b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f696e76616c69642073746174650000000000000000000000000000000000000081525060200191505060405180910390fd5b83831161272c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f7765694d6178000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806010544301106127a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f686967682073696c656e6365000000000000000000000000000000000000000081525060200191505060405180910390fd5b80431061281a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f7061737420656e64426f636b000000000000000000000000000000000000000081525060200191505060405180910390fd5b83600e8190555082600f81905550816010819055508060128190555061287f600f5461287160646128636032670de0b6b3a76400006302aea5400261128b90919063ffffffff16565b61368690919063ffffffff16565b61368690919063ffffffff16565b60138190555061288f6001613a85565b50505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612958576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6f6e6c792073746174652d636f6e74726f6c6c6572000000000000000000000081525060200191505060405180910390fd5b600280600581111561296657fe5b600d60149054906101000a900460ff16600581111561298157fe5b146129f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c696420746f6b656e2073746174650000000000000000000000000081525060200191505060405180910390fd5b6129fe6005613a85565b50565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612ac4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6f6e6c7920776974686472617720636f6e74726f6c6c6572000000000000000081525060200191505060405180910390fd5b6004806005811115612ad257fe5b600d60149054906101000a900460ff166005811115612aed57fe5b14612b60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c696420746f6b656e2073746174650000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612ba6573d6000803e3d6000fd5b505050565b60115481565b6040518060400160405280600481526020017f435257540000000000000000000000000000000000000000000000000000000081525081565b60056020528060005260406000206000915054906101000a900460ff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612ccd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6f6e6c792073746174652d636f6e74726f6c6c6572000000000000000000000081525060200191505060405180910390fd5b6005806005811115612cdb57fe5b600d60149054906101000a900460ff166005811115612cf657fe5b14612d69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c696420746f6b656e2073746174650000000000000000000000000081525060200191505060405180910390fd5b612d736002613a85565b50565b600060046002816005811115612d8857fe5b600d60149054906101000a900460ff166005811115612da357fe5b1480612dd35750806005811115612db657fe5b600d60149054906101000a900460ff166005811115612dd157fe5b145b612e45576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f77726f6e6720746f6b656e20737461746500000000000000000000000000000081525060200191505060405180910390fd5b612e4f8585613e2d565b9250505092915050565b603281565b600d60149054906101000a900460ff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612f5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f6f6e6c792061737369676e6d656e7420636f6e74726f6c6c657200000000000081525060200191505060405180910390fd5b60016005811115612f6757fe5b600d60149054906101000a900460ff166005811115612f8257fe5b1480612fb3575060026005811115612f9657fe5b600d60149054906101000a900460ff166005811115612fb157fe5b145b613025576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c696420746f6b656e2073746174650000000000000000000000000081525060200191505060405180910390fd5b61302f8282611311565b5050565b600380600581111561304157fe5b600d60149054906101000a900460ff16600581111561305c57fe5b146130cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c696420746f6b656e2073746174650000000000000000000000000081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411613184576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f6e6f7468696e6720746f20726566756e6400000000000000000000000000000081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613253573d6000803e3d6000fd5b505050565b600f5481565b60006132ef82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b890919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60135481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146135aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6f6e6c792077686974656c69737465642077616c6c657473000000000000000081525060200191505060405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a5481604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600e5481565b60036020528060005260406000206000915090505481565b60006136c883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506140b2565b905092915050565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561371d57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156137a657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156137e057600080fd5b613831826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613de390919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138c4826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b890919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061399582600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613de390919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b7f3a779de46631dd65116ae538600f1bc3c338200c6aef638429b5de43301c28f7600d60149054906101000a900460ff168260405180836005811115613ac757fe5b60ff168152602001826005811115613adb57fe5b60ff1681526020019250505060405180910390a180600d60146101000a81548160ff02191690836005811115613b0d57fe5b021790555050565b613b42600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f614178565b613b6f600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a614178565b613b9c600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a614178565b613bc9600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f614178565b613d94600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d86600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d78600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d6a600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546004546114b890919063ffffffff16565b6114b890919063ffffffff16565b6114b890919063ffffffff16565b6114b890919063ffffffff16565b6001819055506001601460006101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a1565b6000613e2583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506142f0565b905092915050565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115613ee3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f746f6f206c6974746c650000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613f1d57600080fd5b613f6e826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613de390919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614001826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b890919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000808311829061415e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614123578082015181840152602081019050614108565b50505050905090810190601f1680156141505780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161416a57fe5b049050809150509392505050565b60006141a260646141948460015461128b90919063ffffffff16565b61368690919063ffffffff16565b90506141f5816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b890919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040518082815260200191505060405180910390a28273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600083831115829061439d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614362578082015181840152602081019050614347565b50505050905090810190601f16801561438f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a7231582015657c000028fe70a9622a7d92e41d55208226f3a0de58bc4f8aa17d85f3f8cd64736f6c634300050c00320000000000000000000000006f136a56dd00f89207cbb9d20d32cc493b2c5c2f000000000000000000000000fb2330a6c58a792b27997481ab7097978adbbdb80000000000000000000000009a1d2f0f3a882e38fbfe4b74d6295576ea866e37000000000000000000000000bf72a1f9edb56188ec69bf790bacae596a5d1e1b0000000000000000000000003c90233869f9819b925896fc5539d1b4380c04eb0000000000000000000000004eb6716f6fa6ed53c7e6d77ad78be0630ee9a397000000000000000000000000eda8af69383cb55db25e8427ccffc43bf9faea870000000000000000000000007f2b19a8c6f61f417ba2ffe8c6f2f9cb3476e2ef

Deployed Bytecode

0x6080604052600436106102675760003560e01c80637b807a5111610144578063c19d93fb116100b6578063d73dd6231161007a578063d73dd62314611087578063d87d2a66146110fa578063dd62ed3e14611125578063e43252d7146111aa578063f4e68486146111fb578063f8b1fb121461122657610267565b8063c19d93fb14610f5a578063c8c2ed5414610f93578063cc577f3814610fea578063d5cef13314611045578063d6fea3061461105c57610267565b806390c79af91161010857806390c79af914610d8157806395d89b4114610dac5780639b19251a14610e3c5780639cbd7da514610ea5578063a9059cbb14610ebc578063b21ed44e14610f2f57610267565b80637b807a5114610c685780637fa8c15814610cbf5780637fe98ae014610cd65780638456cb5914610d2f5780638f97e3a014610d4657610267565b806338dacaab116101dd57806359d3dad9116101a157806359d3dad914610a605780635ed9ebfc14610ab7578063650d22e814610ae25780636618846314610b395780636aa9c82b14610bac57806370a0823114610c0357610267565b806338dacaab146108ff5780633cae09ac1461095657806341f1d4dd146109815780634707d000146109d85780634f24840914610a4957610267565b806318160ddd1161022f57806318160ddd146107b757806323b872dd146107e25780632ab4d05214610875578063313ce567146108a057806332b3c323146108d157806335a063b4146108e857610267565b806304b2bf991461060357806305d2035b1461065a57806306fdde0314610689578063083c632314610719578063095ea7b314610744575b600280600581111561027557fe5b600d60149054906101000a900460ff16600581111561029057fe5b14610303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c696420746f6b656e2073746174650000000000000000000000000081525060200191505060405180910390fd5b60011515600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146103c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6e6f742077686974656c6973746564000000000000000000000000000000000081525060200191505060405180910390fd5b600f543073ffffffffffffffffffffffffffffffffffffffff16311115610458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f77656949434f4d6178696d756d0000000000000000000000000000000000000081525060200191505060405180910390fd5b60125443106104cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f656e64426c6f636b20726561636865640000000000000000000000000000000081525060200191505060405180910390fd5b601154431015610547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f7374617274426c6f636b2066757475726500000000000000000000000000000081525060200191505060405180910390fd5b600061055e6013543461128b90919063ffffffff16565b905061056a3382611311565b6105bc34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b890919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050005b34801561060f57600080fd5b50610618611540565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561066657600080fd5b5061066f611566565b604051808215151515815260200191505060405180910390f35b34801561069557600080fd5b5061069e611579565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106de5780820151818401526020810190506106c3565b50505050905090810190601f16801561070b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561072557600080fd5b5061072e6115b2565b6040518082815260200191505060405180910390f35b34801561075057600080fd5b5061079d6004803603604081101561076757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115b8565b604051808215151515815260200191505060405180910390f35b3480156107c357600080fd5b506107cc6116aa565b6040518082815260200191505060405180910390f35b3480156107ee57600080fd5b5061085b6004803603606081101561080557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116b4565b604051808215151515815260200191505060405180910390f35b34801561088157600080fd5b5061088a611799565b6040518082815260200191505060405180910390f35b3480156108ac57600080fd5b506108b56117ab565b604051808260ff1660ff16815260200191505060405180910390f35b3480156108dd57600080fd5b506108e66117b0565b005b3480156108f457600080fd5b506108fd611909565b005b34801561090b57600080fd5b50610914611a75565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561096257600080fd5b5061096b611a9b565b6040518082815260200191505060405180910390f35b34801561098d57600080fd5b50610996611aa1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109e457600080fd5b50610a47600480360360408110156109fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ac7565b005b348015610a5557600080fd5b50610a5e611da5565b005b348015610a6c57600080fd5b50610a75611f4a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ac357600080fd5b50610acc611f70565b6040518082815260200191505060405180910390f35b348015610aee57600080fd5b50610af7611f76565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b4557600080fd5b50610b9260048036036040811015610b5c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f9c565b604051808215151515815260200191505060405180910390f35b348015610bb857600080fd5b50610bc161222c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c0f57600080fd5b50610c5260048036036020811015610c2657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612252565b6040518082815260200191505060405180910390f35b348015610c7457600080fd5b50610c7d61229a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ccb57600080fd5b50610cd46122c0565b005b348015610ce257600080fd5b50610d2d60048036036080811015610cf957600080fd5b8101908080359060200190929190803590602001909291908035906020019092919080359060200190929190505050612529565b005b348015610d3b57600080fd5b50610d44612895565b005b348015610d5257600080fd5b50610d7f60048036036020811015610d6957600080fd5b8101908080359060200190929190505050612a01565b005b348015610d8d57600080fd5b50610d96612bab565b6040518082815260200191505060405180910390f35b348015610db857600080fd5b50610dc1612bb1565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610e01578082015181840152602081019050610de6565b50505050905090810190601f168015610e2e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610e4857600080fd5b50610e8b60048036036020811015610e5f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612bea565b604051808215151515815260200191505060405180910390f35b348015610eb157600080fd5b50610eba612c0a565b005b348015610ec857600080fd5b50610f1560048036036040811015610edf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612d76565b604051808215151515815260200191505060405180910390f35b348015610f3b57600080fd5b50610f44612e59565b6040518082815260200191505060405180910390f35b348015610f6657600080fd5b50610f6f612e5e565b60405180826005811115610f7f57fe5b60ff16815260200191505060405180910390f35b348015610f9f57600080fd5b50610fa8612e71565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ff657600080fd5b506110436004803603604081101561100d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612e97565b005b34801561105157600080fd5b5061105a613033565b005b34801561106857600080fd5b50611071613258565b6040518082815260200191505060405180910390f35b34801561109357600080fd5b506110e0600480360360408110156110aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061325e565b604051808215151515815260200191505060405180910390f35b34801561110657600080fd5b5061110f61345a565b6040518082815260200191505060405180910390f35b34801561113157600080fd5b506111946004803603604081101561114857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613460565b6040518082815260200191505060405180910390f35b3480156111b657600080fd5b506111f9600480360360208110156111cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134e7565b005b34801561120757600080fd5b50611210613668565b6040518082815260200191505060405180910390f35b34801561123257600080fd5b506112756004803603602081101561124957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061366e565b6040518082815260200191505060405180910390f35b60008083141561129e576000905061130b565b60008284029050828482816112af57fe5b0414611306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806143b16021913960400191505060405180910390fd5b809150505b92915050565b611362816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b890919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113b9816004546114b890919063ffffffff16565b6004819055506113fa6113e960326113db60648561128b90919063ffffffff16565b61368690919063ffffffff16565b6001546114b890919063ffffffff16565b6001819055508173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040518082815260200191505060405180910390a28173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080828401905083811015611536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601460009054906101000a900460ff1681565b6040518060400160405280600981526020017f43525744546f6b656e000000000000000000000000000000000000000000000081525081565b60125481565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600154905090565b6000600460028160058111156116c657fe5b600d60149054906101000a900460ff1660058111156116e157fe5b148061171157508060058111156116f457fe5b600d60149054906101000a900460ff16600581111561170f57fe5b145b611783576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f77726f6e6720746f6b656e20737461746500000000000000000000000000000081525060200191505060405180910390fd5b61178e8686866136d0565b925050509392505050565b670de0b6b3a76400006302aea5400281565b601281565b60028060058111156117be57fe5b600d60149054906101000a900460ff1660058111156117d957fe5b1461184c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c696420746f6b656e2073746174650000000000000000000000000081525060200191505060405180910390fd5b60125443116118c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f6e6f7420656e646564000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600e543073ffffffffffffffffffffffffffffffffffffffff163110156118f3576118ee6003613a85565b611906565b6118fb613b15565b6119056004613a85565b5b50565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6f6e6c792073746174652d636f6e74726f6c6c6572000000000000000000000081525060200191505060405180910390fd5b60058060058111156119da57fe5b600d60149054906101000a900460ff1660058111156119f557fe5b14611a68576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c696420746f6b656e2073746174650000000000000000000000000081525060200191505060405180910390fd5b611a726003613a85565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f6f6e6c792061737369676e6d656e7420636f6e74726f6c6c657200000000000081525060200191505060405180910390fd5b6004806005811115611b9857fe5b600d60149054906101000a900460ff166005811115611bb357fe5b14611c26576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c696420746f6b656e2073746174650000000000000000000000000081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb838573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cc057600080fd5b505afa158015611cd4573d6000803e3d6000fd5b505050506040513d6020811015611cea57600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611d6457600080fd5b505af1158015611d78573d6000803e3d6000fd5b505050506040513d6020811015611d8e57600080fd5b810190808051906020019092919050505050505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e68576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6f6e6c792073746174652d636f6e74726f6c6c6572000000000000000000000081525060200191505060405180910390fd5b6002806005811115611e7657fe5b600d60149054906101000a900460ff166005811115611e9157fe5b14611f04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c696420746f6b656e2073746174650000000000000000000000000081525060200191505060405180910390fd5b600e543073ffffffffffffffffffffffffffffffffffffffff16311015611f3457611f2f6003613a85565b611f47565b611f3c613b15565b611f466004613a85565b5b50565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083106120ac576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612140565b6120bf8382613de390919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612383576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6f6e6c792073746174652d636f6e74726f6c6c6572000000000000000000000081525060200191505060405180910390fd5b600180600581111561239157fe5b600d60149054906101000a900460ff1660058111156123ac57fe5b1461241f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c696420746f6b656e2073746174650000000000000000000000000081525060200191505060405180910390fd5b6012544310612496576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f656e64656400000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b601254601054430110612511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f656e64656420772073696c656e6365000000000000000000000000000000000081525060200191505060405180910390fd5b60105443016011819055506125266002613a85565b50565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146125ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6f6e6c792073746174652d636f6e74726f6c6c6572000000000000000000000081525060200191505060405180910390fd5b600060058111156125f957fe5b600d60149054906101000a900460ff16600581111561261457fe5b148061264557506001600581111561262857fe5b600d60149054906101000a900460ff16600581111561264357fe5b145b6126b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f696e76616c69642073746174650000000000000000000000000000000000000081525060200191505060405180910390fd5b83831161272c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f7765694d6178000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806010544301106127a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f686967682073696c656e6365000000000000000000000000000000000000000081525060200191505060405180910390fd5b80431061281a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f7061737420656e64426f636b000000000000000000000000000000000000000081525060200191505060405180910390fd5b83600e8190555082600f81905550816010819055508060128190555061287f600f5461287160646128636032670de0b6b3a76400006302aea5400261128b90919063ffffffff16565b61368690919063ffffffff16565b61368690919063ffffffff16565b60138190555061288f6001613a85565b50505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612958576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6f6e6c792073746174652d636f6e74726f6c6c6572000000000000000000000081525060200191505060405180910390fd5b600280600581111561296657fe5b600d60149054906101000a900460ff16600581111561298157fe5b146129f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c696420746f6b656e2073746174650000000000000000000000000081525060200191505060405180910390fd5b6129fe6005613a85565b50565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612ac4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6f6e6c7920776974686472617720636f6e74726f6c6c6572000000000000000081525060200191505060405180910390fd5b6004806005811115612ad257fe5b600d60149054906101000a900460ff166005811115612aed57fe5b14612b60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c696420746f6b656e2073746174650000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612ba6573d6000803e3d6000fd5b505050565b60115481565b6040518060400160405280600481526020017f435257540000000000000000000000000000000000000000000000000000000081525081565b60056020528060005260406000206000915054906101000a900460ff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612ccd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6f6e6c792073746174652d636f6e74726f6c6c6572000000000000000000000081525060200191505060405180910390fd5b6005806005811115612cdb57fe5b600d60149054906101000a900460ff166005811115612cf657fe5b14612d69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c696420746f6b656e2073746174650000000000000000000000000081525060200191505060405180910390fd5b612d736002613a85565b50565b600060046002816005811115612d8857fe5b600d60149054906101000a900460ff166005811115612da357fe5b1480612dd35750806005811115612db657fe5b600d60149054906101000a900460ff166005811115612dd157fe5b145b612e45576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f77726f6e6720746f6b656e20737461746500000000000000000000000000000081525060200191505060405180910390fd5b612e4f8585613e2d565b9250505092915050565b603281565b600d60149054906101000a900460ff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612f5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f6f6e6c792061737369676e6d656e7420636f6e74726f6c6c657200000000000081525060200191505060405180910390fd5b60016005811115612f6757fe5b600d60149054906101000a900460ff166005811115612f8257fe5b1480612fb3575060026005811115612f9657fe5b600d60149054906101000a900460ff166005811115612fb157fe5b145b613025576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c696420746f6b656e2073746174650000000000000000000000000081525060200191505060405180910390fd5b61302f8282611311565b5050565b600380600581111561304157fe5b600d60149054906101000a900460ff16600581111561305c57fe5b146130cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c696420746f6b656e2073746174650000000000000000000000000081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411613184576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f6e6f7468696e6720746f20726566756e6400000000000000000000000000000081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613253573d6000803e3d6000fd5b505050565b600f5481565b60006132ef82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b890919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60135481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146135aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6f6e6c792077686974656c69737465642077616c6c657473000000000000000081525060200191505060405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a5481604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600e5481565b60036020528060005260406000206000915090505481565b60006136c883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506140b2565b905092915050565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561371d57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156137a657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156137e057600080fd5b613831826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613de390919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138c4826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b890919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061399582600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613de390919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b7f3a779de46631dd65116ae538600f1bc3c338200c6aef638429b5de43301c28f7600d60149054906101000a900460ff168260405180836005811115613ac757fe5b60ff168152602001826005811115613adb57fe5b60ff1681526020019250505060405180910390a180600d60146101000a81548160ff02191690836005811115613b0d57fe5b021790555050565b613b42600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f614178565b613b6f600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a614178565b613b9c600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a614178565b613bc9600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f614178565b613d94600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d86600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d78600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d6a600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546004546114b890919063ffffffff16565b6114b890919063ffffffff16565b6114b890919063ffffffff16565b6114b890919063ffffffff16565b6001819055506001601460006101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a1565b6000613e2583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506142f0565b905092915050565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115613ee3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f746f6f206c6974746c650000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613f1d57600080fd5b613f6e826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613de390919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614001826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b890919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000808311829061415e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614123578082015181840152602081019050614108565b50505050905090810190601f1680156141505780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161416a57fe5b049050809150509392505050565b60006141a260646141948460015461128b90919063ffffffff16565b61368690919063ffffffff16565b90506141f5816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b890919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040518082815260200191505060405180910390a28273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600083831115829061439d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614362578082015181840152602081019050614347565b50505050905090810190601f16801561438f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a7231582015657c000028fe70a9622a7d92e41d55208226f3a0de58bc4f8aa17d85f3f8cd64736f6c634300050c0032

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

0000000000000000000000006f136a56dd00f89207cbb9d20d32cc493b2c5c2f000000000000000000000000fb2330a6c58a792b27997481ab7097978adbbdb80000000000000000000000009a1d2f0f3a882e38fbfe4b74d6295576ea866e37000000000000000000000000bf72a1f9edb56188ec69bf790bacae596a5d1e1b0000000000000000000000003c90233869f9819b925896fc5539d1b4380c04eb0000000000000000000000004eb6716f6fa6ed53c7e6d77ad78be0630ee9a397000000000000000000000000eda8af69383cb55db25e8427ccffc43bf9faea870000000000000000000000007f2b19a8c6f61f417ba2ffe8c6f2f9cb3476e2ef

-----Decoded View---------------
Arg [0] : _stateControl (address): 0x6f136A56dD00F89207cBB9D20d32CC493b2C5c2f
Arg [1] : _whitelistControl (address): 0xFB2330A6C58a792b27997481AB7097978ADbbDB8
Arg [2] : _withdrawControl (address): 0x9A1d2f0F3a882E38fbfE4B74d6295576EA866e37
Arg [3] : _tokenAssignmentControl (address): 0xBf72a1F9EDb56188ec69bf790bACAe596A5D1E1b
Arg [4] : _notLocked (address): 0x3c90233869f9819b925896FC5539D1B4380C04Eb
Arg [5] : _lockedTeam (address): 0x4EB6716F6fa6ed53C7E6d77AD78BE0630Ee9A397
Arg [6] : _lockedDev (address): 0xedA8aF69383cB55DB25E8427CCffc43Bf9faEA87
Arg [7] : _lockedCountry (address): 0x7F2b19a8C6F61F417Ba2ffE8c6f2f9cb3476e2eF

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000006f136a56dd00f89207cbb9d20d32cc493b2c5c2f
Arg [1] : 000000000000000000000000fb2330a6c58a792b27997481ab7097978adbbdb8
Arg [2] : 0000000000000000000000009a1d2f0f3a882e38fbfe4b74d6295576ea866e37
Arg [3] : 000000000000000000000000bf72a1f9edb56188ec69bf790bacae596a5d1e1b
Arg [4] : 0000000000000000000000003c90233869f9819b925896fc5539d1b4380c04eb
Arg [5] : 0000000000000000000000004eb6716f6fa6ed53c7e6d77ad78be0630ee9a397
Arg [6] : 000000000000000000000000eda8af69383cb55db25e8427ccffc43bf9faea87
Arg [7] : 0000000000000000000000007f2b19a8c6f61f417ba2ffe8c6f2f9cb3476e2ef


Deployed Bytecode Sourcemap

12950:11186:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16852:10;16285:14;16276:23;;;;;;;;:5;;;;;;;;;;;:23;;;;;;;;;16268:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16913:4;16888:29;;:9;:21;16898:10;16888:21;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;16880:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16981:13;;16964:4;16956:21;;;:38;;16948:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17122:8;;17107:12;:23;17099:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17186:24;;17170:12;:40;;17162:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17245:19;17267:28;17281:13;;17267:9;:13;;:28;;;;:::i;:::-;17245:50;;17308:42;17326:10;17338:11;17308:17;:42::i;:::-;17394:45;17429:9;17394:18;:30;17413:10;17394:30;;;;;;;;;;;;;;;;:34;;:45;;;;:::i;:::-;17361:18;:30;17380:10;17361:30;;;;;;;;;;;;;;;:78;;;;16334:1;16806:641;12950:11186;13761:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13761:27:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14487:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14487:35:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13427:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13427:41:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;13427:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14109:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14109:23:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10422:192;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10422:192:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10422:192:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6765:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6765:85:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23718:229;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23718:229:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23718:229:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14277:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14277:67:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13524:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13524:35:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20634:349;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20634:349:0;;;:::i;:::-;;21951:139;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21951:139:0;;;:::i;:::-;;13618:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13618:27:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14024:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14024:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13797:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13797:31:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;23186:233;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23186:233:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23186:233:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20317:309;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20317:309:0;;;:::i;:::-;;13724:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13724:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13393:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13393:25:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13685:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13685:30:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12341:447;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12341:447:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12341:447:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13837:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13837:30:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;23955:134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23955:134:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23955:134:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13652:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13652:26:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19700:336;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19700:336:0;;;:::i;:::-;;18786:906;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18786:906:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;18786:906:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21769:131;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21769:131:0;;;:::i;:::-;;22894:175;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22894:175:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22894:175:0;;;;;;;;;;;;;;;;;:::i;:::-;;14061:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14061:39:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13477:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13477:38:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;13477:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13568:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13568:41:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13568:41:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;22114:135;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22114:135:0;;;:::i;:::-;;23511:199;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23511:199:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23511:199:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14353:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14353:43:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13922:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13922:19:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13876:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13876:37:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20044:263;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20044:263:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20044:263:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22336:450;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22336:450:0;;;:::i;:::-;;13987:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13987:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11566:307;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11566:307:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11566:307:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14141:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14141:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10941:162;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10941:162:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10941:162:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21512:212;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21512:212:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21512:212:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;13950:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13950:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13331:53;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13331:53:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13331:53:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2951:471;3009:7;3259:1;3254;:6;3250:47;;;3284:1;3277:8;;;;3250:47;3309:9;3325:1;3321;:5;3309:17;;3354:1;3349;3345;:5;;;;;;:10;3337:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3413:1;3406:8;;;2951:471;;;;;:::o;17455:384::-;17573:33;17599:6;17573:8;:21;17582:11;17573:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;17549:8;:21;17558:11;17549:21;;;;;;;;;;;;;;;:57;;;;17630:22;17645:6;17630:10;;:14;;:22;;;;:::i;:::-;17617:10;:35;;;;17678:53;17695:35;14394:2;17695:15;17706:3;17695:6;:10;;:15;;;;:::i;:::-;:19;;:35;;;;:::i;:::-;17678:12;;:16;;:53;;;;:::i;:::-;17663:12;:68;;;;17752:11;17747:25;;;17765:6;17747:25;;;;;;;;;;;;;;;;;;17811:11;17788:43;;17805:3;17788:43;;;17824:6;17788:43;;;;;;;;;;;;;;;;;;17455:384;;:::o;1579:181::-;1637:7;1657:9;1673:1;1669;:5;1657:17;;1698:1;1693;:6;;1685:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1751:1;1744:8;;;1579:181;;;;:::o;13761:27::-;;;;;;;;;;;;;:::o;14487:35::-;;;;;;;;;;;;;:::o;13427:41::-;;;;;;;;;;;;;;;;;;;:::o;14109:23::-;;;;:::o;10422:192::-;10489:4;10534:6;10502:7;:19;10510:10;10502:19;;;;;;;;;;;;;;;:29;10522:8;10502:29;;;;;;;;;;;;;;;:38;;;;10573:8;10552:38;;10561:10;10552:38;;;10583:6;10552:38;;;;;;;;;;;;;;;;;;10604:4;10597:11;;10422:192;;;;:::o;6765:85::-;6809:7;6832:12;;6825:19;;6765:85;:::o;23718:229::-;23869:12;23823:18;23843:10;16458:15;16449:24;;;;;;;;:5;;;;;;;;;;;:24;;;;;;;;;:52;;;;16486:15;16477:24;;;;;;;;:5;;;;;;;;;;;:24;;;;;;;;;16449:52;16441:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23901:38;23920:5;23927:3;23932:6;23901:18;:38::i;:::-;23894:45;;23718:229;;;;;;;:::o;14277:67::-;14240:4;14318:8;:26;14277:67;:::o;13524:35::-;13557:2;13524:35;:::o;20634:349::-;20688:10;16285:14;16276:23;;;;;;;;:5;;;;;;;;;;;:23;;;;;;;;;16268:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20739:8;;20724:12;:23;20716:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20800:13;;20784:4;20776:21;;;:37;20772:204;;;20830:31;20842:18;20830:11;:31::i;:::-;20772:204;;;20903:15;:13;:15::i;:::-;20933:31;20945:18;20933:11;:31::i;:::-;20772:204;20634:349;:::o;21951:139::-;15865:12;;;;;;;;;;;15851:26;;:10;:26;;;15843:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22020:13;16285:14;16276:23;;;;;;;;:5;;;;;;;;;;;:23;;;;;;;;;16268:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22051:31;22063:18;22051:11;:31::i;:::-;15914:1;21951:139::o;13618:27::-;;;;;;;;;;;;;:::o;14024:28::-;;;;:::o;13797:31::-;;;;;;;;;;;;;:::o;23186:233::-;16002:22;;;;;;;;;;;15988:36;;:10;:36;;;15980:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23308:18;16285:14;16276:23;;;;;;;;:5;;;;;;;;;;;:23;;;;;;;;;16268:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23344:13;:22;;;23367:3;23372:13;:23;;;23404:4;23372:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23372:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23372:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23372:38:0;;;;;;;;;;;;;;;;23344:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23344:67:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23344:67:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23344:67:0;;;;;;;;;;;;;;;;;16066:1;23186:233;;:::o;20317:309::-;15865:12;;;;;;;;;;;15851:26;;:10;:26;;;15843:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20387:10;16285:14;16276:23;;;;;;;;:5;;;;;;;;;;;:23;;;;;;;;;16268:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20443:13;;20427:4;20419:21;;;:37;20415:204;;;20473:31;20485:18;20473:11;:31::i;:::-;20415:204;;;20546:15;:13;:15::i;:::-;20576:31;20588:18;20576:11;:31::i;:::-;20415:204;15914:1;20317:309::o;13724:28::-;;;;;;;;;;;;;:::o;13393:25::-;;;;:::o;13685:30::-;;;;;;;;;;;;;:::o;12341:447::-;12452:4;12468:16;12487:7;:19;12495:10;12487:19;;;;;;;;;;;;;;;:29;12507:8;12487:29;;;;;;;;;;;;;;;;12468:48;;12547:8;12527:16;:28;12523:169;;12598:1;12566:7;:19;12574:10;12566:19;;;;;;;;;;;;;;;:29;12586:8;12566:29;;;;;;;;;;;;;;;:33;;;;12523:169;;;12654:30;12667:16;12654:8;:12;;:30;;;;:::i;:::-;12622:7;:19;12630:10;12622:19;;;;;;;;;;;;;;;:29;12642:8;12622:29;;;;;;;;;;;;;;;:62;;;;12523:169;12724:8;12703:61;;12712:10;12703:61;;;12734:7;:19;12742:10;12734:19;;;;;;;;;;;;;;;:29;12754:8;12734:29;;;;;;;;;;;;;;;;12703:61;;;;;;;;;;;;;;;;;;12778:4;12771:11;;;12341:447;;;;:::o;13837:30::-;;;;;;;;;;;;;:::o;23955:134::-;24028:15;24063:8;:18;24072:8;24063:18;;;;;;;;;;;;;;;;24056:25;;23955:134;;;:::o;13652:26::-;;;;;;;;;;;;;:::o;19700:336::-;15865:12;;;;;;;;;;;15851:26;;:10;:26;;;15843:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19772:19;16285:14;16276:23;;;;;;;;:5;;;;;;;;;;;:23;;;;;;;;;16268:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19832:8;;19817:12;:23;19809:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19900:8;;19884:13;;19869:12;:28;:39;19861:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19981:13;;19966:12;:28;19939:24;:55;;;;20005:23;20017:10;20005:11;:23::i;:::-;15914:1;19700:336::o;18786:906::-;15865:12;;;;;;;;;;;15851:26;;:10;:26;;;15843:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18985:14;18976:23;;;;;;;;:5;;;;;;;;;;;:23;;;;;;;;;:55;;;;19012:19;19003:28;;;;;;;;:5;;;;;;;;;;;:28;;;;;;;;;18976:55;18968:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19088:17;19068;:37;19060:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19166:12;19150:13;;19135:12;:28;:43;19127:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19229:12;19214;:27;19206:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19285:17;19269:13;:33;;;;19329:17;19313:13;:33;;;;19373:14;19357:13;:30;;;;19409:12;19398:8;:23;;;;19545:62;19593:13;;19545:43;19584:3;19545:34;14394:2;14240:4;14318:8;:26;19545:18;;:34;;;;:::i;:::-;:38;;:43;;;;:::i;:::-;:47;;:62;;;;:::i;:::-;19529:13;:78;;;;19652:32;19664:19;19652:11;:32::i;:::-;18786:906;;;;:::o;21769:131::-;15865:12;;;;;;;;;;;15851:26;;:10;:26;;;15843:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21838:10;16285:14;16276:23;;;;;;;;:5;;;;;;;;;;;:23;;;;;;;;;16268:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21866:26;21878:13;21866:11;:26::i;:::-;15914:1;21769:131::o;22894:175::-;16140:15;;;;;;;;;;;16126:29;;:10;:29;;;16118:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22997:18;16285:14;16276:23;;;;;;;;:5;;;;;;;;;;;:23;;;;;;;;;16268:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23033:10;:19;;:28;23053:7;23033:28;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23033:28:0;16195:1;22894:175;:::o;14061:39::-;;;;:::o;13477:38::-;;;;;;;;;;;;;;;;;;;:::o;13568:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;22114:135::-;15865:12;;;;;;;;;;;15851:26;;:10;:26;;;15843:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22187:13;16285:14;16276:23;;;;;;;;:5;;;;;;;;;;;:23;;;;;;;;;16268:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22218:23;22230:10;22218:11;:23::i;:::-;15914:1;22114:135::o;23511:199::-;23643:12;23597:18;23617:10;16458:15;16449:24;;;;;;;;:5;;;;;;;;;;;:24;;;;;;;;;:52;;;;16486:15;16477:24;;;;;;;;:5;;;;;;;;;;;:24;;;;;;;;;16449:52;16441:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23675:27;23690:3;23695:6;23675:14;:27::i;:::-;23668:34;;23511:199;;;;;;:::o;14353:43::-;14394:2;14353:43;:::o;13922:19::-;;;;;;;;;;;;;:::o;13876:37::-;;;;;;;;;;;;;:::o;20044:263::-;16002:22;;;;;;;;;;;15988:36;;:10;:36;;;15980:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20184:19;20175:28;;;;;;;;:5;;;;;;;;;;;:28;;;;;;;;;:51;;;;20216:10;20207:19;;;;;;;;:5;;;;;;;;;;;:19;;;;;;;;;20175:51;20167:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20261:38;20279:11;20292:6;20261:17;:38::i;:::-;20044:263;;:::o;22336:450::-;22391:18;16285:14;16276:23;;;;;;;;:5;;;;;;;;;;;:23;;;;;;;;;16268:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22468:1;22435:18;:30;22454:10;22435:30;;;;;;;;;;;;;;;;:34;22427:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22597:14;22614:18;:30;22633:10;22614:30;;;;;;;;;;;;;;;;22597:47;;22739:1;22706:18;:30;22725:10;22706:30;;;;;;;;;;;;;;;:34;;;;22751:10;:19;;:27;22771:6;22751:27;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22751:27:0;16334:1;22336:450;:::o;13987:28::-;;;;:::o;11566:307::-;11672:4;11729:46;11763:11;11729:7;:19;11737:10;11729:19;;;;;;;;;;;;;;;:29;11749:8;11729:29;;;;;;;;;;;;;;;;:33;;:46;;;;:::i;:::-;11688:7;:19;11696:10;11688:19;;;;;;;;;;;;;;;:29;11708:8;11688:29;;;;;;;;;;;;;;;:88;;;;11809:8;11788:61;;11797:10;11788:61;;;11819:7;:19;11827:10;11819:19;;;;;;;;;;;;;;;:29;11839:8;11819:29;;;;;;;;;;;;;;;;11788:61;;;;;;;;;;;;;;;;;;11863:4;11856:11;;11566:307;;;;:::o;14141:28::-;;;;:::o;10941:162::-;11046:7;11072;:15;11080:6;11072:15;;;;;;;;;;;;;;;:25;11088:8;11072:25;;;;;;;;;;;;;;;;11065:32;;10941:162;;;;:::o;21512:212::-;15731:16;;;;;;;;;;;15717:30;;:10;:30;;;15709:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21671:4;21645:9;:23;21655:12;21645:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;21691:25;21703:12;21691:25;;;;;;;;;;;;;;;;;;;;;;21512:212;:::o;13950:28::-;;;;:::o;13331:53::-;;;;;;;;;;;;;;;;;:::o;3890:132::-;3948:7;3975:39;3979:1;3982;3975:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3968:46;;3890:132;;;;:::o;9306:487::-;9418:4;9452:8;:15;9461:5;9452:15;;;;;;;;;;;;;;;;9442:6;:25;;9434:34;;;;;;9493:7;:14;9501:5;9493:14;;;;;;;;;;;;;;;:26;9508:10;9493:26;;;;;;;;;;;;;;;;9483:6;:36;;9475:45;;;;;;9550:1;9535:17;;:3;:17;;;;9527:26;;;;;;9580:27;9600:6;9580:8;:15;9589:5;9580:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9562:8;:15;9571:5;9562:15;;;;;;;;;;;;;;;:45;;;;9630:25;9648:6;9630:8;:13;9639:3;9630:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;9614:8;:13;9623:3;9614:13;;;;;;;;;;;;;;;:41;;;;9691:38;9722:6;9691:7;:14;9699:5;9691:14;;;;;;;;;;;;;;;:26;9706:10;9691:26;;;;;;;;;;;;;;;;:30;;:38;;;;:::i;:::-;9662:7;:14;9670:5;9662:14;;;;;;;;;;;;;;;:26;9677:10;9662:26;;;;;;;;;;;;;;;:67;;;;9757:3;9741:28;;9750:5;9741:28;;;9762:6;9741:28;;;;;;;;;;;;;;;;;;9783:4;9776:11;;9306:487;;;;;:::o;18193:143::-;18267:33;18283:5;;;;;;;;;;;18290:9;18267:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18319:9;18311:5;;:17;;;;;;;;;;;;;;;;;;;;;;;;18193:143;:::o;20991:513::-;21046:39;21068:12;;;;;;;;;;;21082:2;21046:21;:39::i;:::-;21096:38;21118:11;;;;;;;;;;;21131:2;21096:21;:38::i;:::-;21145:42;21167:15;;;;;;;;;;;21184:2;21145:21;:42::i;:::-;21198:40;21220:13;;;;;;;;;;;21235:2;21198:21;:40::i;:::-;21266:165;21407:8;:23;21416:13;;;;;;;;;;;21407:23;;;;;;;;;;;;;;;;21266:126;21366:8;:25;21375:15;;;;;;;;;;;21366:25;;;;;;;;;;;;;;;;21266:85;21329:8;:21;21338:11;;;;;;;;;;;21329:21;;;;;;;;;;;;;;;;21266:48;21291:8;:22;21300:12;;;;;;;;;;;21291:22;;;;;;;;;;;;;;;;21266:10;;:24;;:48;;;;:::i;:::-;:62;;:85;;;;:::i;:::-;:99;;:126;;;;:::i;:::-;:140;;:165;;;;:::i;:::-;21251:12;:180;;;;21462:4;21444:15;;:22;;;;;;;;;;;;;;;;;;21482:14;;;;;;;;;;20991:513::o;2035:136::-;2093:7;2120:43;2124:1;2127;2120:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2113:50;;2035:136;;;;:::o;7011:343::-;7074:4;7105:8;:20;7114:10;7105:20;;;;;;;;;;;;;;;;7095:6;:30;;7087:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7170:1;7155:17;;:3;:17;;;;7147:26;;;;;;7205:32;7230:6;7205:8;:20;7214:10;7205:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7182:8;:20;7191:10;7182:20;;;;;;;;;;;;;;;:55;;;;7260:25;7278:6;7260:8;:13;7269:3;7260:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;7244:8;:13;7253:3;7244:13;;;;;;;;;;;;;;;:41;;;;7318:3;7297:33;;7306:10;7297:33;;;7323:6;7297:33;;;;;;;;;;;;;;;;;;7344:4;7337:11;;7011:343;;;;:::o;4552:345::-;4638:7;4737:1;4733;:5;4740:12;4725:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4725:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4764:9;4780:1;4776;:5;;;;;;4764:17;;4888:1;4881:8;;;4552:345;;;;;:::o;17847:338::-;17952:14;17969:40;18005:3;17969:31;17986:13;17969:12;;:16;;:31;;;;:::i;:::-;:35;;:40;;;;:::i;:::-;17952:57;;18044:33;18070:6;18044:8;:21;18053:11;18044:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;18020:8;:21;18029:11;18020:21;;;;;;;;;;;;;;;:57;;;;18098:11;18093:25;;;18111:6;18093:25;;;;;;;;;;;;;;;;;;18157:11;18134:43;;18151:3;18134:43;;;18170:6;18134:43;;;;;;;;;;;;;;;;;;17847:338;;;:::o;2508:192::-;2594:7;2627:1;2622;:6;;2630:12;2614:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2614:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2654:9;2670:1;2666;:5;2654:17;;2691:1;2684:8;;;2508:192;;;;;:::o

Swarm Source

bzzr://15657c000028fe70a9622a7d92e41d55208226f3a0de58bc4f8aa17d85f3f8cd

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

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