ETH Price: $3,132.55 (+1.92%)

Token

ISTARDUST (ISDT)
 

Overview

Max Total Supply

9,974,867,434 ISDT

Holders

476 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
60 ISDT

Value
$0.00
0x1A932ADE7794b9f95A7032Abf23408767e644704
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

ISTARDUST is an influencer platform that enables people to become influencers and create fair profit distribution through blockchain technology.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Isdt

Compiler Version
v0.5.10+commit.5a6ea5b1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-01-20
*/

/**
 *Submitted for verification at Etherscan.io on 2019-01-31
*/
pragma solidity >0.4.99 <0.6.0;

contract Context {
  function _msgSender() internal view returns (address) {
        return msg.sender;
    }
}

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);
}
/**
 * @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
    );
}

library SafeERC20 {
    function safeTransfer(
        ERC20Basic _token,
        address _to,
        uint256 _value
    ) internal
    {
        require(_token.transfer(_to, _value));
    }

    function safeTransferFrom(
        ERC20 _token,
        address _from,
        address _to,
        uint256 _value
    ) internal
    {
        require(_token.transferFrom(_from, _to, _value));
    }

    function safeApprove(
        ERC20 _token,
        address _spender,
        uint256 _value
    ) internal
    {
        require(_token.approve(_spender, _value));
    }
}

library SafeMath {
	/**
    * @dev Multiplies two numbers, throws on overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
		// Gas optimization: this is cheaper than asserting 'a' not being zero, but the
		// benefit is lost if 'b' is also tested.
		// See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
        if(a == 0) {
            return 0;
		}
        c = a * b;
        assert(c / a == b);
        return c;
    }

	/**
	* @dev Integer division of two numbers, truncating the quotient.
	*/
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
		// assert(b > 0); // Solidity automatically throws when dividing by 0
		// uint256 c = a / b;
		// assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return a / b;
    }

	/**
	* @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
	*/
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }
	/**
    * @dev Adds two numbers, throws on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
        c = a + b;
        assert(c >= a);
        return c;
    }
}



/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 */
contract BasicToken is ERC20Basic, Context {
    using SafeMath for uint256;
    
    mapping(address => uint256) balances;
    
    uint256 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(_to != address(0),"[transfer]is not valid address");
        require(_value <= balances[_msgSender()], "[transfer]value is too much");
        balances[_msgSender()] = balances[_msgSender()].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];
    }
}


/**
 * @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(_to != address(0));
        require(_value <= balances[_from]);
        require(_value <= allowed[_from][_msgSender()]);
        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);
        allowed[_from][_msgSender()] = allowed[_from][_msgSender()].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[_msgSender()][_spender] = _value;
        
        emit Approval(_msgSender(), _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[_msgSender()][_spender] = (
        allowed[_msgSender()][_spender].add(_addedValue));
        
        emit Approval(_msgSender(), _spender, allowed[_msgSender()][_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[_msgSender()][_spender];
        if (_subtractedValue > oldValue) {
            allowed[_msgSender()][_spender] = 0;
		} else {
            allowed[_msgSender()][_spender] = oldValue.sub(_subtractedValue);
		}
        
        emit Approval(_msgSender(), _spender, allowed[_msgSender()][_spender]);
        
        return true;
    }
}

contract MultiOwnable {
    uint8 constant MAX_BURN = 3;
    uint8 constant MAX_OWNER = 15;
    uint8 constant MAX_JUDGE = 3;
    address payable public hiddenOwner;
    address payable public superOwner;
    address payable public reclaimer;
    address payable public tokenManager;
    address payable public withdrawalWallet;
    address payable public bank;
    address[MAX_JUDGE] public chkJudgeList;
    address[MAX_BURN] public chkBurnerList;
    address[MAX_OWNER] public chkOwnerList;

    mapping(address => bool) public judges;
    mapping(address => bool) public depositWallet;
    mapping(address => bool) public burners;
    mapping (address => bool) public owners;

    event AddedBurner(address indexed newBurner);
    event AddedOwner(address indexed newOwner);
    event DeletedOwner(address indexed toDeleteOwner);
    event DeletedBurner(address indexed toDeleteBurner);
    event ChangedReclaimer(address indexed newReclaimer);
    event ChangedBank(address indexed newBank);
    event ChangedSuperOwner(address indexed newSuperOwner);
    event ChangedHiddenOwner(address indexed newHiddenOwner);
    event ChangedTokenManager(address indexed newTokenManager);
    event ChangedWithdrawalWallet(address indexed newWithdrawalWallet);
    event SetDepositWallet(address indexed _wallet);
    event DelDepositWallet(address indexed _wallet);
    event AddedJudge(address indexed _newJudge, uint8 _number);
    event DeletedJudge(address indexed _newJudge, uint8 _number);

    constructor() public {
        hiddenOwner = msg.sender;
        superOwner = msg.sender;
        reclaimer = msg.sender;
        owners[msg.sender] = true;
        chkOwnerList[0] = msg.sender;
        withdrawalWallet = msg.sender;
    }

    modifier onlySuperOwner() {
        require(superOwner == msg.sender, "[mdf]is not SuperOwner");
        _;
    }

    modifier onlyJudge(address _from) {
        require(judges[_from] == true, "[mdf]is not Judge");
        _;
    }

    modifier onlyBank() {
        require(bank == msg.sender);
        _;
    }
    modifier onlyNotBank(address _from) {
        require(bank != _from);
        _;
    }

    modifier onlyReclaimer() {
        require(reclaimer == msg.sender, "[mdf]is not Reclaimer");
        _;
    }

    modifier onlyHiddenOwner() {
        require(hiddenOwner == msg.sender, "[mdf]is not HiddenOwner");
        _;
    }

    modifier onlyOwner() {
        require(owners[msg.sender], "[mdf]is not Owner");
        _;
    }

    modifier onlyBurner(){
        require(burners[msg.sender], "[mdf]is not Burner");
        _;
    }

    modifier onlyDepositWallet(address _who) {
      require(depositWallet[_who] == true, "[mdf]is not DepositWallet");
      _;
    }

    modifier onlyNotDepositWallet(address _who) {
      require(depositWallet[_who] == false, "[mdf]is DepositWallet");
      _;
    }

    modifier onlyTokenManager() {
      require(msg.sender == tokenManager, "[mdf]is not tokenManager");
      _;
    }

    modifier onlyNotwWallet() {
      require(msg.sender != withdrawalWallet, "[mdf]is withdrawalWallet");
      _;
    }

    function transferWithdrawalWallet(address payable _wallet) public onlySuperOwner returns (bool) {
        
        require(withdrawalWallet != _wallet);
        
        withdrawalWallet = _wallet;
        
        emit ChangedWithdrawalWallet(_wallet);
        
        return true;
        
    }

    function transferTokenManagerRole(address payable _newTokenManager) public onlySuperOwner returns (bool) {
        require(tokenManager != _newTokenManager);

        tokenManager = _newTokenManager;

        emit ChangedTokenManager(_newTokenManager);

        return true;
    }

    function transferBankOwnership(address payable _newBank) public onlySuperOwner returns (bool) {
        
        require(bank != _newBank);
        
        bank = _newBank;
        
        emit ChangedBank(_newBank);
        
        return true;
        
    }

    function addJudge(address _newJudge, uint8 _num) public onlySuperOwner returns (bool) {
        require(_num < MAX_JUDGE);
        require(_newJudge != address(0));
        require(chkJudgeList[_num] == address(0));
        require(judges[_newJudge] == false);

        judges[_newJudge] = true;
        chkJudgeList[_num] = _newJudge;
        
        emit AddedJudge(_newJudge, _num);
        
        return true;
    }

    function deleteJudge(address _toDeleteJudge, uint8 _num) public
    onlySuperOwner returns (bool) {
        require(_num < MAX_JUDGE);
        require(_toDeleteJudge != address(0));
        require(chkJudgeList[_num] == _toDeleteJudge);
        
        judges[_toDeleteJudge] = false;

        chkJudgeList[_num] = address(0);
        
        emit DeletedJudge(_toDeleteJudge, _num);
        
        return true;
    }

    function setDepositWallet(address _depositWallet) public
    onlyTokenManager returns (bool) {
        
        require(depositWallet[_depositWallet] == false);
        
        depositWallet[_depositWallet] = true;
        
        emit SetDepositWallet(_depositWallet);
        
        return true;
    }

    function delDepositWallet(address _depositWallet) public
    onlyTokenManager returns (bool) {
        
        require(depositWallet[_depositWallet] == true);
        
        depositWallet[_depositWallet] = false;
        
        emit DelDepositWallet(_depositWallet);
        
        return true;
    }

    function changeSuperOwnership(address payable newSuperOwner) public onlyHiddenOwner returns(bool) {
        require(newSuperOwner != address(0));
        
        superOwner = newSuperOwner;
        
        emit ChangedSuperOwner(superOwner);
        
        return true;
    }
    
    function changeHiddenOwnership(address payable newHiddenOwner) public onlyHiddenOwner returns(bool) {
        require(newHiddenOwner != address(0));
        
        hiddenOwner = newHiddenOwner;
        
        emit ChangedHiddenOwner(hiddenOwner);
        
        return true;
    }

    function changeReclaimer(address payable newReclaimer) public onlySuperOwner returns(bool) {
        require(newReclaimer != address(0));
        reclaimer = newReclaimer;
        
        emit ChangedReclaimer(reclaimer);
        
        return true;
    }

    function addBurner(address burner, uint8 num) public onlySuperOwner returns (bool) {
        require(num < MAX_BURN);
        require(burner != address(0));
        require(chkBurnerList[num] == address(0));
        require(burners[burner] == false);

        burners[burner] = true;
        chkBurnerList[num] = burner;
        
        emit AddedBurner(burner);
        
        return true;
    }

    function deleteBurner(address burner, uint8 num) public onlySuperOwner returns (bool) {
        require(num < MAX_BURN);
        require(burner != address(0));
        require(chkBurnerList[num] == burner);
        
        burners[burner] = false;

        chkBurnerList[num] = address(0);
        
        emit DeletedBurner(burner);
        
        return true;
    }

    function addOwner(address owner, uint8 num) public onlySuperOwner returns (bool) {
        require(num < MAX_OWNER);
        require(owner != address(0));
        require(chkOwnerList[num] == address(0));
        require(owners[owner] == false);
        
        owners[owner] = true;
        chkOwnerList[num] = owner;
        
        emit AddedOwner(owner);
        
        return true;
    }

    function deleteOwner(address owner, uint8 num) public onlySuperOwner returns (bool) {
        require(num < MAX_OWNER);
        require(owner != address(0));
        require(chkOwnerList[num] == owner);

        owners[owner] = false;

        chkOwnerList[num] = address(0);
        
        emit DeletedOwner(owner);
        
        return true;
    }
}

/**
 * @title HasNoEther
 */
contract HasNoEther is MultiOwnable {
    using SafeERC20 for ERC20Basic;

    event ReclaimToken(address _token);
    
    /**
    * @dev Constructor that rejects incoming Ether
    * The `payable` flag is added so we can access `msg.value` without compiler warning. If we
    * leave out payable, then Solidity will allow inheriting contracts to implement a payable
    * constructor. By doing it this way we prevent a payable constructor from working. Alternatively
    * we could use assembly to access msg.value.
    */
    constructor() public payable {
        require(msg.value == 0);
    }
    /**
    * @dev Disallows direct send by settings a default function without the `payable` flag.
    */
    function() external {

    }
    
    function reclaimToken(ERC20Basic _token) external onlyReclaimer returns(bool){
        
        uint256 balance = _token.balanceOf(address(this));

        _token.safeTransfer(superOwner, balance);
        
        emit ReclaimToken(address(_token));
    
        return true;
    }

}

contract Blacklist is MultiOwnable {

    mapping(address => bool) blacklisted;

    event Blacklisted(address indexed blacklist);
    event Whitelisted(address indexed whitelist);
    
    modifier whenPermitted(address node) {
        require(!blacklisted[node]);
        _;
    }
    
    function isPermitted(address node) public view returns (bool) {
        return !blacklisted[node];
    }

    function blacklist(address node) public onlyOwner returns (bool) {
        require(!blacklisted[node]);

        blacklisted[node] = true;
        emit Blacklisted(node);

        return blacklisted[node];
    }
   
    function unblacklist(address node) public onlySuperOwner returns (bool) {
        require(blacklisted[node]);

        blacklisted[node] = false;
        emit Whitelisted(node);

        return blacklisted[node];
    }
}

contract Burnlist is Blacklist {
    mapping(address => bool) public isburnlist;

    event Burnlisted(address indexed burnlist, bool signal);

    modifier isBurnlisted(address who) {
        require(isburnlist[who]);
        _;
    }

    function addBurnlist(address node) public onlyOwner returns (bool) {
        require(!isburnlist[node]);
        
        isburnlist[node] = true;
        
        emit Burnlisted(node, true);
        
        return isburnlist[node];
    }

    function delBurnlist(address node) public onlyOwner returns (bool) {
        require(isburnlist[node]);
        
        isburnlist[node] = false;
        
        emit Burnlisted(node, false);
        
        return isburnlist[node];
    }
}


contract PausableToken is StandardToken, HasNoEther, Burnlist {
  
    bool public paused = false;
  
    event Paused(address addr);
    event Unpaused(address addr);

    constructor() public {

    }
    
    modifier whenNotPaused() {
        require(!paused || owners[_msgSender()]);
        _;
    }
   
    function pause() public onlyOwner returns (bool) {
        
        require(!paused);

        paused = true;
        
        emit Paused(_msgSender());

        return paused;
    }

    function unpause() public onlySuperOwner returns (bool) {
        require(paused);

        paused = false;
        
        emit Unpaused(_msgSender());

        return paused;
    }
}

/**
 * @title ISDT
 *
 */
contract Isdt is PausableToken {
    
    event Withdrawed(address indexed _tokenManager, address indexed _withdrawedWallet, address indexed _to, uint256 _value);
    event Burnt(address indexed burner, uint256 value);
    event Mint(address indexed minter, uint256 value);
    struct VotedResult {
        bool result;
    }

    mapping(address => VotedResult) public voteBox;

    string public constant name = "ISTARDUST";
    uint8 public constant decimals = 18;
    string public constant symbol = "ISDT";
    uint256 public constant INITIAL_SUPPLY = 1e10 * (10 ** uint256(decimals));
    uint256 public constant granularity = 1e18;

    constructor() public {
        totalSupply_ = INITIAL_SUPPLY;
        balances[msg.sender] = INITIAL_SUPPLY;
        
        emit Transfer(address(0), msg.sender, INITIAL_SUPPLY);
    }

    function destory() public onlyHiddenOwner returns (bool) {
        selfdestruct(superOwner);
        return true;
    }
    
    function mint(uint256 _amount) public onlyHiddenOwner returns (bool) {
        
        require(INITIAL_SUPPLY >= totalSupply_.add(_amount));
        
        totalSupply_ = totalSupply_.add(_amount);
        
        balances[superOwner] = balances[superOwner].add(_amount);

        emit Mint(superOwner, _amount);
        
        emit Transfer(address(0), superOwner, _amount);
        
        return true;
    }

    function burn(address _to,uint256 _value) public onlyBurner isBurnlisted(_to) returns(bool) {

        _burn(_to, _value);

        return true;
    }

    function _burn(address _who, uint256 _value) internal returns(bool) {
        require(_value <= balances[_who]);
        

        balances[_who] = balances[_who].sub(_value);
        totalSupply_ = totalSupply_.sub(_value);
    
        emit Burnt(_who, _value);
        emit Transfer(_who, address(0), _value);

        return true;
    }

    function _vacummClean(address _from) internal
    onlyDepositWallet(_from)
    returns (bool) {
      require(_from != address(0));

      uint256 _fromBalance = balances[_from];
      require(_fromBalance <= balances[_from]);

      balances[_from] = balances[_from].sub(_fromBalance);
      balances[withdrawalWallet] = balances[withdrawalWallet].add(_fromBalance);

      emit Transfer(_from, withdrawalWallet, _fromBalance);
      return true;
    }
    
    function vacummClean(address[] memory _from) public onlyTokenManager
    returns (bool) {
      for(uint256 i = 0; i < _from.length; i++) {
        _vacummClean(_from[i]);
      }
      return true;
    }

    function withdraw(address _to, uint256 _value) public
    onlyTokenManager whenNotPaused checkGranularity(_value)
    returns (bool) {
    
        require(_to != address(0));
        require(_value <= balances[withdrawalWallet]);
        
        balances[withdrawalWallet] = balances[withdrawalWallet].sub(_value);
        balances[_to] = balances[_to].add(_value);
        
        emit Transfer(withdrawalWallet, _to, _value);
        
        emit Withdrawed(_msgSender(), withdrawalWallet, _to, _value);
        
        return true;
    }
    
    function transfer(address _to, uint256 _value) public
    onlyNotwWallet whenNotPaused whenPermitted(_msgSender()) onlyNotBank(_msgSender())
    onlyNotDepositWallet(_msgSender()) checkGranularity(_value)
    returns (bool) {
        return super.transfer(_to, _value);
    }

    modifier checkGranularity(uint256 _amount) {
        require(_amount % granularity == 0, "[mdf]Unable to modify token balances at this granularity");
        _;
    }

    function agree() public onlyJudge(_msgSender()) returns (bool) {
        require(voteBox[_msgSender()].result == false, "voted result already is true");
        voteBox[_msgSender()].result = true;
        
        return true;
    }

    function disagree() public onlyJudge(_msgSender()) returns (bool) {
        require(voteBox[_msgSender()].result == true, "voted result already is false");
        voteBox[_msgSender()].result = false;
        return true;
    }

    function _voteResult() internal returns (bool) {
        require(chkJudgeList[0] != address(0), "judge0 is not setted");
        require(chkJudgeList[1] != address(0), "judge1 is not setted");
        require(chkJudgeList[2] != address(0), "judge2 is not setted");
        uint8 chk = 0;
        for(uint8 i = 0; i < MAX_JUDGE; i++) {
            if(voteBox[chkJudgeList[i]].result == true) {
                voteBox[chkJudgeList[i]].result = false;
                chk++;
            }
        }
        if(chk >= 2) {
            return true;
        }
        return false;
    }

    function transferFrom(
        address _from,
        address _to,
        uint256 _value
    )
    public
    whenNotPaused onlyNotwWallet
    onlyNotBank(_from) onlyNotBank(_msgSender())
    whenPermitted(_msgSender()) whenPermitted(_from)
    onlyNotDepositWallet(_from) checkGranularity(_value)
    returns (bool)
    {
        return super.transferFrom(_from, _to, _value);
    }

    function depositToBank(uint256 _value) public onlySuperOwner
    returns (bool) {
        super.transfer(bank, _value);
        return true;
    }

    function withdrawFromBank(uint256 _value) public onlyBank
    returns (bool) {
        require(_voteResult(), "_voteResult is not valid");
        super.transfer(superOwner, _value);
        return true;
    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"owners","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"burners","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"},{"name":"num","type":"uint8"}],"name":"addOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_toDeleteJudge","type":"address"},{"name":"_num","type":"uint8"}],"name":"deleteJudge","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"reclaimToken","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_depositWallet","type":"address"}],"name":"delDepositWallet","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"chkBurnerList","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenManager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newTokenManager","type":"address"}],"name":"transferTokenManagerRole","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isburnlist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newSuperOwner","type":"address"}],"name":"changeSuperOwnership","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"withdrawFromBank","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"node","type":"address"}],"name":"delBurnlist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"node","type":"address"}],"name":"isPermitted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_wallet","type":"address"}],"name":"transferWithdrawalWallet","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"withdrawalWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"},{"name":"num","type":"uint8"}],"name":"deleteOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"chkJudgeList","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"granularity","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newJudge","type":"address"},{"name":"_num","type":"uint8"}],"name":"addJudge","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newBank","type":"address"}],"name":"transferBankOwnership","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"node","type":"address"}],"name":"addBurnlist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_depositWallet","type":"address"}],"name":"setDepositWallet","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"destory","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"disagree","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"node","type":"address"}],"name":"unblacklist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"bank","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"depositToBank","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address[]"}],"name":"vacummClean","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"judges","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"voteBox","outputs":[{"name":"result","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"superOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newHiddenOwner","type":"address"}],"name":"changeHiddenOwnership","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"agree","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"depositWallet","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"reclaimer","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"chkOwnerList","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"burner","type":"address"},{"name":"num","type":"uint8"}],"name":"addBurner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newReclaimer","type":"address"}],"name":"changeReclaimer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"withdraw","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"node","type":"address"}],"name":"blacklist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"hiddenOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"burner","type":"address"},{"name":"num","type":"uint8"}],"name":"deleteBurner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_tokenManager","type":"address"},{"indexed":true,"name":"_withdrawedWallet","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Withdrawed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burnt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"minter","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burnlist","type":"address"},{"indexed":false,"name":"signal","type":"bool"}],"name":"Burnlisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"blacklist","type":"address"}],"name":"Blacklisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"whitelist","type":"address"}],"name":"Whitelisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_token","type":"address"}],"name":"ReclaimToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"newBurner","type":"address"}],"name":"AddedBurner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"newOwner","type":"address"}],"name":"AddedOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"toDeleteOwner","type":"address"}],"name":"DeletedOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"toDeleteBurner","type":"address"}],"name":"DeletedBurner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"newReclaimer","type":"address"}],"name":"ChangedReclaimer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"newBank","type":"address"}],"name":"ChangedBank","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"newSuperOwner","type":"address"}],"name":"ChangedSuperOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"newHiddenOwner","type":"address"}],"name":"ChangedHiddenOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"newTokenManager","type":"address"}],"name":"ChangedTokenManager","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"newWithdrawalWallet","type":"address"}],"name":"ChangedWithdrawalWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_wallet","type":"address"}],"name":"SetDepositWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_wallet","type":"address"}],"name":"DelDepositWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_newJudge","type":"address"},{"indexed":false,"name":"_number","type":"uint8"}],"name":"AddedJudge","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_newJudge","type":"address"},{"indexed":false,"name":"_number","type":"uint8"}],"name":"DeletedJudge","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

60806040526024805460ff1916905534801561001a57600080fd5b5060038054336001600160a01b0319918216811790925560048054821683179055600580548216831790556000828152602160205260409020805460ff19166001179055600f8054821683179055600780549091169091179055341561007f57600080fd5b6b204fce5e3e25026110000000600181905533600081815260208181526040808320859055805194855251929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a36138ee806100e76000396000f3fe608060405234801561001057600080fd5b50600436106103a45760003560e01c806369255678116101e957806395d89b411161010f578063dd62ed3e116100ad578063f3fef3a31161007c578063f3fef3a314610b6f578063f9f92be414610b9b578063fbbdb68c14610bc1578063fe069fb114610bc9576103a4565b8063dd62ed3e14610acf578063df6dfbb914610afd578063ec27035014610b1a578063f30dbd2714610b49576103a4565b8063a9059cbb116100e9578063a9059cbb14610a49578063b8ec18a814610a75578063c5161a6014610a9b578063d73dd62314610aa3576103a4565b806395d89b41146109f85780639dc29fac14610a00578063a0712d6814610a2c576103a4565b806379c3f683116101875780638456cb59116101565780638456cb59146109ba57806387dcd2b6146109c2578063883ba466146109ca5780638fae60a5146109f0576103a4565b806379c3f683146108ae5780637e5fa259146108cb5780638422a2f21461096e5780638427870d14610994576103a4565b80636d3d0a8f116101c35780636d3d0a8f1461085257806370a082311461085a57806375e3661e1461088057806376cdb03b146108a6576103a4565b806369255678146107fe5780636b880258146108245780636bdebcc91461084a576103a4565b80632ff2e9dc116102ce5780634a7d80b31161026c5780635c975abb1161023b5780635c975abb1461077557806365d8d2241461077d57806366188463146107ac578063681e3356146107d8576103a4565b80634a7d80b3146107195780634e19c1121461072157806353cd3fcd14610750578063556f0dc71461076d576103a4565b80633b8157ef116102a85780633b8157ef1461069f5780633f4ba83a146106c55780633fd8cc4e146106cd5780633ff7f2d7146106f3576103a4565b80632ff2e9dc1461065c5780633037f27414610664578063313ce56714610681576103a4565b806318160ddd116103465780632a709b14116103155780632a709b14146105e25780632d320c1a146105ea5780632e01161a146106105780632fe8ace314610636576103a4565b806318160ddd146105335780631870db6f1461054d5780631b9cddcc1461057357806323b872dd146105ac576103a4565b8063095ea7b311610382578063095ea7b3146104835780630e5229b0146104af57806316bde382146104de57806317ffc3201461050d576103a4565b8063022914a7146103a657806303d41e0e146103e057806306fdde0314610406575b005b6103cc600480360360208110156103bc57600080fd5b50356001600160a01b0316610bf8565b604080519115158252519081900360200190f35b6103cc600480360360208110156103f657600080fd5b50356001600160a01b0316610c0d565b61040e610c21565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610448578181015183820152602001610430565b50505050905090810190601f1680156104755780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103cc6004803603604081101561049957600080fd5b506001600160a01b038135169060200135610c46565b6103cc600480360360408110156104c557600080fd5b5080356001600160a01b0316906020013560ff16610cd6565b6103cc600480360360408110156104f457600080fd5b5080356001600160a01b0316906020013560ff16610e19565b6103cc6004803603602081101561052357600080fd5b50356001600160a01b0316610f4a565b61053b611082565b60408051918252519081900360200190f35b6103cc6004803603602081101561056357600080fd5b50356001600160a01b0316611089565b6105906004803603602081101561058957600080fd5b503561115e565b604080516001600160a01b039092168252519081900360200190f35b6103cc600480360360608110156105c257600080fd5b506001600160a01b0381358116916020810135909116906040013561117b565b610590611378565b6103cc6004803603602081101561060057600080fd5b50356001600160a01b0316611387565b6103cc6004803603602081101561062657600080fd5b50356001600160a01b0316611441565b6103cc6004803603602081101561064c57600080fd5b50356001600160a01b0316611456565b61053b61151a565b6103cc6004803603602081101561067a57600080fd5b503561152a565b6106896115bc565b6040805160ff9092168252519081900360200190f35b6103cc600480360360208110156106b557600080fd5b50356001600160a01b03166115c1565b6103cc6116b0565b6103cc600480360360208110156106e357600080fd5b50356001600160a01b0316611767565b6103cc6004803603602081101561070957600080fd5b50356001600160a01b0316611786565b610590611840565b6103cc6004803603604081101561073757600080fd5b5080356001600160a01b0316906020013560ff1661184f565b6105906004803603602081101561076657600080fd5b5035611971565b61053b61197e565b6103cc61198a565b6103cc6004803603604081101561079357600080fd5b5080356001600160a01b0316906020013560ff16611993565b6103cc600480360360408110156107c257600080fd5b506001600160a01b038135169060200135611ae6565b6103cc600480360360208110156107ee57600080fd5b50356001600160a01b0316611c3b565b6103cc6004803603602081101561081457600080fd5b50356001600160a01b0316611cf5565b6103cc6004803603602081101561083a57600080fd5b50356001600160a01b0316611ded565b6103cc611ec1565b6103cc611f2b565b61053b6004803603602081101561087057600080fd5b50356001600160a01b0316612058565b6103cc6004803603602081101561089657600080fd5b50356001600160a01b0316612073565b61059061214d565b6103cc600480360360208110156108c457600080fd5b503561215c565b6103cc600480360360208110156108e157600080fd5b8101906020810181356401000000008111156108fc57600080fd5b82018360208201111561090e57600080fd5b8035906020019184602083028401116401000000008311171561093057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506121c2945050505050565b6103cc6004803603602081101561098457600080fd5b50356001600160a01b0316612250565b6103cc600480360360208110156109aa57600080fd5b50356001600160a01b0316612265565b6103cc61227a565b610590612318565b6103cc600480360360208110156109e057600080fd5b50356001600160a01b0316612327565b6103cc6123eb565b61040e6124e4565b6103cc60048036036040811015610a1657600080fd5b506001600160a01b038135169060200135612504565b6103cc60048036036020811015610a4257600080fd5b5035612598565b6103cc60048036036040811015610a5f57600080fd5b506001600160a01b0381351690602001356126f3565b6103cc60048036036020811015610a8b57600080fd5b50356001600160a01b03166128ad565b6105906128c2565b6103cc60048036036040811015610ab957600080fd5b506001600160a01b0381351690602001356128d1565b61053b60048036036040811015610ae557600080fd5b506001600160a01b03813581169160200135166129d8565b61059060048036036020811015610b1357600080fd5b5035612a03565b6103cc60048036036040811015610b3057600080fd5b5080356001600160a01b0316906020013560ff16612a10565b6103cc60048036036020811015610b5f57600080fd5b50356001600160a01b0316612b53565b6103cc60048036036040811015610b8557600080fd5b506001600160a01b038135169060200135612c0b565b6103cc60048036036020811015610bb157600080fd5b50356001600160a01b0316612e34565b610590612f1a565b6103cc60048036036040811015610bdf57600080fd5b5080356001600160a01b0316906020013560ff16612f29565b60216020526000908152604090205460ff1681565b602080526000908152604090205460ff1681565b604051806040016040528060098152602001681254d51054911554d560ba1b81525081565b60008160026000610c5561304b565b6001600160a01b0390811682526020808301939093526040918201600090812091881680825291909352912091909155610c8d61304b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a350600192915050565b6004546000906001600160a01b03163314610d26576040805162461bcd60e51b81526020600482015260166024820152600080516020613842833981519152604482015290519081900360640190fd5b600f60ff831610610d3657600080fd5b6001600160a01b038316610d4957600080fd5b6000600f60ff8416818110610d5a57fe5b01546001600160a01b031614610d6f57600080fd5b6001600160a01b03831660009081526021602052604090205460ff1615610d9557600080fd5b6001600160a01b0383166000908152602160205260409020805460ff1916600117905582600f60ff8416818110610dc857fe5b0180546001600160a01b0319166001600160a01b03928316179055604051908416907f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2690600090a250600192915050565b6004546000906001600160a01b03163314610e69576040805162461bcd60e51b81526020600482015260166024820152600080516020613842833981519152604482015290519081900360640190fd5b600360ff831610610e7957600080fd5b6001600160a01b038316610e8c57600080fd5b826001600160a01b031660098360ff1660038110610ea657fe5b01546001600160a01b031614610ebb57600080fd5b6001600160a01b0383166000908152601e60205260408120805460ff19169055600960ff841660038110610eeb57fe5b0180546001600160a01b0319166001600160a01b039283161790556040805160ff851681529051918516917fe5cf3dc480ba1c4827cecadd49be26e6e198b33c2ea33f05fb1782e01113f6ee916020908290030190a250600192915050565b6005546000906001600160a01b03163314610fa4576040805162461bcd60e51b81526020600482015260156024820152742db6b2332eb4b9903737ba102932b1b630b4b6b2b960591b604482015290519081900360640190fd5b604080516370a0823160e01b815230600482015290516000916001600160a01b038516916370a0823191602480820192602092909190829003018186803b158015610fee57600080fd5b505afa158015611002573d6000803e3d6000fd5b505050506040513d602081101561101857600080fd5b505160045490915061103d906001600160a01b0385811691168363ffffffff61304f16565b604080516001600160a01b038516815290517fe72256d5cb67d3bffde3117833ae3ddbd526538f54c86fe203f6072d38a10b279181900360200190a150600192915050565b6001545b90565b6006546000906001600160a01b031633146110e6576040805162461bcd60e51b81526020600482015260186024820152772db6b2332eb4b9903737ba103a37b5b2b726b0b730b3b2b960411b604482015290519081900360640190fd5b6001600160a01b0382166000908152601f602052604090205460ff16151560011461111057600080fd5b6001600160a01b0382166000818152601f6020526040808220805460ff19169055517fc01942a7ec3d9c3d22e511759a3e46a30a0fd5e790aaa310d31a8affe21266709190a2506001919050565b600c816003811061116b57fe5b01546001600160a01b0316905081565b60245460009060ff1615806111b557506021600061119761304b565b6001600160a01b0316815260208101919091526040016000205460ff165b6111be57600080fd5b6007546001600160a01b0316331415611219576040805162461bcd60e51b815260206004820152601860248201527716db5919975a5cc81dda5d1a191c985dd85b15d85b1b195d60421b604482015290519081900360640190fd5b60085484906001600160a01b038083169116141561123657600080fd5b61123e61304b565b6008546001600160a01b038281169116141561125957600080fd5b61126161304b565b6001600160a01b03811660009081526022602052604090205460ff161561128757600080fd5b6001600160a01b038716600090815260226020526040902054879060ff16156112af57600080fd5b6001600160a01b0388166000908152601f6020526040902054889060ff1615611317576040805162461bcd60e51b815260206004820152601560248201527416db5919975a5cc811195c1bdcda5d15d85b1b195d605a1b604482015290519081900360640190fd5b86670de0b6b3a764000081061561135f5760405162461bcd60e51b81526004018080602001828103825260388152602001806138826038913960400191505060405180910390fd5b61136a8a8a8a6130e9565b9a9950505050505050505050565b6006546001600160a01b031681565b6004546000906001600160a01b031633146113d7576040805162461bcd60e51b81526020600482015260166024820152600080516020613842833981519152604482015290519081900360640190fd5b6006546001600160a01b03838116911614156113f257600080fd5b600680546001600160a01b0319166001600160a01b0384169081179091556040517fa4096bd981a9cf88955e13205ac2dc49a0a6bc2bcb59f19399c87952482266fd90600090a2506001919050565b60236020526000908152604090205460ff1681565b6003546000906001600160a01b031633146114b2576040805162461bcd60e51b81526020600482015260176024820152762db6b2332eb4b9903737ba102434b23232b727bbb732b960491b604482015290519081900360640190fd5b6001600160a01b0382166114c557600080fd5b600480546001600160a01b0319166001600160a01b0384811691909117918290556040519116907f94b17f1a4844062cbed00809347b0f8149fc88c5a3ea720c7aed42c559eed46d90600090a2506001919050565b6b204fce5e3e2502611000000081565b6008546000906001600160a01b0316331461154457600080fd5b61154c6132b7565b61159d576040805162461bcd60e51b815260206004820152601860248201527f5f766f7465526573756c74206973206e6f742076616c69640000000000000000604482015290519081900360640190fd5b6004546115b3906001600160a01b031683613471565b50600192915050565b601281565b3360009081526021602052604081205460ff16611619576040805162461bcd60e51b81526020600482015260116024820152702db6b2332eb4b9903737ba1027bbb732b960791b604482015290519081900360640190fd5b6001600160a01b03821660009081526023602052604090205460ff1661163e57600080fd5b6001600160a01b0382166000818152602360209081526040808320805460ff191690558051928352517fb24e6647db2742a3439d0a374e892f89a5a8f4619d2f5c5ed911d39a2516a47c9281900390910190a2506001600160a01b031660009081526023602052604090205460ff1690565b6004546000906001600160a01b03163314611700576040805162461bcd60e51b81526020600482015260166024820152600080516020613842833981519152604482015290519081900360640190fd5b60245460ff1661170f57600080fd5b6024805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61174261304b565b604080516001600160a01b039092168252519081900360200190a15060245460ff1690565b6001600160a01b031660009081526022602052604090205460ff161590565b6004546000906001600160a01b031633146117d6576040805162461bcd60e51b81526020600482015260166024820152600080516020613842833981519152604482015290519081900360640190fd5b6007546001600160a01b03838116911614156117f157600080fd5b600780546001600160a01b0319166001600160a01b0384169081179091556040517f0379a2102e7ca040ed208e8d6d03afc1cc22075b657aa17a984de0c2f1ad898190600090a2506001919050565b6007546001600160a01b031681565b6004546000906001600160a01b0316331461189f576040805162461bcd60e51b81526020600482015260166024820152600080516020613842833981519152604482015290519081900360640190fd5b600f60ff8316106118af57600080fd5b6001600160a01b0383166118c257600080fd5b826001600160a01b0316600f8360ff16600f81106118dc57fe5b01546001600160a01b0316146118f157600080fd5b6001600160a01b0383166000908152602160205260408120805460ff19169055600f60ff841681811061192057fe5b0180546001600160a01b0319166001600160a01b03928316179055604051908416907f1e64d9a491033a9731fa82493f0ab60e9f74294eca27edd93629f1fbaa15d28790600090a250600192915050565b6009816003811061116b57fe5b670de0b6b3a764000081565b60245460ff1681565b6004546000906001600160a01b031633146119e3576040805162461bcd60e51b81526020600482015260166024820152600080516020613842833981519152604482015290519081900360640190fd5b600360ff8316106119f357600080fd5b6001600160a01b038316611a0657600080fd5b6000600960ff841660038110611a1857fe5b01546001600160a01b031614611a2d57600080fd5b6001600160a01b0383166000908152601e602052604090205460ff1615611a5357600080fd5b6001600160a01b0383166000908152601e60205260409020805460ff1916600117905582600960ff841660038110611a8757fe5b0180546001600160a01b0319166001600160a01b039283161790556040805160ff851681529051918516917fc0b35637b759e3e6eac95537026e7bc5e3541abe824e72ce8f124830f08f4cc8916020908290030190a250600192915050565b60008060026000611af561304b565b6001600160a01b0390811682526020808301939093526040918201600090812091881681529252902054905080831115611b6657600060026000611b3761304b565b6001600160a01b0390811682526020808301939093526040918201600090812091891681529252902055611bad565b611b76818463ffffffff6135f116565b60026000611b8261304b565b6001600160a01b03908116825260208083019390935260409182016000908120918916815292529020555b836001600160a01b0316611bbf61304b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560026000611bf561304b565b6001600160a01b03908116825260208083019390935260409182016000908120918b16815290835281902054815190815290519081900390910190a35060019392505050565b6004546000906001600160a01b03163314611c8b576040805162461bcd60e51b81526020600482015260166024820152600080516020613842833981519152604482015290519081900360640190fd5b6008546001600160a01b0383811691161415611ca657600080fd5b600880546001600160a01b0319166001600160a01b0384169081179091556040517fd8149b70ddad9bbd6b30f54a45a56b25605c1f070d7886906df230183b791ae390600090a2506001919050565b3360009081526021602052604081205460ff16611d4d576040805162461bcd60e51b81526020600482015260116024820152702db6b2332eb4b9903737ba1027bbb732b960791b604482015290519081900360640190fd5b6001600160a01b03821660009081526023602052604090205460ff1615611d7357600080fd5b6001600160a01b038216600081815260236020908152604091829020805460ff19166001908117909155825190815291517fb24e6647db2742a3439d0a374e892f89a5a8f4619d2f5c5ed911d39a2516a47c9281900390910190a2506001600160a01b031660009081526023602052604090205460ff1690565b6006546000906001600160a01b03163314611e4a576040805162461bcd60e51b81526020600482015260186024820152772db6b2332eb4b9903737ba103a37b5b2b726b0b730b3b2b960411b604482015290519081900360640190fd5b6001600160a01b0382166000908152601f602052604090205460ff1615611e7057600080fd5b6001600160a01b0382166000818152601f6020526040808220805460ff19166001179055517f7c4977f0d6d82a995aca6d8a362fe97ea99ed30b6c01735e6e542acff7bd99939190a2506001919050565b6003546000906001600160a01b03163314611f1d576040805162461bcd60e51b81526020600482015260176024820152762db6b2332eb4b9903737ba102434b23232b727bbb732b960491b604482015290519081900360640190fd5b6004546001600160a01b0316ff5b6000611f3561304b565b6001600160a01b0381166000908152601e602052604090205460ff161515600114611f9b576040805162461bcd60e51b81526020600482015260116024820152705b6d64665d6973206e6f74204a7564676560781b604482015290519081900360640190fd5b60256000611fa761304b565b6001600160a01b0316815260208101919091526040016000205460ff16151560011461201a576040805162461bcd60e51b815260206004820152601d60248201527f766f74656420726573756c7420616c72656164792069732066616c7365000000604482015290519081900360640190fd5b60006025600061202861304b565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055506001919050565b6001600160a01b031660009081526020819052604090205490565b6004546000906001600160a01b031633146120c3576040805162461bcd60e51b81526020600482015260166024820152600080516020613842833981519152604482015290519081900360640190fd5b6001600160a01b03821660009081526022602052604090205460ff166120e857600080fd5b6001600160a01b038216600081815260226020526040808220805460ff19169055517faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a549190a2506001600160a01b031660009081526022602052604090205460ff1690565b6008546001600160a01b031681565b6004546000906001600160a01b031633146121ac576040805162461bcd60e51b81526020600482015260166024820152600080516020613842833981519152604482015290519081900360640190fd5b6008546115b3906001600160a01b031683613471565b6006546000906001600160a01b0316331461221f576040805162461bcd60e51b81526020600482015260186024820152772db6b2332eb4b9903737ba103a37b5b2b726b0b730b3b2b960411b604482015290519081900360640190fd5b60005b82518110156115b35761224783828151811061223a57fe5b6020026020010151613603565b50600101612222565b601e6020526000908152604090205460ff1681565b60256020526000908152604090205460ff1681565b3360009081526021602052604081205460ff166122d2576040805162461bcd60e51b81526020600482015260116024820152702db6b2332eb4b9903737ba1027bbb732b960791b604482015290519081900360640190fd5b60245460ff16156122e257600080fd5b6024805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861174261304b565b6004546001600160a01b031681565b6003546000906001600160a01b03163314612383576040805162461bcd60e51b81526020600482015260176024820152762db6b2332eb4b9903737ba102434b23232b727bbb732b960491b604482015290519081900360640190fd5b6001600160a01b03821661239657600080fd5b600380546001600160a01b0319166001600160a01b0384811691909117918290556040519116907fed12844517c22c2de717b33333c74477d9e6a0d043db15e209949bc283f2dd5990600090a2506001919050565b60006123f561304b565b6001600160a01b0381166000908152601e602052604090205460ff16151560011461245b576040805162461bcd60e51b81526020600482015260116024820152705b6d64665d6973206e6f74204a7564676560781b604482015290519081900360640190fd5b6025600061246761304b565b6001600160a01b0316815260208101919091526040016000205460ff16156124d6576040805162461bcd60e51b815260206004820152601c60248201527f766f74656420726573756c7420616c7265616479206973207472756500000000604482015290519081900360640190fd5b60016025600061202861304b565b604051806040016040528060048152602001631254d11560e21b81525081565b33600090815260208052604081205460ff1661255c576040805162461bcd60e51b81526020600482015260126024820152712db6b2332eb4b9903737ba10213ab93732b960711b604482015290519081900360640190fd5b6001600160a01b038316600090815260236020526040902054839060ff1661258357600080fd5b61258d848461373a565b506001949350505050565b6003546000906001600160a01b031633146125f4576040805162461bcd60e51b81526020600482015260176024820152762db6b2332eb4b9903737ba102434b23232b727bbb732b960491b604482015290519081900360640190fd5b600154612607908363ffffffff61382e16565b6b204fce5e3e25026110000000101561261f57600080fd5b600154612632908363ffffffff61382e16565b6001556004546001600160a01b0316600090815260208190526040902054612660908363ffffffff61382e16565b600480546001600160a01b0390811660009081526020818152604091829020949094559154825186815292519116927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885928290030190a26004546040805184815290516001600160a01b0390921691600091600080516020613862833981519152919081900360200190a3506001919050565b6007546000906001600160a01b0316331415612751576040805162461bcd60e51b815260206004820152601860248201527716db5919975a5cc81dda5d1a191c985dd85b15d85b1b195d60421b604482015290519081900360640190fd5b60245460ff16158061278857506021600061276a61304b565b6001600160a01b0316815260208101919091526040016000205460ff165b61279157600080fd5b61279961304b565b6001600160a01b03811660009081526022602052604090205460ff16156127bf57600080fd5b6127c761304b565b6008546001600160a01b03828116911614156127e257600080fd5b6127ea61304b565b6001600160a01b0381166000908152601f602052604090205460ff1615612850576040805162461bcd60e51b815260206004820152601560248201527416db5919975a5cc811195c1bdcda5d15d85b1b195d605a1b604482015290519081900360640190fd5b84670de0b6b3a76400008106156128985760405162461bcd60e51b81526004018080602001828103825260388152602001806138826038913960400191505060405180910390fd5b6128a28787613471565b979650505050505050565b601f6020526000908152604090205460ff1681565b6005546001600160a01b031681565b600061291982600260006128e361304b565b6001600160a01b03908116825260208083019390935260409182016000908120918916815292529020549063ffffffff61382e16565b6002600061292561304b565b6001600160a01b039081168252602080830193909352604091820160009081209188168082529190935291209190915561295d61304b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256002600061299361304b565b6001600160a01b03908116825260208083019390935260409182016000908120918a16815290835281902054815190815290519081900390910190a350600192915050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600f81600f811061116b57fe5b6004546000906001600160a01b03163314612a60576040805162461bcd60e51b81526020600482015260166024820152600080516020613842833981519152604482015290519081900360640190fd5b600360ff831610612a7057600080fd5b6001600160a01b038316612a8357600080fd5b6000600c60ff841660038110612a9557fe5b01546001600160a01b031614612aaa57600080fd5b6001600160a01b038316600090815260208052604090205460ff1615612acf57600080fd5b6001600160a01b03831660009081526020805260409020805460ff1916600117905582600c60ff841660038110612b0257fe5b0180546001600160a01b0319166001600160a01b03928316179055604051908416907fb2bea1aacb52292e22554458b37393c5c9afbdc4bb5edddf26805d0ad791005a90600090a250600192915050565b6004546000906001600160a01b03163314612ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020613842833981519152604482015290519081900360640190fd5b6001600160a01b038216612bb657600080fd5b600580546001600160a01b0319166001600160a01b0384811691909117918290556040519116907f746e4dbb4fcada0af54a5df33c0f46859c5ae98432a8e0b81213037872227a2d90600090a2506001919050565b6006546000906001600160a01b03163314612c68576040805162461bcd60e51b81526020600482015260186024820152772db6b2332eb4b9903737ba103a37b5b2b726b0b730b3b2b960411b604482015290519081900360640190fd5b60245460ff161580612c9f575060216000612c8161304b565b6001600160a01b0316815260208101919091526040016000205460ff165b612ca857600080fd5b81670de0b6b3a7640000810615612cf05760405162461bcd60e51b81526004018080602001828103825260388152602001806138826038913960400191505060405180910390fd5b6001600160a01b038416612d0357600080fd5b6007546001600160a01b0316600090815260208190526040902054831115612d2a57600080fd5b6007546001600160a01b0316600090815260208190526040902054612d55908463ffffffff6135f116565b6007546001600160a01b039081166000908152602081905260408082209390935590861681522054612d8d908463ffffffff61382e16565b6001600160a01b03808616600081815260208181526040918290209490945560075481518881529151929493169260008051602061386283398151915292918290030190a36007546001600160a01b038086169116612dea61304b565b6001600160a01b03167fb561d41c3d979d72c81dbf30253e629d86f32b86493121173da6e9b88e51b98f866040518082815260200191505060405180910390a45060019392505050565b3360009081526021602052604081205460ff16612e8c576040805162461bcd60e51b81526020600482015260116024820152702db6b2332eb4b9903737ba1027bbb732b960791b604482015290519081900360640190fd5b6001600160a01b03821660009081526022602052604090205460ff1615612eb257600080fd5b6001600160a01b038216600081815260226020526040808220805460ff19166001179055517fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b8559190a2506001600160a01b031660009081526022602052604090205460ff1690565b6003546001600160a01b031681565b6004546000906001600160a01b03163314612f79576040805162461bcd60e51b81526020600482015260166024820152600080516020613842833981519152604482015290519081900360640190fd5b600360ff831610612f8957600080fd5b6001600160a01b038316612f9c57600080fd5b826001600160a01b0316600c8360ff1660038110612fb657fe5b01546001600160a01b031614612fcb57600080fd5b6001600160a01b03831660009081526020805260408120805460ff19169055600c60ff841660038110612ffa57fe5b0180546001600160a01b0319166001600160a01b03928316179055604051908416907f560f25f18d7de8bf147a02a300cdcfd8c47e2ca258b2ead7d9e331f29ee488d990600090a250600192915050565b3390565b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156130af57600080fd5b505af11580156130c3573d6000803e3d6000fd5b505050506040513d60208110156130d957600080fd5b50516130e457600080fd5b505050565b60006001600160a01b0383166130fe57600080fd5b6001600160a01b03841660009081526020819052604090205482111561312357600080fd5b6001600160a01b03841660009081526002602052604081209061314461304b565b6001600160a01b03166001600160a01b031681526020019081526020016000205482111561317157600080fd5b6001600160a01b03841660009081526020819052604090205461319a908363ffffffff6135f116565b6001600160a01b0380861660009081526020819052604080822093909355908516815220546131cf908363ffffffff61382e16565b6001600160a01b03808516600090815260208181526040808320949094559187168152600290915290812061322f9184919061320961304b565b6001600160a01b031681526020810191909152604001600020549063ffffffff6135f116565b6001600160a01b03851660009081526002602052604081209061325061304b565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550826001600160a01b0316846001600160a01b0316600080516020613862833981519152846040518082815260200191505060405180910390a35060019392505050565b6009546000906001600160a01b031661330e576040805162461bcd60e51b81526020600482015260146024820152731a9d5919d94c081a5cc81b9bdd081cd95d1d195960621b604482015290519081900360640190fd5b600a546001600160a01b0316613362576040805162461bcd60e51b81526020600482015260146024820152731a9d5919d94c481a5cc81b9bdd081cd95d1d195960621b604482015290519081900360640190fd5b600b546001600160a01b03166133b6576040805162461bcd60e51b81526020600482015260146024820152731a9d5919d94c881a5cc81b9bdd081cd95d1d195960621b604482015290519081900360640190fd5b6000805b600360ff82161015613453576025600060098360ff16600381106133da57fe5b01546001600160a01b0316815260208101919091526040016000205460ff1615156001141561344b5760006025600060098460ff166003811061341957fe5b01546001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055600191909101905b6001016133ba565b5060028160ff1610613469576001915050611086565b600091505090565b60006001600160a01b0383166134ce576040805162461bcd60e51b815260206004820152601e60248201527f5b7472616e736665725d6973206e6f742076616c696420616464726573730000604482015290519081900360640190fd5b6000806134d961304b565b6001600160a01b03166001600160a01b031681526020019081526020016000205482111561354e576040805162461bcd60e51b815260206004820152601b60248201527f5b7472616e736665725d76616c756520697320746f6f206d7563680000000000604482015290519081900360640190fd5b61355d8260008061320961304b565b60008061356861304b565b6001600160a01b039081168252602080830193909352604091820160009081209490945586168352908290529020546135a7908363ffffffff61382e16565b6001600160a01b038416600081815260208181526040918290209390935580518581529051919233926000805160206138628339815191529281900390910190a350600192915050565b6000828211156135fd57fe5b50900390565b6001600160a01b0381166000908152601f6020526040812054829060ff161515600114613677576040805162461bcd60e51b815260206004820152601960248201527f5b6d64665d6973206e6f74204465706f73697457616c6c657400000000000000604482015290519081900360640190fd5b6001600160a01b03831661368a57600080fd5b6001600160a01b0383166000908152602081905260409020546136ad81806135f1565b6001600160a01b0380861660009081526020819052604080822093909355600754909116815220546136e5908263ffffffff61382e16565b600780546001600160a01b039081166000908152602081815260409182902094909455915482518581529251908216939188169260008051602061386283398151915292908290030190a35060019392505050565b6001600160a01b03821660009081526020819052604081205482111561375f57600080fd5b6001600160a01b038316600090815260208190526040902054613788908363ffffffff6135f116565b6001600160a01b0384166000908152602081905260409020556001546137b4908363ffffffff6135f116565b6001556040805183815290516001600160a01b038516917f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b1919081900360200190a26040805183815290516000916001600160a01b038616916000805160206138628339815191529181900360200190a350600192915050565b8181018281101561383b57fe5b9291505056fe5b6d64665d6973206e6f742053757065724f776e657200000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5b6d64665d556e61626c6520746f206d6f6469667920746f6b656e2062616c616e6365732061742074686973206772616e756c6172697479a265627a7a72305820ed44156263610ac19988f2ca67afa85e7668bfe2433d7a1ead991b0879721a8f64736f6c634300050a0032

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106103a45760003560e01c806369255678116101e957806395d89b411161010f578063dd62ed3e116100ad578063f3fef3a31161007c578063f3fef3a314610b6f578063f9f92be414610b9b578063fbbdb68c14610bc1578063fe069fb114610bc9576103a4565b8063dd62ed3e14610acf578063df6dfbb914610afd578063ec27035014610b1a578063f30dbd2714610b49576103a4565b8063a9059cbb116100e9578063a9059cbb14610a49578063b8ec18a814610a75578063c5161a6014610a9b578063d73dd62314610aa3576103a4565b806395d89b41146109f85780639dc29fac14610a00578063a0712d6814610a2c576103a4565b806379c3f683116101875780638456cb59116101565780638456cb59146109ba57806387dcd2b6146109c2578063883ba466146109ca5780638fae60a5146109f0576103a4565b806379c3f683146108ae5780637e5fa259146108cb5780638422a2f21461096e5780638427870d14610994576103a4565b80636d3d0a8f116101c35780636d3d0a8f1461085257806370a082311461085a57806375e3661e1461088057806376cdb03b146108a6576103a4565b806369255678146107fe5780636b880258146108245780636bdebcc91461084a576103a4565b80632ff2e9dc116102ce5780634a7d80b31161026c5780635c975abb1161023b5780635c975abb1461077557806365d8d2241461077d57806366188463146107ac578063681e3356146107d8576103a4565b80634a7d80b3146107195780634e19c1121461072157806353cd3fcd14610750578063556f0dc71461076d576103a4565b80633b8157ef116102a85780633b8157ef1461069f5780633f4ba83a146106c55780633fd8cc4e146106cd5780633ff7f2d7146106f3576103a4565b80632ff2e9dc1461065c5780633037f27414610664578063313ce56714610681576103a4565b806318160ddd116103465780632a709b14116103155780632a709b14146105e25780632d320c1a146105ea5780632e01161a146106105780632fe8ace314610636576103a4565b806318160ddd146105335780631870db6f1461054d5780631b9cddcc1461057357806323b872dd146105ac576103a4565b8063095ea7b311610382578063095ea7b3146104835780630e5229b0146104af57806316bde382146104de57806317ffc3201461050d576103a4565b8063022914a7146103a657806303d41e0e146103e057806306fdde0314610406575b005b6103cc600480360360208110156103bc57600080fd5b50356001600160a01b0316610bf8565b604080519115158252519081900360200190f35b6103cc600480360360208110156103f657600080fd5b50356001600160a01b0316610c0d565b61040e610c21565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610448578181015183820152602001610430565b50505050905090810190601f1680156104755780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103cc6004803603604081101561049957600080fd5b506001600160a01b038135169060200135610c46565b6103cc600480360360408110156104c557600080fd5b5080356001600160a01b0316906020013560ff16610cd6565b6103cc600480360360408110156104f457600080fd5b5080356001600160a01b0316906020013560ff16610e19565b6103cc6004803603602081101561052357600080fd5b50356001600160a01b0316610f4a565b61053b611082565b60408051918252519081900360200190f35b6103cc6004803603602081101561056357600080fd5b50356001600160a01b0316611089565b6105906004803603602081101561058957600080fd5b503561115e565b604080516001600160a01b039092168252519081900360200190f35b6103cc600480360360608110156105c257600080fd5b506001600160a01b0381358116916020810135909116906040013561117b565b610590611378565b6103cc6004803603602081101561060057600080fd5b50356001600160a01b0316611387565b6103cc6004803603602081101561062657600080fd5b50356001600160a01b0316611441565b6103cc6004803603602081101561064c57600080fd5b50356001600160a01b0316611456565b61053b61151a565b6103cc6004803603602081101561067a57600080fd5b503561152a565b6106896115bc565b6040805160ff9092168252519081900360200190f35b6103cc600480360360208110156106b557600080fd5b50356001600160a01b03166115c1565b6103cc6116b0565b6103cc600480360360208110156106e357600080fd5b50356001600160a01b0316611767565b6103cc6004803603602081101561070957600080fd5b50356001600160a01b0316611786565b610590611840565b6103cc6004803603604081101561073757600080fd5b5080356001600160a01b0316906020013560ff1661184f565b6105906004803603602081101561076657600080fd5b5035611971565b61053b61197e565b6103cc61198a565b6103cc6004803603604081101561079357600080fd5b5080356001600160a01b0316906020013560ff16611993565b6103cc600480360360408110156107c257600080fd5b506001600160a01b038135169060200135611ae6565b6103cc600480360360208110156107ee57600080fd5b50356001600160a01b0316611c3b565b6103cc6004803603602081101561081457600080fd5b50356001600160a01b0316611cf5565b6103cc6004803603602081101561083a57600080fd5b50356001600160a01b0316611ded565b6103cc611ec1565b6103cc611f2b565b61053b6004803603602081101561087057600080fd5b50356001600160a01b0316612058565b6103cc6004803603602081101561089657600080fd5b50356001600160a01b0316612073565b61059061214d565b6103cc600480360360208110156108c457600080fd5b503561215c565b6103cc600480360360208110156108e157600080fd5b8101906020810181356401000000008111156108fc57600080fd5b82018360208201111561090e57600080fd5b8035906020019184602083028401116401000000008311171561093057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506121c2945050505050565b6103cc6004803603602081101561098457600080fd5b50356001600160a01b0316612250565b6103cc600480360360208110156109aa57600080fd5b50356001600160a01b0316612265565b6103cc61227a565b610590612318565b6103cc600480360360208110156109e057600080fd5b50356001600160a01b0316612327565b6103cc6123eb565b61040e6124e4565b6103cc60048036036040811015610a1657600080fd5b506001600160a01b038135169060200135612504565b6103cc60048036036020811015610a4257600080fd5b5035612598565b6103cc60048036036040811015610a5f57600080fd5b506001600160a01b0381351690602001356126f3565b6103cc60048036036020811015610a8b57600080fd5b50356001600160a01b03166128ad565b6105906128c2565b6103cc60048036036040811015610ab957600080fd5b506001600160a01b0381351690602001356128d1565b61053b60048036036040811015610ae557600080fd5b506001600160a01b03813581169160200135166129d8565b61059060048036036020811015610b1357600080fd5b5035612a03565b6103cc60048036036040811015610b3057600080fd5b5080356001600160a01b0316906020013560ff16612a10565b6103cc60048036036020811015610b5f57600080fd5b50356001600160a01b0316612b53565b6103cc60048036036040811015610b8557600080fd5b506001600160a01b038135169060200135612c0b565b6103cc60048036036020811015610bb157600080fd5b50356001600160a01b0316612e34565b610590612f1a565b6103cc60048036036040811015610bdf57600080fd5b5080356001600160a01b0316906020013560ff16612f29565b60216020526000908152604090205460ff1681565b602080526000908152604090205460ff1681565b604051806040016040528060098152602001681254d51054911554d560ba1b81525081565b60008160026000610c5561304b565b6001600160a01b0390811682526020808301939093526040918201600090812091881680825291909352912091909155610c8d61304b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a350600192915050565b6004546000906001600160a01b03163314610d26576040805162461bcd60e51b81526020600482015260166024820152600080516020613842833981519152604482015290519081900360640190fd5b600f60ff831610610d3657600080fd5b6001600160a01b038316610d4957600080fd5b6000600f60ff8416818110610d5a57fe5b01546001600160a01b031614610d6f57600080fd5b6001600160a01b03831660009081526021602052604090205460ff1615610d9557600080fd5b6001600160a01b0383166000908152602160205260409020805460ff1916600117905582600f60ff8416818110610dc857fe5b0180546001600160a01b0319166001600160a01b03928316179055604051908416907f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2690600090a250600192915050565b6004546000906001600160a01b03163314610e69576040805162461bcd60e51b81526020600482015260166024820152600080516020613842833981519152604482015290519081900360640190fd5b600360ff831610610e7957600080fd5b6001600160a01b038316610e8c57600080fd5b826001600160a01b031660098360ff1660038110610ea657fe5b01546001600160a01b031614610ebb57600080fd5b6001600160a01b0383166000908152601e60205260408120805460ff19169055600960ff841660038110610eeb57fe5b0180546001600160a01b0319166001600160a01b039283161790556040805160ff851681529051918516917fe5cf3dc480ba1c4827cecadd49be26e6e198b33c2ea33f05fb1782e01113f6ee916020908290030190a250600192915050565b6005546000906001600160a01b03163314610fa4576040805162461bcd60e51b81526020600482015260156024820152742db6b2332eb4b9903737ba102932b1b630b4b6b2b960591b604482015290519081900360640190fd5b604080516370a0823160e01b815230600482015290516000916001600160a01b038516916370a0823191602480820192602092909190829003018186803b158015610fee57600080fd5b505afa158015611002573d6000803e3d6000fd5b505050506040513d602081101561101857600080fd5b505160045490915061103d906001600160a01b0385811691168363ffffffff61304f16565b604080516001600160a01b038516815290517fe72256d5cb67d3bffde3117833ae3ddbd526538f54c86fe203f6072d38a10b279181900360200190a150600192915050565b6001545b90565b6006546000906001600160a01b031633146110e6576040805162461bcd60e51b81526020600482015260186024820152772db6b2332eb4b9903737ba103a37b5b2b726b0b730b3b2b960411b604482015290519081900360640190fd5b6001600160a01b0382166000908152601f602052604090205460ff16151560011461111057600080fd5b6001600160a01b0382166000818152601f6020526040808220805460ff19169055517fc01942a7ec3d9c3d22e511759a3e46a30a0fd5e790aaa310d31a8affe21266709190a2506001919050565b600c816003811061116b57fe5b01546001600160a01b0316905081565b60245460009060ff1615806111b557506021600061119761304b565b6001600160a01b0316815260208101919091526040016000205460ff165b6111be57600080fd5b6007546001600160a01b0316331415611219576040805162461bcd60e51b815260206004820152601860248201527716db5919975a5cc81dda5d1a191c985dd85b15d85b1b195d60421b604482015290519081900360640190fd5b60085484906001600160a01b038083169116141561123657600080fd5b61123e61304b565b6008546001600160a01b038281169116141561125957600080fd5b61126161304b565b6001600160a01b03811660009081526022602052604090205460ff161561128757600080fd5b6001600160a01b038716600090815260226020526040902054879060ff16156112af57600080fd5b6001600160a01b0388166000908152601f6020526040902054889060ff1615611317576040805162461bcd60e51b815260206004820152601560248201527416db5919975a5cc811195c1bdcda5d15d85b1b195d605a1b604482015290519081900360640190fd5b86670de0b6b3a764000081061561135f5760405162461bcd60e51b81526004018080602001828103825260388152602001806138826038913960400191505060405180910390fd5b61136a8a8a8a6130e9565b9a9950505050505050505050565b6006546001600160a01b031681565b6004546000906001600160a01b031633146113d7576040805162461bcd60e51b81526020600482015260166024820152600080516020613842833981519152604482015290519081900360640190fd5b6006546001600160a01b03838116911614156113f257600080fd5b600680546001600160a01b0319166001600160a01b0384169081179091556040517fa4096bd981a9cf88955e13205ac2dc49a0a6bc2bcb59f19399c87952482266fd90600090a2506001919050565b60236020526000908152604090205460ff1681565b6003546000906001600160a01b031633146114b2576040805162461bcd60e51b81526020600482015260176024820152762db6b2332eb4b9903737ba102434b23232b727bbb732b960491b604482015290519081900360640190fd5b6001600160a01b0382166114c557600080fd5b600480546001600160a01b0319166001600160a01b0384811691909117918290556040519116907f94b17f1a4844062cbed00809347b0f8149fc88c5a3ea720c7aed42c559eed46d90600090a2506001919050565b6b204fce5e3e2502611000000081565b6008546000906001600160a01b0316331461154457600080fd5b61154c6132b7565b61159d576040805162461bcd60e51b815260206004820152601860248201527f5f766f7465526573756c74206973206e6f742076616c69640000000000000000604482015290519081900360640190fd5b6004546115b3906001600160a01b031683613471565b50600192915050565b601281565b3360009081526021602052604081205460ff16611619576040805162461bcd60e51b81526020600482015260116024820152702db6b2332eb4b9903737ba1027bbb732b960791b604482015290519081900360640190fd5b6001600160a01b03821660009081526023602052604090205460ff1661163e57600080fd5b6001600160a01b0382166000818152602360209081526040808320805460ff191690558051928352517fb24e6647db2742a3439d0a374e892f89a5a8f4619d2f5c5ed911d39a2516a47c9281900390910190a2506001600160a01b031660009081526023602052604090205460ff1690565b6004546000906001600160a01b03163314611700576040805162461bcd60e51b81526020600482015260166024820152600080516020613842833981519152604482015290519081900360640190fd5b60245460ff1661170f57600080fd5b6024805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61174261304b565b604080516001600160a01b039092168252519081900360200190a15060245460ff1690565b6001600160a01b031660009081526022602052604090205460ff161590565b6004546000906001600160a01b031633146117d6576040805162461bcd60e51b81526020600482015260166024820152600080516020613842833981519152604482015290519081900360640190fd5b6007546001600160a01b03838116911614156117f157600080fd5b600780546001600160a01b0319166001600160a01b0384169081179091556040517f0379a2102e7ca040ed208e8d6d03afc1cc22075b657aa17a984de0c2f1ad898190600090a2506001919050565b6007546001600160a01b031681565b6004546000906001600160a01b0316331461189f576040805162461bcd60e51b81526020600482015260166024820152600080516020613842833981519152604482015290519081900360640190fd5b600f60ff8316106118af57600080fd5b6001600160a01b0383166118c257600080fd5b826001600160a01b0316600f8360ff16600f81106118dc57fe5b01546001600160a01b0316146118f157600080fd5b6001600160a01b0383166000908152602160205260408120805460ff19169055600f60ff841681811061192057fe5b0180546001600160a01b0319166001600160a01b03928316179055604051908416907f1e64d9a491033a9731fa82493f0ab60e9f74294eca27edd93629f1fbaa15d28790600090a250600192915050565b6009816003811061116b57fe5b670de0b6b3a764000081565b60245460ff1681565b6004546000906001600160a01b031633146119e3576040805162461bcd60e51b81526020600482015260166024820152600080516020613842833981519152604482015290519081900360640190fd5b600360ff8316106119f357600080fd5b6001600160a01b038316611a0657600080fd5b6000600960ff841660038110611a1857fe5b01546001600160a01b031614611a2d57600080fd5b6001600160a01b0383166000908152601e602052604090205460ff1615611a5357600080fd5b6001600160a01b0383166000908152601e60205260409020805460ff1916600117905582600960ff841660038110611a8757fe5b0180546001600160a01b0319166001600160a01b039283161790556040805160ff851681529051918516917fc0b35637b759e3e6eac95537026e7bc5e3541abe824e72ce8f124830f08f4cc8916020908290030190a250600192915050565b60008060026000611af561304b565b6001600160a01b0390811682526020808301939093526040918201600090812091881681529252902054905080831115611b6657600060026000611b3761304b565b6001600160a01b0390811682526020808301939093526040918201600090812091891681529252902055611bad565b611b76818463ffffffff6135f116565b60026000611b8261304b565b6001600160a01b03908116825260208083019390935260409182016000908120918916815292529020555b836001600160a01b0316611bbf61304b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560026000611bf561304b565b6001600160a01b03908116825260208083019390935260409182016000908120918b16815290835281902054815190815290519081900390910190a35060019392505050565b6004546000906001600160a01b03163314611c8b576040805162461bcd60e51b81526020600482015260166024820152600080516020613842833981519152604482015290519081900360640190fd5b6008546001600160a01b0383811691161415611ca657600080fd5b600880546001600160a01b0319166001600160a01b0384169081179091556040517fd8149b70ddad9bbd6b30f54a45a56b25605c1f070d7886906df230183b791ae390600090a2506001919050565b3360009081526021602052604081205460ff16611d4d576040805162461bcd60e51b81526020600482015260116024820152702db6b2332eb4b9903737ba1027bbb732b960791b604482015290519081900360640190fd5b6001600160a01b03821660009081526023602052604090205460ff1615611d7357600080fd5b6001600160a01b038216600081815260236020908152604091829020805460ff19166001908117909155825190815291517fb24e6647db2742a3439d0a374e892f89a5a8f4619d2f5c5ed911d39a2516a47c9281900390910190a2506001600160a01b031660009081526023602052604090205460ff1690565b6006546000906001600160a01b03163314611e4a576040805162461bcd60e51b81526020600482015260186024820152772db6b2332eb4b9903737ba103a37b5b2b726b0b730b3b2b960411b604482015290519081900360640190fd5b6001600160a01b0382166000908152601f602052604090205460ff1615611e7057600080fd5b6001600160a01b0382166000818152601f6020526040808220805460ff19166001179055517f7c4977f0d6d82a995aca6d8a362fe97ea99ed30b6c01735e6e542acff7bd99939190a2506001919050565b6003546000906001600160a01b03163314611f1d576040805162461bcd60e51b81526020600482015260176024820152762db6b2332eb4b9903737ba102434b23232b727bbb732b960491b604482015290519081900360640190fd5b6004546001600160a01b0316ff5b6000611f3561304b565b6001600160a01b0381166000908152601e602052604090205460ff161515600114611f9b576040805162461bcd60e51b81526020600482015260116024820152705b6d64665d6973206e6f74204a7564676560781b604482015290519081900360640190fd5b60256000611fa761304b565b6001600160a01b0316815260208101919091526040016000205460ff16151560011461201a576040805162461bcd60e51b815260206004820152601d60248201527f766f74656420726573756c7420616c72656164792069732066616c7365000000604482015290519081900360640190fd5b60006025600061202861304b565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055506001919050565b6001600160a01b031660009081526020819052604090205490565b6004546000906001600160a01b031633146120c3576040805162461bcd60e51b81526020600482015260166024820152600080516020613842833981519152604482015290519081900360640190fd5b6001600160a01b03821660009081526022602052604090205460ff166120e857600080fd5b6001600160a01b038216600081815260226020526040808220805460ff19169055517faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a549190a2506001600160a01b031660009081526022602052604090205460ff1690565b6008546001600160a01b031681565b6004546000906001600160a01b031633146121ac576040805162461bcd60e51b81526020600482015260166024820152600080516020613842833981519152604482015290519081900360640190fd5b6008546115b3906001600160a01b031683613471565b6006546000906001600160a01b0316331461221f576040805162461bcd60e51b81526020600482015260186024820152772db6b2332eb4b9903737ba103a37b5b2b726b0b730b3b2b960411b604482015290519081900360640190fd5b60005b82518110156115b35761224783828151811061223a57fe5b6020026020010151613603565b50600101612222565b601e6020526000908152604090205460ff1681565b60256020526000908152604090205460ff1681565b3360009081526021602052604081205460ff166122d2576040805162461bcd60e51b81526020600482015260116024820152702db6b2332eb4b9903737ba1027bbb732b960791b604482015290519081900360640190fd5b60245460ff16156122e257600080fd5b6024805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861174261304b565b6004546001600160a01b031681565b6003546000906001600160a01b03163314612383576040805162461bcd60e51b81526020600482015260176024820152762db6b2332eb4b9903737ba102434b23232b727bbb732b960491b604482015290519081900360640190fd5b6001600160a01b03821661239657600080fd5b600380546001600160a01b0319166001600160a01b0384811691909117918290556040519116907fed12844517c22c2de717b33333c74477d9e6a0d043db15e209949bc283f2dd5990600090a2506001919050565b60006123f561304b565b6001600160a01b0381166000908152601e602052604090205460ff16151560011461245b576040805162461bcd60e51b81526020600482015260116024820152705b6d64665d6973206e6f74204a7564676560781b604482015290519081900360640190fd5b6025600061246761304b565b6001600160a01b0316815260208101919091526040016000205460ff16156124d6576040805162461bcd60e51b815260206004820152601c60248201527f766f74656420726573756c7420616c7265616479206973207472756500000000604482015290519081900360640190fd5b60016025600061202861304b565b604051806040016040528060048152602001631254d11560e21b81525081565b33600090815260208052604081205460ff1661255c576040805162461bcd60e51b81526020600482015260126024820152712db6b2332eb4b9903737ba10213ab93732b960711b604482015290519081900360640190fd5b6001600160a01b038316600090815260236020526040902054839060ff1661258357600080fd5b61258d848461373a565b506001949350505050565b6003546000906001600160a01b031633146125f4576040805162461bcd60e51b81526020600482015260176024820152762db6b2332eb4b9903737ba102434b23232b727bbb732b960491b604482015290519081900360640190fd5b600154612607908363ffffffff61382e16565b6b204fce5e3e25026110000000101561261f57600080fd5b600154612632908363ffffffff61382e16565b6001556004546001600160a01b0316600090815260208190526040902054612660908363ffffffff61382e16565b600480546001600160a01b0390811660009081526020818152604091829020949094559154825186815292519116927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885928290030190a26004546040805184815290516001600160a01b0390921691600091600080516020613862833981519152919081900360200190a3506001919050565b6007546000906001600160a01b0316331415612751576040805162461bcd60e51b815260206004820152601860248201527716db5919975a5cc81dda5d1a191c985dd85b15d85b1b195d60421b604482015290519081900360640190fd5b60245460ff16158061278857506021600061276a61304b565b6001600160a01b0316815260208101919091526040016000205460ff165b61279157600080fd5b61279961304b565b6001600160a01b03811660009081526022602052604090205460ff16156127bf57600080fd5b6127c761304b565b6008546001600160a01b03828116911614156127e257600080fd5b6127ea61304b565b6001600160a01b0381166000908152601f602052604090205460ff1615612850576040805162461bcd60e51b815260206004820152601560248201527416db5919975a5cc811195c1bdcda5d15d85b1b195d605a1b604482015290519081900360640190fd5b84670de0b6b3a76400008106156128985760405162461bcd60e51b81526004018080602001828103825260388152602001806138826038913960400191505060405180910390fd5b6128a28787613471565b979650505050505050565b601f6020526000908152604090205460ff1681565b6005546001600160a01b031681565b600061291982600260006128e361304b565b6001600160a01b03908116825260208083019390935260409182016000908120918916815292529020549063ffffffff61382e16565b6002600061292561304b565b6001600160a01b039081168252602080830193909352604091820160009081209188168082529190935291209190915561295d61304b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256002600061299361304b565b6001600160a01b03908116825260208083019390935260409182016000908120918a16815290835281902054815190815290519081900390910190a350600192915050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600f81600f811061116b57fe5b6004546000906001600160a01b03163314612a60576040805162461bcd60e51b81526020600482015260166024820152600080516020613842833981519152604482015290519081900360640190fd5b600360ff831610612a7057600080fd5b6001600160a01b038316612a8357600080fd5b6000600c60ff841660038110612a9557fe5b01546001600160a01b031614612aaa57600080fd5b6001600160a01b038316600090815260208052604090205460ff1615612acf57600080fd5b6001600160a01b03831660009081526020805260409020805460ff1916600117905582600c60ff841660038110612b0257fe5b0180546001600160a01b0319166001600160a01b03928316179055604051908416907fb2bea1aacb52292e22554458b37393c5c9afbdc4bb5edddf26805d0ad791005a90600090a250600192915050565b6004546000906001600160a01b03163314612ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020613842833981519152604482015290519081900360640190fd5b6001600160a01b038216612bb657600080fd5b600580546001600160a01b0319166001600160a01b0384811691909117918290556040519116907f746e4dbb4fcada0af54a5df33c0f46859c5ae98432a8e0b81213037872227a2d90600090a2506001919050565b6006546000906001600160a01b03163314612c68576040805162461bcd60e51b81526020600482015260186024820152772db6b2332eb4b9903737ba103a37b5b2b726b0b730b3b2b960411b604482015290519081900360640190fd5b60245460ff161580612c9f575060216000612c8161304b565b6001600160a01b0316815260208101919091526040016000205460ff165b612ca857600080fd5b81670de0b6b3a7640000810615612cf05760405162461bcd60e51b81526004018080602001828103825260388152602001806138826038913960400191505060405180910390fd5b6001600160a01b038416612d0357600080fd5b6007546001600160a01b0316600090815260208190526040902054831115612d2a57600080fd5b6007546001600160a01b0316600090815260208190526040902054612d55908463ffffffff6135f116565b6007546001600160a01b039081166000908152602081905260408082209390935590861681522054612d8d908463ffffffff61382e16565b6001600160a01b03808616600081815260208181526040918290209490945560075481518881529151929493169260008051602061386283398151915292918290030190a36007546001600160a01b038086169116612dea61304b565b6001600160a01b03167fb561d41c3d979d72c81dbf30253e629d86f32b86493121173da6e9b88e51b98f866040518082815260200191505060405180910390a45060019392505050565b3360009081526021602052604081205460ff16612e8c576040805162461bcd60e51b81526020600482015260116024820152702db6b2332eb4b9903737ba1027bbb732b960791b604482015290519081900360640190fd5b6001600160a01b03821660009081526022602052604090205460ff1615612eb257600080fd5b6001600160a01b038216600081815260226020526040808220805460ff19166001179055517fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b8559190a2506001600160a01b031660009081526022602052604090205460ff1690565b6003546001600160a01b031681565b6004546000906001600160a01b03163314612f79576040805162461bcd60e51b81526020600482015260166024820152600080516020613842833981519152604482015290519081900360640190fd5b600360ff831610612f8957600080fd5b6001600160a01b038316612f9c57600080fd5b826001600160a01b0316600c8360ff1660038110612fb657fe5b01546001600160a01b031614612fcb57600080fd5b6001600160a01b03831660009081526020805260408120805460ff19169055600c60ff841660038110612ffa57fe5b0180546001600160a01b0319166001600160a01b03928316179055604051908416907f560f25f18d7de8bf147a02a300cdcfd8c47e2ca258b2ead7d9e331f29ee488d990600090a250600192915050565b3390565b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156130af57600080fd5b505af11580156130c3573d6000803e3d6000fd5b505050506040513d60208110156130d957600080fd5b50516130e457600080fd5b505050565b60006001600160a01b0383166130fe57600080fd5b6001600160a01b03841660009081526020819052604090205482111561312357600080fd5b6001600160a01b03841660009081526002602052604081209061314461304b565b6001600160a01b03166001600160a01b031681526020019081526020016000205482111561317157600080fd5b6001600160a01b03841660009081526020819052604090205461319a908363ffffffff6135f116565b6001600160a01b0380861660009081526020819052604080822093909355908516815220546131cf908363ffffffff61382e16565b6001600160a01b03808516600090815260208181526040808320949094559187168152600290915290812061322f9184919061320961304b565b6001600160a01b031681526020810191909152604001600020549063ffffffff6135f116565b6001600160a01b03851660009081526002602052604081209061325061304b565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550826001600160a01b0316846001600160a01b0316600080516020613862833981519152846040518082815260200191505060405180910390a35060019392505050565b6009546000906001600160a01b031661330e576040805162461bcd60e51b81526020600482015260146024820152731a9d5919d94c081a5cc81b9bdd081cd95d1d195960621b604482015290519081900360640190fd5b600a546001600160a01b0316613362576040805162461bcd60e51b81526020600482015260146024820152731a9d5919d94c481a5cc81b9bdd081cd95d1d195960621b604482015290519081900360640190fd5b600b546001600160a01b03166133b6576040805162461bcd60e51b81526020600482015260146024820152731a9d5919d94c881a5cc81b9bdd081cd95d1d195960621b604482015290519081900360640190fd5b6000805b600360ff82161015613453576025600060098360ff16600381106133da57fe5b01546001600160a01b0316815260208101919091526040016000205460ff1615156001141561344b5760006025600060098460ff166003811061341957fe5b01546001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055600191909101905b6001016133ba565b5060028160ff1610613469576001915050611086565b600091505090565b60006001600160a01b0383166134ce576040805162461bcd60e51b815260206004820152601e60248201527f5b7472616e736665725d6973206e6f742076616c696420616464726573730000604482015290519081900360640190fd5b6000806134d961304b565b6001600160a01b03166001600160a01b031681526020019081526020016000205482111561354e576040805162461bcd60e51b815260206004820152601b60248201527f5b7472616e736665725d76616c756520697320746f6f206d7563680000000000604482015290519081900360640190fd5b61355d8260008061320961304b565b60008061356861304b565b6001600160a01b039081168252602080830193909352604091820160009081209490945586168352908290529020546135a7908363ffffffff61382e16565b6001600160a01b038416600081815260208181526040918290209390935580518581529051919233926000805160206138628339815191529281900390910190a350600192915050565b6000828211156135fd57fe5b50900390565b6001600160a01b0381166000908152601f6020526040812054829060ff161515600114613677576040805162461bcd60e51b815260206004820152601960248201527f5b6d64665d6973206e6f74204465706f73697457616c6c657400000000000000604482015290519081900360640190fd5b6001600160a01b03831661368a57600080fd5b6001600160a01b0383166000908152602081905260409020546136ad81806135f1565b6001600160a01b0380861660009081526020819052604080822093909355600754909116815220546136e5908263ffffffff61382e16565b600780546001600160a01b039081166000908152602081815260409182902094909455915482518581529251908216939188169260008051602061386283398151915292908290030190a35060019392505050565b6001600160a01b03821660009081526020819052604081205482111561375f57600080fd5b6001600160a01b038316600090815260208190526040902054613788908363ffffffff6135f116565b6001600160a01b0384166000908152602081905260409020556001546137b4908363ffffffff6135f116565b6001556040805183815290516001600160a01b038516917f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b1919081900360200190a26040805183815290516000916001600160a01b038616916000805160206138628339815191529181900360200190a350600192915050565b8181018281101561383b57fe5b9291505056fe5b6d64665d6973206e6f742053757065724f776e657200000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5b6d64665d556e61626c6520746f206d6f6469667920746f6b656e2062616c616e6365732061742074686973206772616e756c6172697479a265627a7a72305820ed44156263610ac19988f2ca67afa85e7668bfe2433d7a1ead991b0879721a8f64736f6c634300050a0032

Deployed Bytecode Sourcemap

20376:5560:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20376:5560:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9413:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9413:39:0;-1:-1:-1;;;;;9413:39:0;;:::i;:::-;;;;;;;;;;;;;;;;;;9367;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9367:39:0;-1:-1:-1;;;;;9367:39:0;;:::i;20771:41::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;20771:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6216:230;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6216:230:0;;;;;;;;:::i;16083:408::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16083:408:0;;-1:-1:-1;;;;;16083:408:0;;;;;;;;:::i;13307:434::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13307:434:0;;-1:-1:-1;;;;;13307:434:0;;;;;;;;:::i;17674:291::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17674:291:0;-1:-1:-1;;;;;17674:291:0;;:::i;3306:91::-;;;:::i;:::-;;;;;;;;;;;;;;;;14074:317;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14074:317:0;-1:-1:-1;;;;;14074:317:0;;:::i;9178:38::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9178:38:0;;:::i;:::-;;;;-1:-1:-1;;;;;9178:38:0;;;;;;;;;;;;;;25154:397;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;25154:397:0;;;;;;;;;;;;;;;;;:::i;9011:35::-;;;:::i;12288:288::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12288:288:0;-1:-1:-1;;;;;12288:288:0;;:::i;18891:42::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18891:42:0;-1:-1:-1;;;;;18891:42:0;;:::i;14399:287::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14399:287:0;-1:-1:-1;;;;;14399:287:0;;:::i;20906:73::-;;;:::i;25717:214::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25717:214:0;;:::i;20819:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19360:249;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19360:249:0;-1:-1:-1;;;;;19360:249:0;;:::i;20148:191::-;;;:::i;18278:106::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18278:106:0;-1:-1:-1;;;;;18278:106:0;;:::i;11972:308::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11972:308:0;-1:-1:-1;;;;;11972:308:0;;:::i;9053:39::-;;;:::i;16499:366::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16499:366:0;;-1:-1:-1;;;;;16499:366:0;;;;;;;;:::i;9133:38::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9133:38:0;;:::i;20986:42::-;;;:::i;19691:26::-;;;:::i;12865:434::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12865:434:0;;-1:-1:-1;;;;;12865:434:0;;;;;;;;:::i;8252:498::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8252:498:0;;;;;;;;:::i;12584:273::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12584:273:0;-1:-1:-1;;;;;12584:273:0;;:::i;19104:248::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19104:248:0;-1:-1:-1;;;;;19104:248:0;;:::i;13749:317::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13749:317:0;-1:-1:-1;;;;;13749:317:0;;:::i;21236:122::-;;;:::i;24309:232::-;;;:::i;4229:107::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4229:107:0;-1:-1:-1;;;;;4229:107:0;;:::i;18621:225::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18621:225:0;-1:-1:-1;;;;;18621:225:0;;:::i;9099:27::-;;;:::i;25559:150::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25559:150:0;;:::i;22808:210::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22808:210:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;22808:210:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;22808:210:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;22808:210:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;22808:210:0;;-1:-1:-1;22808:210:0;;-1:-1:-1;;;;;22808:210:0:i;9270:38::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9270:38:0;-1:-1:-1;;;;;9270:38:0;;:::i;20716:46::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20716:46:0;-1:-1:-1;;;;;20716:46:0;;:::i;19948:192::-;;;:::i;8932:33::-;;;:::i;14698:294::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14698:294:0;-1:-1:-1;;;;;14698:294:0;;:::i;24063:238::-;;;:::i;20861:38::-;;;:::i;21808:155::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;21808:155:0;;;;;;;;:::i;21370:430::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21370:430:0;;:::i;23598:280::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;23598:280:0;;;;;;;;:::i;9315:45::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9315:45:0;-1:-1:-1;;;;;9315:45:0;;:::i;8972:32::-;;;:::i;7422:353::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7422:353:0;;;;;;;;:::i;6782:168::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6782:168:0;;;;;;;;;;:::i;9223:38::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9223:38:0;;:::i;15273:411::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15273:411:0;;-1:-1:-1;;;;;15273:411:0;;;;;;;;:::i;15000:265::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15000:265:0;-1:-1:-1;;;;;15000:265:0;;:::i;23026:560::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;23026:560:0;;;;;;;;:::i;18392:218::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18392:218:0;-1:-1:-1;;;;;18392:218:0;;:::i;8891:34::-;;;:::i;15692:383::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15692:383:0;;-1:-1:-1;;;;;15692:383:0;;;;;;;;:::i;9413:39::-;;;;;;;;;;;;;;;:::o;9367:::-;;;;;;;;;;;;;;;:::o;20771:41::-;;;;;;;;;;;;;;-1:-1:-1;;;20771:41:0;;;;:::o;6216:230::-;6283:4;6334:6;6300:7;:21;6308:12;:10;:12::i;:::-;-1:-1:-1;;;;;6300:21:0;;;;;;;;;;;;;;;;;-1:-1:-1;6300:21:0;;;:31;;;;;;;;;;;;:40;;;;6375:12;:10;:12::i;:::-;-1:-1:-1;;;;;6366:40:0;;6399:6;6366:40;;;;;;;;;;;;;;;;;;-1:-1:-1;6434:4:0;6216:230;;;;:::o;16083:408::-;10586:10;;16158:4;;-1:-1:-1;;;;;10586:10:0;10600;10586:24;10578:59;;;;;-1:-1:-1;;;10578:59:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;10578:59:0;;;;;;;;;;;;;;;8847:2;16183:15;;;;16175:24;;;;;;-1:-1:-1;;;;;16218:19:0;;16210:28;;;;;;16286:1;16257:12;:17;;;;;;;;;;;;-1:-1:-1;;;;;16257:17:0;:31;16249:40;;;;;;-1:-1:-1;;;;;16308:13:0;;;;;;:6;:13;;;;;;;;:22;16300:31;;;;;;-1:-1:-1;;;;;16352:13:0;;;;;;:6;:13;;;;;:20;;-1:-1:-1;;16352:20:0;16368:4;16352:20;;;16359:5;16383:12;16352:20;16383:17;;;;;;;;;;:25;;-1:-1:-1;;;;;;16383:25:0;-1:-1:-1;;;;;16383:25:0;;;;;;16434:17;;;;;;;;-1:-1:-1;;16434:17:0;-1:-1:-1;16479:4:0;16083:408;;;;:::o;13307:434::-;10586:10;;13400:4;;-1:-1:-1;;;;;10586:10:0;10600;10586:24;10578:59;;;;;-1:-1:-1;;;10578:59:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;10578:59:0;;;;;;;;;;;;;;;8883:1;13425:16;;;;13417:25;;;;;;-1:-1:-1;;;;;13461:28:0;;13453:37;;;;;;13531:14;-1:-1:-1;;;;;13509:36:0;:12;13522:4;13509:18;;;;;;;;;;;-1:-1:-1;;;;;13509:18:0;:36;13501:45;;;;;;-1:-1:-1;;;;;13567:22:0;;13592:5;13567:22;;;:6;:22;;;;;:30;;-1:-1:-1;;13567:30:0;;;13610:12;13567:30;13610:18;;;;;;;;;;:31;;-1:-1:-1;;;;;;13610:31:0;-1:-1:-1;;;;;13610:31:0;;;;;;13667:34;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13729:4:0;13307:434;;;;:::o;17674:291::-;11014:9;;17746:4;;-1:-1:-1;;;;;11014:9:0;11027:10;11014:23;11006:57;;;;;-1:-1:-1;;;11006:57:0;;;;;;;;;;;;-1:-1:-1;;;11006:57:0;;;;;;;;;;;;;;;17790:31;;;-1:-1:-1;;;17790:31:0;;17815:4;17790:31;;;;;;17772:15;;-1:-1:-1;;;;;17790:16:0;;;;;:31;;;;;;;;;;;;;;;:16;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;17790:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17790:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17790:31:0;17854:10;;17790:31;;-1:-1:-1;17834:40:0;;-1:-1:-1;;;;;17834:19:0;;;;17854:10;17790:31;17834:40;:19;:40;:::i;:::-;17900:29;;;-1:-1:-1;;;;;17900:29:0;;;;;;;;;;;;;;;-1:-1:-1;17953:4:0;;17674:291;-1:-1:-1;;17674:291:0:o;3306:91::-;3377:12;;3306:91;;:::o;14074:317::-;11777:12;;14162:4;;-1:-1:-1;;;;;11777:12:0;11763:10;:26;11755:63;;;;;-1:-1:-1;;;11755:63:0;;;;;;;;;;;;-1:-1:-1;;;11755:63:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;14197:29:0;;;;;;:13;:29;;;;;;;;:37;;:29;:37;14189:46;;;;;;-1:-1:-1;;;;;14256:29:0;;14288:5;14256:29;;;:13;:29;;;;;;:37;;-1:-1:-1;;14256:37:0;;;14319:32;;;14288:5;14319:32;-1:-1:-1;14379:4:0;14074:317;;;:::o;9178:38::-;;;;;;;;;;;;-1:-1:-1;;;;;9178:38:0;;-1:-1:-1;9178:38:0;:::o;25154:397::-;19886:6;;25476:4;;19886:6;;19885:7;;:31;;;19896:6;:20;19903:12;:10;:12::i;:::-;-1:-1:-1;;;;;19896:20:0;;;;;;;;;;;;-1:-1:-1;19896:20:0;;;;19885:31;19877:40;;;;;;11901:16;;-1:-1:-1;;;;;11901:16:0;11887:10;:30;;11879:67;;;;;-1:-1:-1;;;11879:67:0;;;;;;;;;;;;-1:-1:-1;;;11879:67:0;;;;;;;;;;;;;;;10928:4;;25317:5;;-1:-1:-1;;;;;10928:13:0;;;:4;;:13;;10920:22;;;;;;25336:12;:10;:12::i;:::-;10928:4;;-1:-1:-1;;;;;10928:13:0;;;:4;;:13;;10920:22;;;;;;25369:12;:10;:12::i;:::-;-1:-1:-1;;;;;18228:17:0;;;;;;:11;:17;;;;;;;;18227:18;18219:27;;;;;;-1:-1:-1;;;;;18228:17:0;;;;;;:11;:17;;;;;;25397:5;;18228:17;;18227:18;18219:27;;;;;;-1:-1:-1;;;;;11638:19:0;;;;;;:13;:19;;;;;;25430:5;;11638:19;;:28;11630:62;;;;;-1:-1:-1;;;11630:62:0;;;;;;;;;;;;-1:-1:-1;;;11630:62:0;;;;;;;;;;;;;;;25454:6;21024:4;25454:6;23948:21;:26;23940:95;;;;-1:-1:-1;;;23940:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25505:38;25524:5;25531:3;25536:6;25505:18;:38::i;:::-;25498:45;25154:397;-1:-1:-1;;;;;;;;;;25154:397:0:o;9011:35::-;;;-1:-1:-1;;;;;9011:35:0;;:::o;12288:288::-;10586:10;;12387:4;;-1:-1:-1;;;;;10586:10:0;10600;10586:24;10578:59;;;;;-1:-1:-1;;;10578:59:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;10578:59:0;;;;;;;;;;;;;;;12412:12;;-1:-1:-1;;;;;12412:32:0;;;:12;;:32;;12404:41;;;;;;12458:12;:31;;-1:-1:-1;;;;;;12458:31:0;-1:-1:-1;;;;;12458:31:0;;;;;;;;12507:37;;;;-1:-1:-1;;12507:37:0;-1:-1:-1;12564:4:0;12288:288;;;:::o;18891:42::-;;;;;;;;;;;;;;;:::o;14399:287::-;11137:11;;14491:4;;-1:-1:-1;;;;;11137:11:0;11152:10;11137:25;11129:61;;;;;-1:-1:-1;;;11129:61:0;;;;;;;;;;;;-1:-1:-1;;;11129:61:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;14516:27:0;;14508:36;;;;;;14565:10;:26;;-1:-1:-1;;;;;;14565:26:0;-1:-1:-1;;;;;14565:26:0;;;;;;;;;;;14617:29;;14635:10;;;14617:29;;-1:-1:-1;;14617:29:0;-1:-1:-1;14674:4:0;14399:287;;;:::o;20906:73::-;20947:32;20906:73;:::o;25717:214::-;10828:4;;25789;;-1:-1:-1;;;;;10828:4:0;10836:10;10828:18;10820:27;;;;;;25814:13;:11;:13::i;:::-;25806:50;;;;;-1:-1:-1;;;25806:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;25882:10;;25867:34;;-1:-1:-1;;;;;25882:10:0;25894:6;25867:14;:34::i;:::-;-1:-1:-1;25919:4:0;;25717:214;-1:-1:-1;;25717:214:0:o;20819:35::-;20852:2;20819:35;:::o;19360:249::-;11265:10;19421:4;11258:18;;;:6;:18;;;;;;;;11250:48;;;;;-1:-1:-1;;;11250:48:0;;;;;;;;;;;;-1:-1:-1;;;11250:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;19446:16:0;;;;;;:10;:16;;;;;;;;19438:25;;;;;;-1:-1:-1;;;;;19484:16:0;;19503:5;19484:16;;;:10;:16;;;;;;;;:24;;-1:-1:-1;;19484:24:0;;;19534:23;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19585:16:0;;;;;:10;:16;;;;;;;;;19360:249::o;20148:191::-;10586:10;;20198:4;;-1:-1:-1;;;;;10586:10:0;10600;10586:24;10578:59;;;;;-1:-1:-1;;;10578:59:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;10578:59:0;;;;;;;;;;;;;;;20223:6;;;;20215:15;;;;;;20243:6;:14;;-1:-1:-1;;20243:14:0;;;20283:22;20292:12;:10;:12::i;:::-;20283:22;;;-1:-1:-1;;;;;20283:22:0;;;;;;;;;;;;;;-1:-1:-1;20325:6:0;;;;20148:191;:::o;18278:106::-;-1:-1:-1;;;;;18359:17:0;18334:4;18359:17;;;:11;:17;;;;;;;;18358:18;;18278:106::o;11972:308::-;10586:10;;12062:4;;-1:-1:-1;;;;;10586:10:0;10600;10586:24;10578:59;;;;;-1:-1:-1;;;10578:59:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;10578:59:0;;;;;;;;;;;;;;;12097:16;;-1:-1:-1;;;;;12097:27:0;;;:16;;:27;;12089:36;;;;;;12146:16;:26;;-1:-1:-1;;;;;;12146:26:0;-1:-1:-1;;;;;12146:26:0;;;;;;;;12198:32;;;;-1:-1:-1;;12198:32:0;-1:-1:-1;12258:4:0;11972:308;;;:::o;9053:39::-;;;-1:-1:-1;;;;;9053:39:0;;:::o;16499:366::-;10586:10;;16577:4;;-1:-1:-1;;;;;10586:10:0;10600;10586:24;10578:59;;;;;-1:-1:-1;;;10578:59:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;10578:59:0;;;;;;;;;;;;;;;8847:2;16602:15;;;;16594:24;;;;;;-1:-1:-1;;;;;16637:19:0;;16629:28;;;;;;16697:5;-1:-1:-1;;;;;16676:26:0;:12;16689:3;16676:17;;;;;;;;;;;-1:-1:-1;;;;;16676:17:0;:26;16668:35;;;;;;-1:-1:-1;;;;;16716:13:0;;16732:5;16716:13;;;:6;:13;;;;;:21;;-1:-1:-1;;16716:21:0;;;16750:12;16716:21;16750:17;;;;;;;;;;:30;;-1:-1:-1;;;;;;16750:30:0;-1:-1:-1;;;;;16750:30:0;;;;;;16806:19;;;;;;;;-1:-1:-1;;16806:19:0;-1:-1:-1;16853:4:0;16499:366;;;;:::o;9133:38::-;;;;;;;;;20986:42;21024:4;20986:42;:::o;19691:26::-;;;;;;:::o;12865:434::-;10586:10;;12945:4;;-1:-1:-1;;;;;10586:10:0;10600;10586:24;10578:59;;;;;-1:-1:-1;;;10578:59:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;10578:59:0;;;;;;;;;;;;;;;8883:1;12970:16;;;;12962:25;;;;;;-1:-1:-1;;;;;13006:23:0;;12998:32;;;;;;13079:1;13049:12;:18;;;;;;;;;;;;-1:-1:-1;;;;;13049:18:0;:32;13041:41;;;;;;-1:-1:-1;;;;;13101:17:0;;;;;;:6;:17;;;;;;;;:26;13093:35;;;;;;-1:-1:-1;;;;;13141:17:0;;;;;;:6;:17;;;;;:24;;-1:-1:-1;;13141:24:0;13161:4;13141:24;;;13148:9;13176:12;13141:24;13176:18;;;;;;;;;;:30;;-1:-1:-1;;;;;;13176:30:0;-1:-1:-1;;;;;13176:30:0;;;;;;13232:27;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13287:4:0;12865:434;;;;:::o;8252:498::-;8360:4;8379:16;8398:7;:21;8406:12;:10;:12::i;:::-;-1:-1:-1;;;;;8398:21:0;;;;;;;;;;;;;;;;;-1:-1:-1;8398:21:0;;;:31;;;;;;;;;;;-1:-1:-1;8444:27:0;;;8440:180;;;8522:1;8488:7;:21;8496:12;:10;:12::i;:::-;-1:-1:-1;;;;;8488:21:0;;;;;;;;;;;;;;;;;-1:-1:-1;8488:21:0;;;:31;;;;;;;;;:35;8440:180;;;8584:30;:8;8597:16;8584:30;:12;:30;:::i;:::-;8550:7;:21;8558:12;:10;:12::i;:::-;-1:-1:-1;;;;;8550:21:0;;;;;;;;;;;;;;;;;-1:-1:-1;8550:21:0;;;:31;;;;;;;;;:64;8440:180;8668:8;-1:-1:-1;;;;;8645:65:0;8654:12;:10;:12::i;:::-;-1:-1:-1;;;;;8645:65:0;;8678:7;:21;8686:12;:10;:12::i;:::-;-1:-1:-1;;;;;8678:21:0;;;;;;;;;;;;;;;;;-1:-1:-1;8678:21:0;;;:31;;;;;;;;;;;;8645:65;;;;;;;;;;;;;;;;-1:-1:-1;8738:4:0;;8252:498;-1:-1:-1;;;8252:498:0:o;12584:273::-;10586:10;;12672:4;;-1:-1:-1;;;;;10586:10:0;10600;10586:24;10578:59;;;;;-1:-1:-1;;;10578:59:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;10578:59:0;;;;;;;;;;;;;;;12707:4;;-1:-1:-1;;;;;12707:16:0;;;:4;;:16;;12699:25;;;;;;12745:4;:15;;-1:-1:-1;;;;;;12745:15:0;-1:-1:-1;;;;;12745:15:0;;;;;;;;12786:21;;;;-1:-1:-1;;12786:21:0;-1:-1:-1;12835:4:0;12584:273;;;:::o;19104:248::-;11265:10;19165:4;11258:18;;;:6;:18;;;;;;;;11250:48;;;;;-1:-1:-1;;;11250:48:0;;;;;;;;;;;;-1:-1:-1;;;11250:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;19191:16:0;;;;;;:10;:16;;;;;;;;19190:17;19182:26;;;;;;-1:-1:-1;;;;;19229:16:0;;;;;;:10;:16;;;;;;;;;:23;;-1:-1:-1;;19229:23:0;19248:4;19229:23;;;;;;19278:22;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19328:16:0;;;;;:10;:16;;;;;;;;;19104:248::o;13749:317::-;11777:12;;13837:4;;-1:-1:-1;;;;;11777:12:0;11763:10;:26;11755:63;;;;;-1:-1:-1;;;11755:63:0;;;;;;;;;;;;-1:-1:-1;;;11755:63:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;13872:29:0;;;;;;:13;:29;;;;;;;;:38;13864:47;;;;;;-1:-1:-1;;;;;13932:29:0;;;;;;:13;:29;;;;;;:36;;-1:-1:-1;;13932:36:0;13964:4;13932:36;;;13994:32;;;13932:29;13994:32;-1:-1:-1;14054:4:0;13749:317;;;:::o;21236:122::-;11137:11;;21287:4;;-1:-1:-1;;;;;11137:11:0;11152:10;11137:25;11129:61;;;;;-1:-1:-1;;;11129:61:0;;;;;;;;;;;;-1:-1:-1;;;11129:61:0;;;;;;;;;;;;;;;21317:10;;-1:-1:-1;;;;;21317:10:0;21304:24;24309:232;24369:4;24346:12;:10;:12::i;:::-;-1:-1:-1;;;;;10718:13:0;;;;;;:6;:13;;;;;;;;:21;;:13;:21;10710:51;;;;;-1:-1:-1;;;10710:51:0;;;;;;;;;;;;-1:-1:-1;;;10710:51:0;;;;;;;;;;;;;;;24394:7;:21;24402:12;:10;:12::i;:::-;-1:-1:-1;;;;;24394:21:0;;;;;;;;;;;;-1:-1:-1;24394:21:0;:28;;;:36;;:28;:36;24386:78;;;;;-1:-1:-1;;;24386:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;24506:5;24475:7;:21;24483:12;:10;:12::i;:::-;-1:-1:-1;;;;;24475:21:0;;;;;;;;;;;;-1:-1:-1;24475:21:0;:36;;-1:-1:-1;;24475:36:0;;;;;;;;;;-1:-1:-1;;;24309:232:0;-1:-1:-1;24309:232:0:o;4229:107::-;-1:-1:-1;;;;;4312:16:0;4285:7;4312:16;;;;;;;;;;;;4229:107::o;18621:225::-;10586:10;;18687:4;;-1:-1:-1;;;;;10586:10:0;10600;10586:24;10578:59;;;;;-1:-1:-1;;;10578:59:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;10578:59:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;18712:17:0;;;;;;:11;:17;;;;;;;;18704:26;;;;;;-1:-1:-1;;;;;18743:17:0;;18763:5;18743:17;;;:11;:17;;;;;;:25;;-1:-1:-1;;18743:25:0;;;18784:17;;;18763:5;18784:17;-1:-1:-1;;;;;;18821:17:0;;;;;:11;:17;;;;;;;;;18621:225::o;9099:27::-;;;-1:-1:-1;;;;;9099:27:0;;:::o;25559:150::-;10586:10;;25634:4;;-1:-1:-1;;;;;10586:10:0;10600;10586:24;10578:59;;;;;-1:-1:-1;;;10578:59:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;10578:59:0;;;;;;;;;;;;;;;25666:4;;25651:28;;-1:-1:-1;;;;;25666:4:0;25672:6;25651:14;:28::i;22808:210::-;11777:12;;22891:4;;-1:-1:-1;;;;;11777:12:0;11763:10;:26;11755:63;;;;;-1:-1:-1;;;11755:63:0;;;;;;;;;;;;-1:-1:-1;;;11755:63:0;;;;;;;;;;;;;;;22910:9;22906:85;22929:5;:12;22925:1;:16;22906:85;;;22959:22;22972:5;22978:1;22972:8;;;;;;;;;;;;;;22959:12;:22::i;:::-;-1:-1:-1;22943:3:0;;22906:85;;9270:38;;;;;;;;;;;;;;;:::o;20716:46::-;;;;;;;;;;;;;;;:::o;19948:192::-;11265:10;19991:4;11258:18;;;:6;:18;;;;;;;;11250:48;;;;;-1:-1:-1;;;11250:48:0;;;;;;;;;;;;-1:-1:-1;;;11250:48:0;;;;;;;;;;;;;;;20027:6;;;;20026:7;20018:16;;;;;;20047:6;:13;;-1:-1:-1;;20047:13:0;20056:4;20047:13;;;20086:20;20093:12;:10;:12::i;8932:33::-;;;-1:-1:-1;;;;;8932:33:0;;:::o;14698:294::-;11137:11;;14792:4;;-1:-1:-1;;;;;11137:11:0;11152:10;11137:25;11129:61;;;;;-1:-1:-1;;;11129:61:0;;;;;;;;;;;;-1:-1:-1;;;11129:61:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;14817:28:0;;14809:37;;;;;;14867:11;:28;;-1:-1:-1;;;;;;14867:28:0;-1:-1:-1;;;;;14867:28:0;;;;;;;;;;;14921:31;;14940:11;;;14921:31;;-1:-1:-1;;14921:31:0;-1:-1:-1;14980:4:0;14698:294;;;:::o;24063:238::-;24120:4;24097:12;:10;:12::i;:::-;-1:-1:-1;;;;;10718:13:0;;;;;;:6;:13;;;;;;;;:21;;:13;:21;10710:51;;;;;-1:-1:-1;;;10710:51:0;;;;;;;;;;;;-1:-1:-1;;;10710:51:0;;;;;;;;;;;;;;;24145:7;:21;24153:12;:10;:12::i;:::-;-1:-1:-1;;;;;24145:21:0;;;;;;;;;;;;-1:-1:-1;24145:21:0;:28;;;:37;24137:78;;;;;-1:-1:-1;;;24137:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;24257:4;24226:7;:21;24234:12;:10;:12::i;20861:38::-;;;;;;;;;;;;;;-1:-1:-1;;;20861:38:0;;;;:::o;21808:155::-;11374:10;21894:4;11366:19;;;:7;:19;;;;;;;;11358:50;;;;;-1:-1:-1;;;11358:50:0;;;;;;;;;;;;-1:-1:-1;;;11358:50:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;19060:15:0;;;;;;:10;:15;;;;;;21881:3;;19060:15;;19052:24;;;;;;21913:18;21919:3;21924:6;21913:5;:18::i;:::-;-1:-1:-1;21951:4:0;;21808:155;-1:-1:-1;;;;21808:155:0:o;21370:430::-;11137:11;;21433:4;;-1:-1:-1;;;;;11137:11:0;11152:10;11137:25;11129:61;;;;;-1:-1:-1;;;11129:61:0;;;;;;;;;;;;-1:-1:-1;;;11129:61:0;;;;;;;;;;;;;;;21486:12;;:25;;21503:7;21486:25;:16;:25;:::i;:::-;20947:32;21468:43;;21460:52;;;;;;21548:12;;:25;;21565:7;21548:25;:16;:25;:::i;:::-;21533:12;:40;21626:10;;-1:-1:-1;;;;;21626:10:0;21617:8;:20;;;;;;;;;;;:33;;21642:7;21617:33;:24;:33;:::i;:::-;21603:10;;;-1:-1:-1;;;;;21603:10:0;;;21594:8;:20;;;;;;;;;;;;:56;;;;21673:10;;21668:25;;;;;;;21673:10;;;21668:25;;;;;;;;21740:10;;21719:41;;;;;;;;-1:-1:-1;;;;;21740:10:0;;;;;;-1:-1:-1;;;;;;;;;;;21719:41:0;;;;;;;;;-1:-1:-1;21788:4:0;21370:430;;;:::o;23598:280::-;11901:16;;23819:4;;-1:-1:-1;;;;;11901:16:0;11887:10;:30;;11879:67;;;;;-1:-1:-1;;;11879:67:0;;;;;;;;;;;;-1:-1:-1;;;11879:67:0;;;;;;;;;;;;;;;19886:6;;;;19885:7;;:31;;;19896:6;:20;19903:12;:10;:12::i;:::-;-1:-1:-1;;;;;19896:20:0;;;;;;;;;;;;-1:-1:-1;19896:20:0;;;;19885:31;19877:40;;;;;;23700:12;:10;:12::i;:::-;-1:-1:-1;;;;;18228:17:0;;;;;;:11;:17;;;;;;;;18227:18;18219:27;;;;;;23726:12;:10;:12::i;:::-;10928:4;;-1:-1:-1;;;;;10928:13:0;;;:4;;:13;;10920:22;;;;;;23766:12;:10;:12::i;:::-;-1:-1:-1;;;;;11638:19:0;;;;;;:13;:19;;;;;;;;:28;11630:62;;;;;-1:-1:-1;;;11630:62:0;;;;;;;;;;;;-1:-1:-1;;;11630:62:0;;;;;;;;;;;;;;;23797:6;21024:4;23797:6;23948:21;:26;23940:95;;;;-1:-1:-1;;;23940:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23843:27;23858:3;23863:6;23843:14;:27::i;:::-;23836:34;23598:280;-1:-1:-1;;;;;;;23598:280:0:o;9315:45::-;;;;;;;;;;;;;;;:::o;8972:32::-;;;-1:-1:-1;;;;;8972:32:0;;:::o;7422:353::-;7531:4;7595:48;7631:11;7595:7;:21;7603:12;:10;:12::i;:::-;-1:-1:-1;;;;;7595:21:0;;;;;;;;;;;;;;;;;-1:-1:-1;7595:21:0;;;:31;;;;;;;;;;;:48;:35;:48;:::i;:::-;7550:7;:21;7558:12;:10;:12::i;:::-;-1:-1:-1;;;;;7550:21:0;;;;;;;;;;;;;;;;;-1:-1:-1;7550:21:0;;;:31;;;;;;;;;;;;:94;;;;7679:12;:10;:12::i;:::-;-1:-1:-1;;;;;7670:65:0;;7703:7;:21;7711:12;:10;:12::i;:::-;-1:-1:-1;;;;;7703:21:0;;;;;;;;;;;;;;;;;-1:-1:-1;7703:21:0;;;:31;;;;;;;;;;;;7670:65;;;;;;;;;;;;;;;;-1:-1:-1;7763:4:0;7422:353;;;;:::o;6782:168::-;-1:-1:-1;;;;;6917:15:0;;;6888:7;6917:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;6782:168::o;9223:38::-;;;;;;;;;15273:411;10586:10;;15350:4;;-1:-1:-1;;;;;10586:10:0;10600;10586:24;10578:59;;;;;-1:-1:-1;;;10578:59:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;10578:59:0;;;;;;;;;;;;;;;8812:1;15375:14;;;;15367:23;;;;;;-1:-1:-1;;;;;15409:20:0;;15401:29;;;;;;15479:1;15449:13;:18;;;;;;;;;;;;-1:-1:-1;;;;;15449:18:0;:32;15441:41;;;;;;-1:-1:-1;;;;;15501:15:0;;;;;;:7;:15;;;;;;;;:24;15493:33;;;;;;-1:-1:-1;;;;;15539:15:0;;;;;;:7;:15;;;;;:22;;-1:-1:-1;;15539:22:0;15557:4;15539:22;;;15547:6;15572:13;15539:22;15572:18;;;;;;;;;;:27;;-1:-1:-1;;;;;;15572:27:0;-1:-1:-1;;;;;15572:27:0;;;;;;15625:19;;;;;;;;-1:-1:-1;;15625:19:0;-1:-1:-1;15672:4:0;15273:411;;;;:::o;15000:265::-;10586:10;;15085:4;;-1:-1:-1;;;;;10586:10:0;10600;10586:24;10578:59;;;;;-1:-1:-1;;;10578:59:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;10578:59:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;15110:26:0;;15102:35;;;;;;15148:9;:24;;-1:-1:-1;;;;;;15148:24:0;-1:-1:-1;;;;;15148:24:0;;;;;;;;;;;15198:27;;15215:9;;;15198:27;;-1:-1:-1;;15198:27:0;-1:-1:-1;15253:4:0;15000:265;;;:::o;23026:560::-;11777:12;;23155:4;;-1:-1:-1;;;;;11777:12:0;11763:10;:26;11755:63;;;;;-1:-1:-1;;;11755:63:0;;;;;;;;;;;;-1:-1:-1;;;11755:63:0;;;;;;;;;;;;;;;19886:6;;;;19885:7;;:31;;;19896:6;:20;19903:12;:10;:12::i;:::-;-1:-1:-1;;;;;19896:20:0;;;;;;;;;;;;-1:-1:-1;19896:20:0;;;;19885:31;19877:40;;;;;;23133:6;21024:4;23133:6;23948:21;:26;23940:95;;;;-1:-1:-1;;;23940:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23186:17:0;;23178:26;;;;;;23242:16;;-1:-1:-1;;;;;23242:16:0;23233:8;:26;;;;;;;;;;;23223:36;;;23215:45;;;;;;23319:16;;-1:-1:-1;;;;;23319:16:0;23310:8;:26;;;;;;;;;;;:38;;23341:6;23310:38;:30;:38;:::i;:::-;23290:16;;-1:-1:-1;;;;;23290:16:0;;;23281:8;:26;;;;;;;;;;;:67;;;;23375:13;;;;;;;:25;;23393:6;23375:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;23359:13:0;;;:8;:13;;;;;;;;;;;;:41;;;;23435:16;;23426:39;;;;;;;23359:13;;23435:16;;;-1:-1:-1;;;;;;;;;;;23426:39:0;;;;;;;;23516:16;;-1:-1:-1;;;;;23491:55:0;;;;23516:16;23502:12;:10;:12::i;:::-;-1:-1:-1;;;;;23491:55:0;;23539:6;23491:55;;;;;;;;;;;;;;;;;;-1:-1:-1;23574:4:0;;23026:560;-1:-1:-1;;;23026:560:0:o;18392:218::-;11265:10;18451:4;11258:18;;;:6;:18;;;;;;;;11250:48;;;;;-1:-1:-1;;;11250:48:0;;;;;;;;;;;;-1:-1:-1;;;11250:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;18477:17:0;;;;;;:11;:17;;;;;;;;18476:18;18468:27;;;;;;-1:-1:-1;;;;;18508:17:0;;;;;;:11;:17;;;;;;:24;;-1:-1:-1;;18508:24:0;18528:4;18508:24;;;18548:17;;;18508;18548;-1:-1:-1;;;;;;18585:17:0;;;;;:11;:17;;;;;;;;;18392:218::o;8891:34::-;;;-1:-1:-1;;;;;8891:34:0;;:::o;15692:383::-;10586:10;;15772:4;;-1:-1:-1;;;;;10586:10:0;10600;10586:24;10578:59;;;;;-1:-1:-1;;;10578:59:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;10578:59:0;;;;;;;;;;;;;;;8812:1;15797:14;;;;15789:23;;;;;;-1:-1:-1;;;;;15831:20:0;;15823:29;;;;;;15893:6;-1:-1:-1;;;;;15871:28:0;:13;15885:3;15871:18;;;;;;;;;;;-1:-1:-1;;;;;15871:18:0;:28;15863:37;;;;;;-1:-1:-1;;;;;15921:15:0;;15939:5;15921:15;;;:7;:15;;;;;:23;;-1:-1:-1;;15921:23:0;;;15957:13;15921:23;15957:18;;;;;;;;;;:31;;-1:-1:-1;;;;;;15957:31:0;-1:-1:-1;;;;;15957:31:0;;;;;;16014:21;;;;;;;;-1:-1:-1;;16014:21:0;-1:-1:-1;16063:4:0;15692:383;;;;:::o;126:90::-;198:10;126:90;:::o;1083:174::-;1220:6;-1:-1:-1;;;;;1220:15:0;;1236:3;1241:6;1220:28;;;;;;;;;;;;;-1:-1:-1;;;;;1220:28:0;-1:-1:-1;;;;;1220:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1220:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1220:28:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1220:28:0;1212:37;;;;;;1083:174;;;:::o;5023:552::-;5140:4;-1:-1:-1;;;;;5170:17:0;;5162:26;;;;;;-1:-1:-1;;;;;5217:15:0;;:8;:15;;;;;;;;;;;5207:25;;;5199:34;;;;;;-1:-1:-1;;;;;5262:14:0;;;;;;:7;:14;;;;;;5277:12;:10;:12::i;:::-;-1:-1:-1;;;;;5262:28:0;-1:-1:-1;;;;;5262:28:0;;;;;;;;;;;;;5252:6;:38;;5244:47;;;;;;-1:-1:-1;;;;;5320:15:0;;:8;:15;;;;;;;;;;;:27;;5340:6;5320:27;:19;:27;:::i;:::-;-1:-1:-1;;;;;5302:15:0;;;:8;:15;;;;;;;;;;;:45;;;;5374:13;;;;;;;:25;;5392:6;5374:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;5358:13:0;;;:8;:13;;;;;;;;;;;:41;;;;5441:14;;;;;:7;:14;;;;;;:40;;5474:6;;5441:14;5456:12;:10;:12::i;:::-;-1:-1:-1;;;;;5441:28:0;;;;;;;;;;;;-1:-1:-1;5441:28:0;;;:40;:32;:40;:::i;:::-;-1:-1:-1;;;;;5410:14:0;;;;;;:7;:14;;;;;;5425:12;:10;:12::i;:::-;-1:-1:-1;;;;;5410:28:0;-1:-1:-1;;;;;5410:28:0;;;;;;;;;;;;:71;;;;5523:3;-1:-1:-1;;;;;5507:28:0;5516:5;-1:-1:-1;;;;;5507:28:0;-1:-1:-1;;;;;;;;;;;5528:6:0;5507:28;;;;;;;;;;;;;;;;;;-1:-1:-1;5563:4:0;5023:552;;;;;:::o;24549:597::-;24615:12;:15;24590:4;;-1:-1:-1;;;;;24615:15:0;24607:62;;;;;-1:-1:-1;;;24607:62:0;;;;;;;;;;;;-1:-1:-1;;;24607:62:0;;;;;;;;;;;;;;;24688:15;;-1:-1:-1;;;;;24688:15:0;24680:62;;;;;-1:-1:-1;;;24680:62:0;;;;;;;;;;;;-1:-1:-1;;;24680:62:0;;;;;;;;;;;;;;;24761:15;;-1:-1:-1;;;;;24761:15:0;24753:62;;;;;-1:-1:-1;;;24753:62:0;;;;;;;;;;;;-1:-1:-1;;;24753:62:0;;;;;;;;;;;;;;;24826:9;;24850:205;8883:1;24867:13;;;;24850:205;;;24905:7;:24;24913:12;24926:1;24913:15;;;;;;;;;;;-1:-1:-1;;;;;24913:15:0;24905:24;;;;;;;;;;;24913:15;24905:24;:31;;;:39;;24913:15;24905:39;24902:142;;;24999:5;24965:7;:24;24973:12;24986:1;24973:15;;;;;;;;;;;-1:-1:-1;;;;;24973:15:0;24965:24;;;;;;;;;;;-1:-1:-1;24965:24:0;:39;;-1:-1:-1;;24965:39:0;;;;;;;;;;-1:-1:-1;25023:5:0;;;;;24902:142;24882:3;;24850:205;;;;25075:1;25068:3;:8;;;25065:51;;25100:4;25093:11;;;;;25065:51;25133:5;25126:12;;;24549:597;:::o;3568:443::-;3631:4;-1:-1:-1;;;;;3656:17:0;;3648:59;;;;;-1:-1:-1;;;3648:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3736:8;:22;3745:12;:10;:12::i;:::-;-1:-1:-1;;;;;3736:22:0;-1:-1:-1;;;;;3736:22:0;;;;;;;;;;;;;3726:6;:32;;3718:72;;;;;-1:-1:-1;;;3718:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3826:34;3853:6;3826:8;:22;3835:12;:10;:12::i;3826:34::-;3801:8;:22;3810:12;:10;:12::i;:::-;-1:-1:-1;;;;;3801:22:0;;;;;;;;;;;;;;;;;-1:-1:-1;3801:22:0;;;:59;;;;3887:13;;;;;;;;;;;:25;;3905:6;3887:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;3871:13:0;;:8;:13;;;;;;;;;;;;:41;;;;3938:33;;;;;;;3871:13;;3947:10;;-1:-1:-1;;;;;;;;;;;3938:33:0;;;;;;;;;-1:-1:-1;3999:4:0;3568:443;;;;:::o;2635:123::-;2693:7;2725:1;2720;:6;;2713:14;;;;-1:-1:-1;2745:5:0;;;2635:123::o;22330:466::-;-1:-1:-1;;;;;11494:19:0;;22420:4;11494:19;;;:13;:19;;;;;;22399:5;;11494:19;;:27;;:19;:27;11486:65;;;;;-1:-1:-1;;;11486:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22443:19:0;;22435:28;;;;;;-1:-1:-1;;;;;22497:15:0;;22474:20;22497:15;;;;;;;;;;;22590:33;22497:15;;22590:19;:33::i;:::-;-1:-1:-1;;;;;22572:15:0;;;:8;:15;;;;;;;;;;;:51;;;;22670:16;;;;;22661:26;;;;:44;;22692:12;22661:44;:30;:44;:::i;:::-;22641:16;;;-1:-1:-1;;;;;22641:16:0;;;22632:8;:26;;;;;;;;;;;;:73;;;;22737:16;;22721:47;;;;;;;22737:16;;;;22721:47;;;;-1:-1:-1;;;;;;;;;;;22721:47:0;;;;;;;;-1:-1:-1;22784:4:0;;22330:466;-1:-1:-1;;;22330:466:0:o;21971:351::-;-1:-1:-1;;;;;22068:14:0;;22033:4;22068:14;;;;;;;;;;;22058:24;;;22050:33;;;;;;-1:-1:-1;;;;;22123:14:0;;:8;:14;;;;;;;;;;;:26;;22142:6;22123:26;:18;:26;:::i;:::-;-1:-1:-1;;;;;22106:14:0;;:8;:14;;;;;;;;;;:43;22175:12;;:24;;22192:6;22175:24;:16;:24;:::i;:::-;22160:12;:39;22221:19;;;;;;;;-1:-1:-1;;;;;22221:19:0;;;;;;;;;;;;;22256:34;;;;;;;;22279:1;;-1:-1:-1;;;;;22256:34:0;;;-1:-1:-1;;;;;;;;;;;22256:34:0;;;;;;;;-1:-1:-1;22310:4:0;21971:351;;;;:::o;2828:141::-;2912:5;;;2935:6;;;;2928:14;;;;2828:141;;;;:::o

Swarm Source

bzzr://ed44156263610ac19988f2ca67afa85e7668bfe2433d7a1ead991b0879721a8f
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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