ETH Price: $3,424.75 (+3.76%)

Token

HYPE Token (HYPE)
 

Overview

Max Total Supply

52,086,557.90795499592941261 HYPE

Holders

29,912 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Fake_Phishing308421
Balance
1,000 HYPE

Value
$0.00
0xCA748CB3e3De6CEAb581dB13BB9362D4d55353B9
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Consensus-driven Inflationary + Deflationary Token Created as a Social Tokenomics Experiment.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
HYPEtoken

Compiler Version
v0.5.10+commit.5a6ea5b1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-07-20
*/

pragma solidity 0.5.10;  /*


    
    ___________________________________________________________________
      _      _                                        ______           
      |  |  /          /                                /              
    --|-/|-/-----__---/----__----__---_--_----__-------/-------__------
      |/ |/    /___) /   /   ' /   ) / /  ) /___)     /      /   )     
    __/__|____(___ _/___(___ _(___/_/_/__/_(___ _____/______(___/__o_o_
    
        
       
        
    ██╗  ██╗██╗   ██╗██████╗ ███████╗    ████████╗ ██████╗ ██╗  ██╗███████╗███╗   ██╗
    ██║  ██║╚██╗ ██╔╝██╔══██╗██╔════╝    ╚══██╔══╝██╔═══██╗██║ ██╔╝██╔════╝████╗  ██║
    ███████║ ╚████╔╝ ██████╔╝█████╗         ██║   ██║   ██║█████╔╝ █████╗  ██╔██╗ ██║
    ██╔══██║  ╚██╔╝  ██╔═══╝ ██╔══╝         ██║   ██║   ██║██╔═██╗ ██╔══╝  ██║╚██╗██║
    ██║  ██║   ██║   ██║     ███████╗       ██║   ╚██████╔╝██║  ██╗███████╗██║ ╚████║
    ╚═╝  ╚═╝   ╚═╝   ╚═╝     ╚══════╝       ╚═╝    ╚═════╝ ╚═╝  ╚═╝╚══════╝╚═╝  ╚═══╝
                                                                                     
                                                                                     


----------------------------------------------------------------------------------------------------

=== MAIN FEATURES ===
    => Higher degree of control by owner - safeGuard functionality
    => SafeMath implementation 
    => Earning on token for fixed-deposit

------------------------------------------------------------------------------------------------------
 Copyright (c) 2019 onwards HYPE Inc. ( https://hypetoken.io )
 Contract designed with ❤ by EtherAuthority  ( https://EtherAuthority.io )
------------------------------------------------------------------------------------------------------
*/

/* Safemath library */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

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

        return c;
    }

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

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

        return c;
    }

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

        return c;
    }

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

// Owner Handler
contract ownerShip    // Auction Contract Owner and OwherShip change
{
    //Global storage declaration
    address payable public owner;

    address payable public newOwner;

    bool public safeGuard ; // To hault all non owner functions in case of imergency

    //Event defined for ownership transfered
    event OwnershipTransferredEv(address payable indexed previousOwner, address payable indexed newOwner);


    //Sets owner only on first run
    constructor() public 
    {
        //Set contract owner
        owner = msg.sender;
        // Disabled global hault on first deploy
        safeGuard = false;

    }

    //This will restrict function only for owner where attached
    modifier onlyOwner() 
    {
        require(msg.sender == owner);
        _;
    }


    function transferOwnership(address payable _newOwner) public onlyOwner 
    {
        newOwner = _newOwner;
    }


    //the reason for this flow is to protect owners from sending ownership to unintended address due to human error
    function acceptOwnership() public 
    {
        require(msg.sender == newOwner);
        emit OwnershipTransferredEv(owner, newOwner);
        owner = newOwner;
        newOwner = address(0);
    }

    function changesafeGuardStatus() onlyOwner public
    {
        if (safeGuard == false)
        {
            safeGuard = true;
        }
        else
        {
            safeGuard = false;    
        }
    }

}



contract tokenERC20 is  ownerShip
{
    // Public variables of the token
    using SafeMath for uint256;
    bytes32 public name;
    bytes8 public symbol;
    uint8 public decimals; // places of decimal
    uint256 public totalSupply;
    uint256 public totalMintAfterInitial;
    uint256 public maximumSupply;

    uint public burningRate = 500;    // 500=5%

    // struct to store token and ether value 
    struct userBalance 
    {
        uint256 totalValue;
        uint256 freezeValue;
        uint256 freezeDate;
        uint256 meltValue;    
    }

    // Mapped storage for token  ( If token address is 0 means ether)
    mapping (address => mapping (address => userBalance)) public tokens;


        // This creates an array with all balances
    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) public allowance;
    
    /* Records for the fronzen accounts */
    mapping (address => bool) public frozenAccount;
        
    /* This generates a public event on the blockchain that will notify clients */
    event FrozenFunds(address target, bool frozen);
    
    // This generates a public event on the blockchain that will notify clients
    event Transfer(address indexed from, address indexed to, uint256 value);
  
    
    // This notifies clients about the amount burnt
    event Burn(address indexed from, uint256 value);

     //Calculate percent and return result
    function calculatePercentage(uint256 PercentOf, uint256 percentTo ) internal pure returns (uint256) 
    {
        uint256 factor = 10000;
        require(percentTo <= factor);
        uint256 c = PercentOf.mul(percentTo).div(factor);
        return c;
    }   

    function setBurningRate(uint _burningRate) onlyOwner public returns(bool success)
    {
        burningRate = _burningRate;
        return true;
    }



    //Token type defnition
    struct tokenTypeData
    {
        bytes32 tokenName;
        bytes8 tokenSymbol;
        uint decimalCount;
        uint minFreezingValue;
        uint rateFactor;      // % of token balance amount = "effective balance amount" to calculate interest
        uint perDayFreezeRate;   //1000 = 10% ,10 = 0.1%, 1 = 0.01%
        bool freezingAllowed;   // If false this token type is not allowed or accepted to freeze
    }
    // Mapped storage struct for token type  data
    mapping (address => tokenTypeData) public tokenTypeDatas;


        /**
         * Constrctor function
         *
         * Initializes contract with initial supply tokens to the creator of the contract
         */
    constructor () public {
    	decimals = 18; // 18 decimal places
        totalSupply = 50000000000000000000000000;       // 50 Million with 18 decimal places
        maximumSupply = 100000000000000000000000000;         // 100 Million with 18 decimal places
        balanceOf[msg.sender]=totalSupply;       // tokens will be sent to owner
        tokens[address(this)][owner].totalValue = balanceOf[msg.sender];
        name = "HYPE Token";                           // Set the name for display purposes
        symbol = "HYPE";                       // Set the symbol for display purposes

        //In house token type data update
        tokenTypeData memory temp;

        temp.tokenName=name;
        temp.tokenSymbol=symbol;
        temp.decimalCount=decimals;
        temp.minFreezingValue=100;
        temp.rateFactor=10000;   //10000 = 100% means token amount = effective amount   
        temp.perDayFreezeRate=100;   // 1% daily freezing reward
        temp.freezingAllowed=true;  
        tokenTypeDatas[address(this)] = temp;
        emit Transfer(address(0), msg.sender, totalSupply);
    }
    
         /* Internal transfer, only can be called by this contract */
        function _transfer(address _from, address _to, uint _value) internal {
            require(!safeGuard,"safeGuard Active");
			require (_to != address(0),"to is address 0");                               // Prevent transfer to 0x0 address. Use burn() instead
			require (balanceOf[_from] >= _value, "no balance in from");               // Check if the sender has enough
			require (balanceOf[_to].add(_value) >= balanceOf[_to],"overflow balance"); // Check for overflows
			require(!frozenAccount[_from],"from account frozen");                     // Check if sender is frozen
			require(!frozenAccount[_to],"to account frozen");                       // Check if recipient is frozen
			balanceOf[_from] = balanceOf[_from].sub(_value);    // Subtract from the sender
            tokens[address(this)][_from].totalValue = tokens[address(this)][_from].totalValue.sub(_value); //parallel record for multi token addressing need
			balanceOf[_to] = balanceOf[_to].add(_value);        // Add the same to the recipient
            tokens[address(this)][_to].totalValue = tokens[address(this)][_to].totalValue.add(_value);   //parallel record for multi token addressing need         
            uint burnValue;
            if(!(msg.sender == owner || msg.sender == address(this)))   // burn if sender is not this contract or owner
            {
                burnValue = calculatePercentage(_value,burningRate); //amount to burn
                require(burnInternal(_to, burnValue),"burning failed");   // burnt from receiver
            }
			emit Transfer(_from, _to,_value);
            
        } 

        function burnInternal(address _burnFrom, uint _burnValue) internal returns(bool success)
        {   
            require(!safeGuard,"safeGuard Active");
            require(_burnFrom != address(0));
            require(balanceOf[_burnFrom] >= _burnValue);   // Check if the sender has enough
			require(!frozenAccount[_burnFrom],"to account frozen");                       // Check if recipient is frozen
			balanceOf[_burnFrom] = balanceOf[_burnFrom].sub(_burnValue);    // Subtract from the sender
            tokens[address(this)][_burnFrom].totalValue = tokens[address(this)][_burnFrom].totalValue.sub(_burnValue); //parallel record for multi token addressing need
			balanceOf[address(0)] = balanceOf[address(0)].add(_burnValue);        // Add the same to the recipient
            tokens[address(this)][address(0)].totalValue = tokens[address(this)][address(0)].totalValue.add(_burnValue);   //parallel record for multi token addressing need         
            totalSupply = totalSupply.sub(_burnValue);            
			emit Transfer(_burnFrom, address(0),_burnValue);                         // Update totalSupply
            return true;            
        }

		function mintInternal(uint256 mintedAmount)  internal returns (bool success) {                         
			totalSupply = totalSupply.add(mintedAmount);
            totalMintAfterInitial = totalMintAfterInitial.add(mintedAmount);
		 	//emit Transfer(address(0), address(this), mintedAmount);
            return true;
		}



        /**
         * Transfer tokens
         *
         * Send `_value` tokens to `_to` from your account
         *
         * @param _to The address of the recipient
         * @param _value the amount to send
         */
    function transfer(address _to, uint256 _value) public returns (bool success) {
         _transfer(msg.sender, _to, _value);
        return true;
    }
    
        /**
         * Transfer tokens from other address
         *
         * Send `_value` tokens to `_to` in behalf of `_from`
         *
         * @param _from The address of the sender
         * @param _to The address of the recipient
         * @param _value the amount to send
         */
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
        require(!safeGuard);
        require(_from != address(0),"transfer from adderss(0) is invalid");
        require(_value <= allowance[_from][msg.sender]);     // Check allowance
        allowance[_from][msg.sender] = allowance[_from][msg.sender].sub(_value);
        _transfer(_from, _to, _value);
        return true;
    }
    
        /**
         * Set allowance for other address
         *
         * Allows `_spender` to spend no more than `_value` tokens in your behalf
         *
         * @param _spender The address authorized to spend
         * @param _value the max amount they can spend
         */
    function approve(address _spender, uint256 _value) public
        returns (bool success) {
        require(!safeGuard);
        allowance[msg.sender][_spender] = _value;
        return true;
    }

        
		/// @notice Create `mintedAmount` tokens and send it to `target`
		/// @param target Address to receive the tokens
		/// @param mintedAmount the amount of tokens it will receive
		function mintToken(address target, uint256 mintedAmount)  public onlyOwner returns (bool success) {
			balanceOf[target] = balanceOf[target].add(mintedAmount);
            tokens[address(this)][target].totalValue = tokens[address(this)][target].totalValue.add(mintedAmount); //parallel record for multi token addressing need                         
			totalSupply = totalSupply.add(mintedAmount);
            totalMintAfterInitial = totalMintAfterInitial.add(mintedAmount);
		 	emit Transfer(address(0), address(this), mintedAmount);
            return true;
		}


        /**
         * Destroy tokens
         *
         * Remove `_value` tokens from the system irreversibly
         *
         * @param _value the amount of money to burn
         */
    function burn(uint256 _value) public onlyOwner returns (bool success) {
        burnInternal(msg.sender, _value);
        return true;
    }
    
        /**
         * Destroy tokens from other account
         *
         * Remove `_value` tokens from the system irreversibly on behalf of `_from`.
         *
         * @param _from the address of the sender
         * @param _value the amount of money to burn
         */
    function burnFrom(address _from, uint256 _value) public onlyOwner returns (bool success) {
        burnInternal(_from, _value);
        return true;
    }
        
}



interface ERC20Essential 
{

    function transfer(address _to, uint256 _amount) external returns (bool);
    function transferFrom(address _from, address _to, uint256 _amount) external returns (bool);

}

//Main contract starts here
contract HYPEtoken is tokenERC20
{

    using SafeMath for uint256;
    
    
    	/*************************************/
        /*  User whitelisting functionality  */
        /*************************************/
        bool public whitelistingStatus = false;
        mapping (address => bool) public whitelisted;

        
        /**
         * Change whitelisting status on or off
         *
         * When whitelisting is true, then crowdsale will only accept investors who are whitelisted.
         */
        function changeWhitelistingStatus() onlyOwner public{
            if (whitelistingStatus == false){
			    whitelistingStatus = true;
                whitelisted[owner]= true;
            }
            else{
                whitelistingStatus = false;    
            }
		}
		
		/**
         * Whitelist any user address - only Owner can do this
         *
         * It will add user address in whitelisted mapping
         */
        function whitelistUser(address userAddress) onlyOwner public{
            require(whitelistingStatus == true);
            require(userAddress != address(0));
            whitelisted[userAddress] = true;
		}    
		



		/// @notice `freeze? Prevent | Allow` `target` from sending & receiving tokens
		/// @param target Address to be frozen
		/// @param freeze either to freeze it or not
		function freezeAccount(address target, bool freeze) onlyOwner public {
				frozenAccount[target] = freeze;
			emit  FrozenFunds(target, freeze);
		}
        

        
        //Just in case, owner wants to transfer Tokens from contract to owner address
        function manualWithdrawToken(uint256 _amount) onlyOwner public {
      		uint256 tokenAmount = _amount.mul(100);
            _transfer(address(this), msg.sender, tokenAmount);
        }
          
        //Just in case, owner wants to transfer Ether from contract to owner address
        function manualWithdrawEther()onlyOwner public{
			uint256 amount=address(this).balance;
			owner.transfer(amount);
		}
		

        //To air drop
        function airDrop(address[] memory recipients,uint[] memory tokenAmount) public onlyOwner returns (bool) {
            uint reciversLength  = recipients.length;
            require(reciversLength <= 150);
            for(uint i = 0; i < reciversLength; i++)
            {
                  //This will loop through all the recipients and send them the specified tokens
                  _transfer(owner, recipients[i], tokenAmount[i]);
            }
            return true;
        }
        
        
        

    uint public meltHoldSeconds = 172800;  // 172800 seconds = 48 Hr. user can withdraw only after this period




    //Event for eexternal token deposit and withdraw

    event tokenDepositEv(address token, address user, uint amount, uint balance);
    event tokenWithdrawEv(address token, address user, uint amount, uint balance);

    function setWithdrawWaitingPeriod(uint valueInSeconds) onlyOwner public returns (bool)
    {
        meltHoldSeconds = valueInSeconds;
        return true;
    }

    function newTokenTypeData(address token,bytes32 _tokenName, bytes8 _tokenSymbol, uint _decimalCount, uint _minFreezingValue, uint _rateFactor, uint _perDayFreezeRate) onlyOwner public returns (bool)
    {
        tokenTypeData memory temp;

        temp.tokenName=_tokenName;
        temp.tokenSymbol=_tokenSymbol;
        temp.decimalCount=_decimalCount;
        temp.minFreezingValue=_minFreezingValue;
        temp.rateFactor=_rateFactor;      
        temp.perDayFreezeRate=_perDayFreezeRate;   
        temp.freezingAllowed=true;  
        tokenTypeDatas[token] = temp;
        return true;
    }

    function freezingOnOffForTokenType(address token) onlyOwner public returns (bool)
    {
        if (tokenTypeDatas[token].freezingAllowed == false)
        {
            tokenTypeDatas[token].freezingAllowed = true;
        }
        else
        {
            tokenTypeDatas[token].freezingAllowed = false;    
        } 
        return true;     
    }

    function setMinFreezingValue(address token, uint _minFreezingValue) onlyOwner public returns (bool)
    {
        tokenTypeDatas[token].minFreezingValue = _minFreezingValue;
        return true;
    }

    function setRateFactor(address token, uint _rateFactor) onlyOwner public returns (bool)
    {
        tokenTypeDatas[token].rateFactor = _rateFactor;
        return true;
    }

    function setPerDayFreezeRate(address token, uint _perDayFreezeRate) onlyOwner public returns (bool)
    {
        tokenTypeDatas[token].perDayFreezeRate = _perDayFreezeRate;
        return true;
    }

   
    

    //To deposit token
    function tokenDeposit(address token, uint amount) public 
    {
        //remember to call Token(address).approve(this, amount) or this contract will not be able to do the transfer on your behalf.
        require(token!=address(0),"Address(0) found, can't continue");
        require(ERC20Essential(token).transferFrom(msg.sender, address(this), amount),"ERC20 'transferFrom' call failed");
        tokens[token][msg.sender].totalValue = tokens[token][msg.sender].totalValue.add(amount);
        emit tokenDepositEv(token, msg.sender, amount, tokens[token][msg.sender].totalValue);
    }

    //To withdraw token
    function tokenWithdraw(address token, uint amount) public
    {
        require(!safeGuard,"System Paused By Admin");
        require(token != address(this));
        require(token!=address(0),"Address(0) found, can't continue");
        if(now.sub(meltHoldSeconds) > tokens[token][msg.sender].freezeDate)
        {
           tokens[token][msg.sender].meltValue = 0; 
        }
        require(tokens[token][msg.sender].totalValue.sub(tokens[token][msg.sender].freezeValue.add(tokens[token][msg.sender].meltValue)) >= amount,"Required amount is not free to withdraw");       
        tokens[token][msg.sender].totalValue = tokens[token][msg.sender].totalValue.sub(amount);
        ERC20Essential(token).transfer(msg.sender, amount);
        emit tokenWithdrawEv(token, msg.sender, amount, tokens[token][msg.sender].totalValue);
    }

    event releaseMyHypeEv(address token, uint amount);
    //releasing after minumum waiting period to withdraw HYPE 
    function releaseMyHype(address token) public returns (bool)
    {
        require(!safeGuard,"System Paused By Admin");
        require(token!=address(0),"Address(0) found, can't continue");
        require(token == address(this),"Only pissible for HYPE ");
        require(now.sub(meltHoldSeconds) > tokens[token][msg.sender].freezeDate,"wait period is not over");
        uint amount = tokens[token][msg.sender].meltValue;
        balanceOf[msg.sender] = balanceOf[msg.sender].add(amount);
        tokens[token][msg.sender].totalValue = balanceOf[msg.sender].add(tokens[token][msg.sender].freezeValue );
        tokens[token][msg.sender].meltValue = 0; 
        emit releaseMyHypeEv(token, amount);
        return true;
    }

    event tokenBalanceFreezeEv(address token, uint amount, uint earning);


    function tokenBalanceFreeze(address token, uint amount)   public returns (bool)
    {
        require(!safeGuard,"System Paused By Admin");
        require(tokenTypeDatas[token].freezingAllowed,"token type not allowed to freeze");
        require(token!=address(0),"Address(0) found, can't continue");
        address callingUser = msg.sender;
        require(msg.sender != address(0),"Address(0) found, can't continue");

        require(amount <=  tokens[token][callingUser].totalValue.sub(tokens[token][callingUser].freezeValue.add(tokens[token][callingUser].meltValue)) && amount >= tokenTypeDatas[token].minFreezingValue, "less than required or less balance");
        
        //before adding more freezing amount calculating earning on existing freeze amount and updating same in user ether balance
        uint freezeValue = tokens[token][callingUser].freezeValue;
        uint earnedValue;
        if (freezeValue > 0)
        {
            earnedValue = getEarning(token,callingUser,freezeValue);
            require(mintInternal(earnedValue),"minting failed");
            tokens[address(this)][callingUser].meltValue = tokens[address(this)][callingUser].meltValue.add(earnedValue);
        }

        tokens[token][callingUser].freezeValue = tokens[token][callingUser].freezeValue.add(amount);
        if (token==address(this))
        {
            balanceOf[callingUser] = balanceOf[callingUser].sub(amount);
        }
        tokens[token][callingUser].freezeDate = now;

        emit tokenBalanceFreezeEv(token,amount,earnedValue);
        return true;
    }

    function getEarning(address token,address user,uint amount) internal view returns(uint256)
    {
        uint effectiveAmount = calculatePercentage(amount,tokenTypeDatas[token].rateFactor);
        uint interestAmount = calculatePercentage(effectiveAmount,tokenTypeDatas[token].perDayFreezeRate);
        uint secondsPassed = (now - tokens[token][user].freezeDate);
        uint daysPassed=0;
        if (secondsPassed >= 86400)  // if less than one day earning will be zero
        {
           daysPassed = secondsPassed.div(86400); 
        }
        return daysPassed.mul(interestAmount);
    }


    event tokenBalanceMeltEv(address token, uint amount, uint earning);


    function tokenBalanceMelt(address token, uint amount)   public returns (bool)
    {
        require(!safeGuard,"System Paused By Admin");
        require(token!=address(0),"Address(0) found, can't continue");
        address callingUser = msg.sender;
        require(msg.sender != address(0),"Address(0) found, can't continue");
        require(amount <=  tokens[token][callingUser].freezeValue && amount > 0, "less than required or less balance");
        
        //before melting amount calculating earning on existing freeze amount and updating same in user ether balance
        uint freezeValue = tokens[token][callingUser].freezeValue;
        uint earnedValue = getEarning(token,callingUser,freezeValue);
        require(mintInternal(earnedValue),"minting failed");
        tokens[address(this)][callingUser].meltValue = tokens[address(this)][callingUser].meltValue.add(earnedValue);       
        
        tokens[token][callingUser].freezeValue = tokens[token][callingUser].freezeValue.sub(amount);
        if (token==address(this))
        {
            tokens[token][callingUser].meltValue = tokens[token][callingUser].meltValue.add(amount);
        }

        tokens[token][callingUser].freezeDate = now;
        emit tokenBalanceMeltEv(token,amount,earnedValue);
        return true;
    }

    function viewMyReward(address token) public view returns(uint freezedValue, uint rewardValue)
    {
        address callingUser = msg.sender;
        uint freezeValue = tokens[token][callingUser].freezeValue;
        uint earnedValue = getEarning(token,callingUser,freezeValue);
        return (freezeValue,earnedValue);
    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"maximumSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"token","type":"address"}],"name":"viewMyReward","outputs":[{"name":"freezedValue","type":"uint256"},{"name":"rewardValue","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenTypeDatas","outputs":[{"name":"tokenName","type":"bytes32"},{"name":"tokenSymbol","type":"bytes8"},{"name":"decimalCount","type":"uint256"},{"name":"minFreezingValue","type":"uint256"},{"name":"rateFactor","type":"uint256"},{"name":"perDayFreezeRate","type":"uint256"},{"name":"freezingAllowed","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"tokenDeposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"userAddress","type":"address"}],"name":"whitelistUser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"_tokenName","type":"bytes32"},{"name":"_tokenSymbol","type":"bytes8"},{"name":"_decimalCount","type":"uint256"},{"name":"_minFreezingValue","type":"uint256"},{"name":"_rateFactor","type":"uint256"},{"name":"_perDayFreezeRate","type":"uint256"}],"name":"newTokenTypeData","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"tokens","outputs":[{"name":"totalValue","type":"uint256"},{"name":"freezeValue","type":"uint256"},{"name":"freezeDate","type":"uint256"},{"name":"meltValue","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"manualWithdrawEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"manualWithdrawToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"recipients","type":"address[]"},{"name":"tokenAmount","type":"uint256[]"}],"name":"airDrop","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"releaseMyHype","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"safeGuard","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"mintedAmount","type":"uint256"}],"name":"mintToken","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_value","type":"uint256"}],"name":"burnFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"freezingOnOffForTokenType","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"changeWhitelistingStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"bytes8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"frozenAccount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"whitelistingStatus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"tokenWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalMintAfterInitial","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"meltHoldSeconds","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"changesafeGuardStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelisted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"valueInSeconds","type":"uint256"}],"name":"setWithdrawWaitingPeriod","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"burningRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"freeze","type":"bool"}],"name":"freezeAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"_perDayFreezeRate","type":"uint256"}],"name":"setPerDayFreezeRate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"_minFreezingValue","type":"uint256"}],"name":"setMinFreezingValue","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_burningRate","type":"uint256"}],"name":"setBurningRate","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"tokenBalanceMelt","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"_rateFactor","type":"uint256"}],"name":"setRateFactor","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"tokenBalanceFreeze","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"tokenDepositEv","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"tokenWithdrawEv","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"releaseMyHypeEv","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"earning","type":"uint256"}],"name":"tokenBalanceFreezeEv","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"earning","type":"uint256"}],"name":"tokenBalanceMeltEv","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"},{"indexed":false,"name":"frozen","type":"bool"}],"name":"FrozenFunds","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"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferredEv","type":"event"}]

608060409081526101f4600755600d805460ff191690556202a300600f5560008054336001600160a01b0319909116811782556001805460ff60a01b191690556003805460ff60401b1916681200000000000000001781556a295be96e6406697200000060048190556a52b7d2dcc80cd2e4000000600655918352600960209081528484208390553084526008815284842084546001600160a01b03168552905292909120557f4859504520546f6b656e0000000000000000000000000000000000000000000060025580546001600160401b0319166748595045000000001790556100e96101e4565b6002805482526003805460c081811b6001600160c01b03191660208087019182526801000000000000000090930460ff16604080880191825260646060890181815261271060808b0190815260a08b019283526001878c01818152306000908152600c8b528681208e518155985192890180546001600160401b03191693909a1c92909217909855945199860199909955519684019690965595516004808401919091559451600583015591516006909101805460ff191691151591909117905591548351908152925133937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92908290030190a350610220565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b612d408061022f6000396000f3fe608060405234801561001057600080fd5b506004361061028a5760003560e01c80637ec69c501161015c578063d936547e116100ce578063ee3f39c211610087578063ee3f39c2146108fe578063eee3ea471461092a578063efea921f14610947578063f04fd98c14610973578063f2fde38b1461099f578063ff4496c0146109c55761028a565b8063d936547e1461082b578063dd62ed3e14610851578063e56ccc3b1461087f578063e64c3e921461089c578063e724529c146108a4578063edd9a46b146108d25761028a565b8063bd694af211610120578063bd694af2146107d7578063be50af2e146107df578063c01830a11461080b578063c3e3f8fd14610813578063d085f6ea1461081b578063d4ee1d90146108235761028a565b80637ec69c50146107345780638da5cb5b1461073c57806395d89b4114610760578063a9059cbb14610785578063b414d4b6146107b15761028a565b80634b2210841161020057806370a08231116101b957806370a082311461068057806379279fd1146106a657806379ba5097146106ae57806379c65068146106b657806379cc6790146106e25780637c022bb41461070e5761028a565b80634b22108414610466578063508493bc146104ba5780635954c8c51461050e5780635d22a3521461051657806365216a41146105335780636d7525d91461065a5761028a565b806323784ea71161025257806323784ea71461033857806323b872dd146103a1578063313ce567146103d757806342966c68146103f5578063443f41d5146104125780634a4c560d146104405761028a565b80630480e58b1461028f57806306fdde03146102a9578063095ea7b3146102b15780630f2e92d3146102f157806318160ddd14610330575b600080fd5b6102976109f1565b60408051918252519081900360200190f35b6102976109f7565b6102dd600480360360408110156102c757600080fd5b506001600160a01b0381351690602001356109fd565b604080519115158252519081900360200190f35b6103176004803603602081101561030757600080fd5b50356001600160a01b0316610a47565b6040805192835260208301919091528051918290030190f35b610297610a8a565b61035e6004803603602081101561034e57600080fd5b50356001600160a01b0316610a90565b604080519788526001600160c01b03199096166020880152868601949094526060860192909252608085015260a0840152151560c0830152519081900360e00190f35b6102dd600480360360608110156103b757600080fd5b506001600160a01b03813581169160208101359091169060400135610ad5565b6103df610bd1565b6040805160ff9092168252519081900360200190f35b6102dd6004803603602081101561040b57600080fd5b5035610be6565b61043e6004803603604081101561042857600080fd5b506001600160a01b038135169060200135610c11565b005b61043e6004803603602081101561045657600080fd5b50356001600160a01b0316610dd3565b6102dd600480360360e081101561047c57600080fd5b506001600160a01b03813516906020810135906001600160c01b03196040820135169060608101359060808101359060a08101359060c00135610e35565b6104e8600480360360408110156104d057600080fd5b506001600160a01b0381358116916020013516610f01565b604080519485526020850193909352838301919091526060830152519081900360800190f35b61043e610f33565b61043e6004803603602081101561052c57600080fd5b5035610f8a565b6102dd6004803603604081101561054957600080fd5b81019060208101813564010000000081111561056457600080fd5b82018360208201111561057657600080fd5b8035906020019184602083028401116401000000008311171561059857600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156105e857600080fd5b8201836020820111156105fa57600080fd5b8035906020019184602083028401116401000000008311171561061c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610fc1945050505050565b6102dd6004803603602081101561067057600080fd5b50356001600160a01b0316611047565b6102976004803603602081101561069657600080fd5b50356001600160a01b03166112cc565b6102dd6112de565b61043e6112ee565b6102dd600480360360408110156106cc57600080fd5b506001600160a01b038135169060200135611369565b6102dd600480360360408110156106f857600080fd5b506001600160a01b03813516906020013561147d565b6102dd6004803603602081101561072457600080fd5b50356001600160a01b031661149f565b61043e611531565b610744611597565b604080516001600160a01b039092168252519081900360200190f35b6107686115a6565b604080516001600160c01b03199092168252519081900360200190f35b6102dd6004803603604081101561079b57600080fd5b506001600160a01b0381351690602001356115af565b6102dd600480360360208110156107c757600080fd5b50356001600160a01b03166115bc565b6102dd6115d1565b61043e600480360360408110156107f557600080fd5b506001600160a01b0381351690602001356115da565b6102976118dc565b6102976118e2565b61043e6118e8565b610744611937565b6102dd6004803603602081101561084157600080fd5b50356001600160a01b0316611946565b6102976004803603604081101561086757600080fd5b506001600160a01b038135811691602001351661195b565b6102dd6004803603602081101561089557600080fd5b5035611978565b610297611999565b61043e600480360360408110156108ba57600080fd5b506001600160a01b038135169060200135151561199f565b6102dd600480360360408110156108e857600080fd5b506001600160a01b038135169060200135611a1a565b6102dd6004803603604081101561091457600080fd5b506001600160a01b038135169060200135611a56565b6102dd6004803603602081101561094057600080fd5b5035611a92565b6102dd6004803603604081101561095d57600080fd5b506001600160a01b038135169060200135611ab3565b6102dd6004803603604081101561098957600080fd5b506001600160a01b038135169060200135611e2a565b61043e600480360360208110156109b557600080fd5b50356001600160a01b0316611e66565b6102dd600480360360408110156109db57600080fd5b506001600160a01b038135169060200135611e9f565b60065481565b60025481565b600154600090600160a01b900460ff1615610a1757600080fd5b50336000908152600a602090815260408083206001600160a01b0386168452909152902081905560015b92915050565b6001600160a01b038116600090815260086020908152604080832033808552925282206001015482919082610a7d8684846122db565b9194509092505050915091565b60045481565b600c602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560c09490941b949293919290919060ff1687565b600154600090600160a01b900460ff1615610aef57600080fd5b6001600160a01b038416610b345760405162461bcd60e51b8152600401808060200182810382526023815260200180612c5f6023913960400191505060405180910390fd5b6001600160a01b0384166000908152600a60209081526040808320338452909152902054821115610b6457600080fd5b6001600160a01b0384166000908152600a60209081526040808320338452909152902054610b98908363ffffffff61239f16565b6001600160a01b0385166000908152600a60209081526040808320338452909152902055610bc78484846123fc565b5060019392505050565b60035468010000000000000000900460ff1681565b600080546001600160a01b03163314610bfe57600080fd5b610c08338361280a565b50600192915050565b6001600160a01b038216610c5a576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b604080516323b872dd60e01b81523360048201523060248201526044810183905290516001600160a01b038416916323b872dd9160648083019260209291908290030181600087803b158015610caf57600080fd5b505af1158015610cc3573d6000803e3d6000fd5b505050506040513d6020811015610cd957600080fd5b5051610d2c576040805162461bcd60e51b815260206004820181905260248201527f455243323020277472616e7366657246726f6d272063616c6c206661696c6564604482015290519081900360640190fd5b6001600160a01b0382166000908152600860209081526040808320338452909152902054610d60908263ffffffff612a8a16565b6001600160a01b03831660008181526008602090815260408083203380855290835292819020859055805193845290830191909152818101849052606082019290925290517fe57520e183743e5e5fb8e2304562449ccfe980ba4144b066aff77bcd98b678c19181900360800190a15050565b6000546001600160a01b03163314610dea57600080fd5b600d5460ff161515600114610dfe57600080fd5b6001600160a01b038116610e1157600080fd5b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b600080546001600160a01b03163314610e4d57600080fd5b610e55612c22565b968752506001600160c01b03199490941660208087019182526040808801958652606088019485526080880193845260a08801968752600160c0808a018281526001600160a01b039b909b166000908152600c90945291909220975188559151878201805467ffffffffffffffff19169190931c1790915592516002860155905160038501555160048401559051600583015591516006909101805460ff191691151591909117905590565b600860209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b6000546001600160a01b03163314610f4a57600080fd5b600080546040513031926001600160a01b03909216916108fc841502918491818181858888f19350505050158015610f86573d6000803e3d6000fd5b5050565b6000546001600160a01b03163314610fa157600080fd5b6000610fb482606463ffffffff612aeb16565b9050610f863033836123fc565b600080546001600160a01b03163314610fd957600080fd5b82516096811115610fe957600080fd5b60005b8181101561103c576000548551611034916001600160a01b03169087908490811061101357fe5b602002602001015186848151811061102757fe5b60200260200101516123fc565b600101610fec565b506001949350505050565b600154600090600160a01b900460ff16156110a2576040805162461bcd60e51b815260206004820152601660248201527529bcb9ba32b6902830bab9b2b210213c9020b236b4b760511b604482015290519081900360640190fd5b6001600160a01b0382166110eb576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b6001600160a01b0382163014611148576040805162461bcd60e51b815260206004820152601760248201527f4f6e6c79207069737369626c6520666f72204859504520000000000000000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600860209081526040808320338452909152902060020154600f5461118390429063ffffffff61239f16565b116111d5576040805162461bcd60e51b815260206004820152601760248201527f7761697420706572696f64206973206e6f74206f766572000000000000000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600860209081526040808320338452825280832060030154600990925290912054611215908263ffffffff612a8a16565b3360008181526009602081815260408084208690556001600160a01b0389168452600882528084209484529381529290912060010154915261125d919063ffffffff612a8a16565b6001600160a01b038416600081815260086020908152604080832033845282528083209485556003909401919091558251918252810183905281517f0fa859234b3c35d2136476e097ebfb39666c05648f72caece35e93d5d985184d929181900390910190a150600192915050565b60096020526000908152604090205481565b600154600160a01b900460ff1681565b6001546001600160a01b0316331461130557600080fd5b600154600080546040516001600160a01b0393841693909116917f7b9f4dbf19021732cc1236215fb8368569be3a9c57a729f6c306471afc35505191a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b600080546001600160a01b0316331461138157600080fd5b6001600160a01b0383166000908152600960205260409020546113aa908363ffffffff612a8a16565b6001600160a01b038416600081815260096020908152604080832094909455308252600881528382209282529190915220546113ec908363ffffffff612a8a16565b3060009081526008602090815260408083206001600160a01b0388168452909152902055600454611423908363ffffffff612a8a16565b600455600554611439908363ffffffff612a8a16565b60055560408051838152905130916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600192915050565b600080546001600160a01b0316331461149557600080fd5b610bc7838361280a565b600080546001600160a01b031633146114b757600080fd5b6001600160a01b0382166000908152600c602052604090206006015460ff16611505576001600160a01b0382166000908152600c60205260409020600601805460ff19166001179055611529565b6001600160a01b0382166000908152600c60205260409020600601805460ff191690555b506001919050565b6000546001600160a01b0316331461154857600080fd5b600d5460ff1661158a57600d8054600160ff199182168117909255600080546001600160a01b03168152600e6020526040902080549091169091179055611595565b600d805460ff191690555b565b6000546001600160a01b031681565b60035460c01b81565b6000610c083384846123fc565b600b6020526000908152604090205460ff1681565b600d5460ff1681565b600154600160a01b900460ff1615611632576040805162461bcd60e51b815260206004820152601660248201527529bcb9ba32b6902830bab9b2b210213c9020b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821630141561164857600080fd5b6001600160a01b038216611691576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600860209081526040808320338452909152902060020154600f546116cc90429063ffffffff61239f16565b11156116fa576001600160a01b03821660009081526008602090815260408083203384529091528120600301555b6001600160a01b03821660009081526008602090815260408083203384529091529020600381015460019091015482916117679161173791612a8a565b6001600160a01b03851660009081526008602090815260408083203384529091529020549063ffffffff61239f16565b10156117a45760405162461bcd60e51b8152600401808060200182810382526027815260200180612c826027913960400191505060405180910390fd5b6001600160a01b03821660009081526008602090815260408083203384529091529020546117d8908263ffffffff61239f16565b6001600160a01b03831660008181526008602090815260408083203380855290835281842095909555805163a9059cbb60e01b815260048101959095526024850186905251929363a9059cbb9360448083019491928390030190829087803b15801561184357600080fd5b505af1158015611857573d6000803e3d6000fd5b505050506040513d602081101561186d57600080fd5b50506001600160a01b03821660008181526008602090815260408083203380855290835292819020548151948552918401929092528282018490526060830152517f544b39701afd1119e68c6e95a6107ec843364e9fbaae5e99637a368cc82adfc89181900360800190a15050565b60055481565b600f5481565b6000546001600160a01b031633146118ff57600080fd5b600154600160a01b900460ff16611928576001805460ff60a01b1916600160a01b179055611595565b6001805460ff60a01b19169055565b6001546001600160a01b031681565b600e6020526000908152604090205460ff1681565b600a60209081526000928352604080842090915290825290205481565b600080546001600160a01b0316331461199057600080fd5b50600f55600190565b60075481565b6000546001600160a01b031633146119b657600080fd5b6001600160a01b0382166000818152600b6020908152604091829020805460ff191685151590811790915582519384529083015280517f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a59281900390910190a15050565b600080546001600160a01b03163314611a3257600080fd5b506001600160a01b03919091166000908152600c6020526040902060050155600190565b600080546001600160a01b03163314611a6e57600080fd5b506001600160a01b03919091166000908152600c6020526040902060030155600190565b600080546001600160a01b03163314611aaa57600080fd5b50600755600190565b600154600090600160a01b900460ff1615611b0e576040805162461bcd60e51b815260206004820152601660248201527529bcb9ba32b6902830bab9b2b210213c9020b236b4b760511b604482015290519081900360640190fd5b6001600160a01b038316611b57576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b3380611b98576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b6001600160a01b038085166000908152600860209081526040808320938516835292905220600101548311801590611bd05750600083115b611c0b5760405162461bcd60e51b8152600401808060200182810382526022815260200180612cea6022913960400191505060405180910390fd5b6001600160a01b03808516600090815260086020908152604080832093851683529290529081206001015490611c428684846122db565b9050611c4d81612b44565b611c8f576040805162461bcd60e51b815260206004820152600e60248201526d1b5a5b9d1a5b99c819985a5b195960921b604482015290519081900360640190fd5b3060009081526008602090815260408083206001600160a01b0387168452909152902060030154611cc6908263ffffffff612a8a16565b3060009081526008602081815260408084206001600160a01b0389811680875291845282862060030196909655948b168452918152818320938352929092522060010154611d1a908663ffffffff61239f16565b6001600160a01b03808816600081815260086020908152604080832094891683529390529190912060010191909155301415611db3576001600160a01b03808716600090815260086020908152604080832093871683529290522060030154611d89908663ffffffff612a8a16565b6001600160a01b038088166000908152600860209081526040808320938816835292905220600301555b6001600160a01b038087166000818152600860209081526040808320948816835293815290839020426002909101558251918252810187905280820183905290517f05ed4f81bc443fc929332d09ad813fcbd31f52653b5e27569abd927f851836d39181900360600190a150600195945050505050565b600080546001600160a01b03163314611e4257600080fd5b506001600160a01b03919091166000908152600c6020526040902060040155600190565b6000546001600160a01b03163314611e7d57600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600154600090600160a01b900460ff1615611efa576040805162461bcd60e51b815260206004820152601660248201527529bcb9ba32b6902830bab9b2b210213c9020b236b4b760511b604482015290519081900360640190fd5b6001600160a01b0383166000908152600c602052604090206006015460ff16611f6a576040805162461bcd60e51b815260206004820181905260248201527f746f6b656e2074797065206e6f7420616c6c6f77656420746f20667265657a65604482015290519081900360640190fd5b6001600160a01b038316611fb3576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b3380611ff4576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b6001600160a01b0384811660009081526008602090815260408083209385168352929052206003810154600190910154612064916120329190612a8a565b6001600160a01b038087166000908152600860209081526040808320938716835292905220549063ffffffff61239f16565b831115801561208e57506001600160a01b0384166000908152600c60205260409020600301548310155b6120c95760405162461bcd60e51b8152600401808060200182810382526022815260200180612cea6022913960400191505060405180910390fd5b6001600160a01b0380851660009081526008602090815260408083209385168352929052908120600101549081156121b2576121068684846122db565b905061211181612b44565b612153576040805162461bcd60e51b815260206004820152600e60248201526d1b5a5b9d1a5b99c819985a5b195960921b604482015290519081900360640190fd5b3060009081526008602090815260408083206001600160a01b038716845290915290206003015461218a908263ffffffff612a8a16565b3060009081526008602090815260408083206001600160a01b03881684529091529020600301555b6001600160a01b038087166000908152600860209081526040808320938716835292905220600101546121eb908663ffffffff612a8a16565b6001600160a01b03808816600081815260086020908152604080832094891683529390529190912060010191909155301415612264576001600160a01b03831660009081526009602052604090205461224a908663ffffffff61239f16565b6001600160a01b0384166000908152600960205260409020555b6001600160a01b038087166000818152600860209081526040808320948816835293815290839020426002909101558251918252810187905280820183905290517f72cb02c58250b8f066d50b43c9a45a6d81b4ac7435f56ae25ed9f7e0e2f8ecfc9181900360600190a150600195945050505050565b6001600160a01b0383166000908152600c60205260408120600401548190612304908490612b7b565b6001600160a01b0386166000908152600c60205260408120600501549192509061232f908390612b7b565b6001600160a01b038088166000908152600860209081526040808320938a1683529290529081206002015491925042919091039062015180821061238357612380826201518063ffffffff612bb816565b90505b612393818463ffffffff612aeb16565b98975050505050505050565b6000828211156123f6576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600154600160a01b900460ff161561244e576040805162461bcd60e51b815260206004820152601060248201526f7361666547756172642041637469766560801b604482015290519081900360640190fd5b6001600160a01b03821661249b576040805162461bcd60e51b815260206004820152600f60248201526e0746f2069732061646472657373203608c1b604482015290519081900360640190fd5b6001600160a01b0383166000908152600960205260409020548111156124fd576040805162461bcd60e51b81526020600482015260126024820152716e6f2062616c616e636520696e2066726f6d60701b604482015290519081900360640190fd5b6001600160a01b038216600090815260096020526040902054612526818363ffffffff612a8a16565b101561256c576040805162461bcd60e51b815260206004820152601060248201526f6f766572666c6f772062616c616e636560801b604482015290519081900360640190fd5b6001600160a01b0383166000908152600b602052604090205460ff16156125d0576040805162461bcd60e51b8152602060048201526013602482015272333937b69030b1b1b7bab73a10333937bd32b760691b604482015290519081900360640190fd5b6001600160a01b0382166000908152600b602052604090205460ff1615612632576040805162461bcd60e51b81526020600482015260116024820152703a379030b1b1b7bab73a10333937bd32b760791b604482015290519081900360640190fd5b6001600160a01b03831660009081526009602052604090205461265b908263ffffffff61239f16565b6001600160a01b0384166000818152600960209081526040808320949094553082526008815283822092825291909152205461269d908263ffffffff61239f16565b3060009081526008602090815260408083206001600160a01b0388811685529083528184209490945592851682526009905220546126e1908263ffffffff612a8a16565b6001600160a01b03831660008181526009602090815260408083209490945530825260088152838220928252919091522054612723908263ffffffff612a8a16565b3060009081526008602090815260408083206001600160a01b0387811685529252822092909255805490911633148061275b57503330145b6127b95761276b82600754612b7b565b9050612777838261280a565b6127b9576040805162461bcd60e51b815260206004820152600e60248201526d189d5c9b9a5b99c819985a5b195960921b604482015290519081900360640190fd5b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a350505050565b600154600090600160a01b900460ff161561285f576040805162461bcd60e51b815260206004820152601060248201526f7361666547756172642041637469766560801b604482015290519081900360640190fd5b6001600160a01b03831661287257600080fd5b6001600160a01b03831660009081526009602052604090205482111561289757600080fd5b6001600160a01b0383166000908152600b602052604090205460ff16156128f9576040805162461bcd60e51b81526020600482015260116024820152703a379030b1b1b7bab73a10333937bd32b760791b604482015290519081900360640190fd5b6001600160a01b038316600090815260096020526040902054612922908363ffffffff61239f16565b6001600160a01b03841660008181526009602090815260408083209490945530825260088152838220928252919091522054612964908363ffffffff61239f16565b3060009081526008602090815260408083206001600160a01b038816845282528220929092558052600990527fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b546129c2908363ffffffff612a8a16565b7fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b55306000908152600860209081526040808320838052909152902054612a0f908363ffffffff612a8a16565b306000908152600860209081526040808320838052909152902055600454612a3d908363ffffffff61239f16565b6004556040805183815290516000916001600160a01b038616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600192915050565b600082820183811015612ae4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082612afa57506000610a41565b82820282848281612b0757fe5b0414612ae45760405162461bcd60e51b8152600401808060200182810382526021815260200180612cc96021913960400191505060405180910390fd5b600454600090612b5a908363ffffffff612a8a16565b600455600554612b70908363ffffffff612a8a16565b600555506001919050565b600061271080831115612b8d57600080fd5b6000612baf82612ba3878763ffffffff612aeb16565b9063ffffffff612bb816565b95945050505050565b6000808211612c0e576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481612c1957fe5b04949350505050565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091529056fe7472616e736665722066726f6d206164646572737328302920697320696e76616c6964526571756972656420616d6f756e74206973206e6f74206672656520746f2077697468647261774164647265737328302920666f756e642c2063616e277420636f6e74696e7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776c657373207468616e207265717569726564206f72206c6573732062616c616e6365a265627a7a7230582055853f24039b1ded6754d632b64fdf8c6b70c28cf4b1871f527687a98130d4d964736f6c634300050a0032

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061028a5760003560e01c80637ec69c501161015c578063d936547e116100ce578063ee3f39c211610087578063ee3f39c2146108fe578063eee3ea471461092a578063efea921f14610947578063f04fd98c14610973578063f2fde38b1461099f578063ff4496c0146109c55761028a565b8063d936547e1461082b578063dd62ed3e14610851578063e56ccc3b1461087f578063e64c3e921461089c578063e724529c146108a4578063edd9a46b146108d25761028a565b8063bd694af211610120578063bd694af2146107d7578063be50af2e146107df578063c01830a11461080b578063c3e3f8fd14610813578063d085f6ea1461081b578063d4ee1d90146108235761028a565b80637ec69c50146107345780638da5cb5b1461073c57806395d89b4114610760578063a9059cbb14610785578063b414d4b6146107b15761028a565b80634b2210841161020057806370a08231116101b957806370a082311461068057806379279fd1146106a657806379ba5097146106ae57806379c65068146106b657806379cc6790146106e25780637c022bb41461070e5761028a565b80634b22108414610466578063508493bc146104ba5780635954c8c51461050e5780635d22a3521461051657806365216a41146105335780636d7525d91461065a5761028a565b806323784ea71161025257806323784ea71461033857806323b872dd146103a1578063313ce567146103d757806342966c68146103f5578063443f41d5146104125780634a4c560d146104405761028a565b80630480e58b1461028f57806306fdde03146102a9578063095ea7b3146102b15780630f2e92d3146102f157806318160ddd14610330575b600080fd5b6102976109f1565b60408051918252519081900360200190f35b6102976109f7565b6102dd600480360360408110156102c757600080fd5b506001600160a01b0381351690602001356109fd565b604080519115158252519081900360200190f35b6103176004803603602081101561030757600080fd5b50356001600160a01b0316610a47565b6040805192835260208301919091528051918290030190f35b610297610a8a565b61035e6004803603602081101561034e57600080fd5b50356001600160a01b0316610a90565b604080519788526001600160c01b03199096166020880152868601949094526060860192909252608085015260a0840152151560c0830152519081900360e00190f35b6102dd600480360360608110156103b757600080fd5b506001600160a01b03813581169160208101359091169060400135610ad5565b6103df610bd1565b6040805160ff9092168252519081900360200190f35b6102dd6004803603602081101561040b57600080fd5b5035610be6565b61043e6004803603604081101561042857600080fd5b506001600160a01b038135169060200135610c11565b005b61043e6004803603602081101561045657600080fd5b50356001600160a01b0316610dd3565b6102dd600480360360e081101561047c57600080fd5b506001600160a01b03813516906020810135906001600160c01b03196040820135169060608101359060808101359060a08101359060c00135610e35565b6104e8600480360360408110156104d057600080fd5b506001600160a01b0381358116916020013516610f01565b604080519485526020850193909352838301919091526060830152519081900360800190f35b61043e610f33565b61043e6004803603602081101561052c57600080fd5b5035610f8a565b6102dd6004803603604081101561054957600080fd5b81019060208101813564010000000081111561056457600080fd5b82018360208201111561057657600080fd5b8035906020019184602083028401116401000000008311171561059857600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156105e857600080fd5b8201836020820111156105fa57600080fd5b8035906020019184602083028401116401000000008311171561061c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610fc1945050505050565b6102dd6004803603602081101561067057600080fd5b50356001600160a01b0316611047565b6102976004803603602081101561069657600080fd5b50356001600160a01b03166112cc565b6102dd6112de565b61043e6112ee565b6102dd600480360360408110156106cc57600080fd5b506001600160a01b038135169060200135611369565b6102dd600480360360408110156106f857600080fd5b506001600160a01b03813516906020013561147d565b6102dd6004803603602081101561072457600080fd5b50356001600160a01b031661149f565b61043e611531565b610744611597565b604080516001600160a01b039092168252519081900360200190f35b6107686115a6565b604080516001600160c01b03199092168252519081900360200190f35b6102dd6004803603604081101561079b57600080fd5b506001600160a01b0381351690602001356115af565b6102dd600480360360208110156107c757600080fd5b50356001600160a01b03166115bc565b6102dd6115d1565b61043e600480360360408110156107f557600080fd5b506001600160a01b0381351690602001356115da565b6102976118dc565b6102976118e2565b61043e6118e8565b610744611937565b6102dd6004803603602081101561084157600080fd5b50356001600160a01b0316611946565b6102976004803603604081101561086757600080fd5b506001600160a01b038135811691602001351661195b565b6102dd6004803603602081101561089557600080fd5b5035611978565b610297611999565b61043e600480360360408110156108ba57600080fd5b506001600160a01b038135169060200135151561199f565b6102dd600480360360408110156108e857600080fd5b506001600160a01b038135169060200135611a1a565b6102dd6004803603604081101561091457600080fd5b506001600160a01b038135169060200135611a56565b6102dd6004803603602081101561094057600080fd5b5035611a92565b6102dd6004803603604081101561095d57600080fd5b506001600160a01b038135169060200135611ab3565b6102dd6004803603604081101561098957600080fd5b506001600160a01b038135169060200135611e2a565b61043e600480360360208110156109b557600080fd5b50356001600160a01b0316611e66565b6102dd600480360360408110156109db57600080fd5b506001600160a01b038135169060200135611e9f565b60065481565b60025481565b600154600090600160a01b900460ff1615610a1757600080fd5b50336000908152600a602090815260408083206001600160a01b0386168452909152902081905560015b92915050565b6001600160a01b038116600090815260086020908152604080832033808552925282206001015482919082610a7d8684846122db565b9194509092505050915091565b60045481565b600c602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560c09490941b949293919290919060ff1687565b600154600090600160a01b900460ff1615610aef57600080fd5b6001600160a01b038416610b345760405162461bcd60e51b8152600401808060200182810382526023815260200180612c5f6023913960400191505060405180910390fd5b6001600160a01b0384166000908152600a60209081526040808320338452909152902054821115610b6457600080fd5b6001600160a01b0384166000908152600a60209081526040808320338452909152902054610b98908363ffffffff61239f16565b6001600160a01b0385166000908152600a60209081526040808320338452909152902055610bc78484846123fc565b5060019392505050565b60035468010000000000000000900460ff1681565b600080546001600160a01b03163314610bfe57600080fd5b610c08338361280a565b50600192915050565b6001600160a01b038216610c5a576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b604080516323b872dd60e01b81523360048201523060248201526044810183905290516001600160a01b038416916323b872dd9160648083019260209291908290030181600087803b158015610caf57600080fd5b505af1158015610cc3573d6000803e3d6000fd5b505050506040513d6020811015610cd957600080fd5b5051610d2c576040805162461bcd60e51b815260206004820181905260248201527f455243323020277472616e7366657246726f6d272063616c6c206661696c6564604482015290519081900360640190fd5b6001600160a01b0382166000908152600860209081526040808320338452909152902054610d60908263ffffffff612a8a16565b6001600160a01b03831660008181526008602090815260408083203380855290835292819020859055805193845290830191909152818101849052606082019290925290517fe57520e183743e5e5fb8e2304562449ccfe980ba4144b066aff77bcd98b678c19181900360800190a15050565b6000546001600160a01b03163314610dea57600080fd5b600d5460ff161515600114610dfe57600080fd5b6001600160a01b038116610e1157600080fd5b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b600080546001600160a01b03163314610e4d57600080fd5b610e55612c22565b968752506001600160c01b03199490941660208087019182526040808801958652606088019485526080880193845260a08801968752600160c0808a018281526001600160a01b039b909b166000908152600c90945291909220975188559151878201805467ffffffffffffffff19169190931c1790915592516002860155905160038501555160048401559051600583015591516006909101805460ff191691151591909117905590565b600860209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b6000546001600160a01b03163314610f4a57600080fd5b600080546040513031926001600160a01b03909216916108fc841502918491818181858888f19350505050158015610f86573d6000803e3d6000fd5b5050565b6000546001600160a01b03163314610fa157600080fd5b6000610fb482606463ffffffff612aeb16565b9050610f863033836123fc565b600080546001600160a01b03163314610fd957600080fd5b82516096811115610fe957600080fd5b60005b8181101561103c576000548551611034916001600160a01b03169087908490811061101357fe5b602002602001015186848151811061102757fe5b60200260200101516123fc565b600101610fec565b506001949350505050565b600154600090600160a01b900460ff16156110a2576040805162461bcd60e51b815260206004820152601660248201527529bcb9ba32b6902830bab9b2b210213c9020b236b4b760511b604482015290519081900360640190fd5b6001600160a01b0382166110eb576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b6001600160a01b0382163014611148576040805162461bcd60e51b815260206004820152601760248201527f4f6e6c79207069737369626c6520666f72204859504520000000000000000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600860209081526040808320338452909152902060020154600f5461118390429063ffffffff61239f16565b116111d5576040805162461bcd60e51b815260206004820152601760248201527f7761697420706572696f64206973206e6f74206f766572000000000000000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600860209081526040808320338452825280832060030154600990925290912054611215908263ffffffff612a8a16565b3360008181526009602081815260408084208690556001600160a01b0389168452600882528084209484529381529290912060010154915261125d919063ffffffff612a8a16565b6001600160a01b038416600081815260086020908152604080832033845282528083209485556003909401919091558251918252810183905281517f0fa859234b3c35d2136476e097ebfb39666c05648f72caece35e93d5d985184d929181900390910190a150600192915050565b60096020526000908152604090205481565b600154600160a01b900460ff1681565b6001546001600160a01b0316331461130557600080fd5b600154600080546040516001600160a01b0393841693909116917f7b9f4dbf19021732cc1236215fb8368569be3a9c57a729f6c306471afc35505191a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b600080546001600160a01b0316331461138157600080fd5b6001600160a01b0383166000908152600960205260409020546113aa908363ffffffff612a8a16565b6001600160a01b038416600081815260096020908152604080832094909455308252600881528382209282529190915220546113ec908363ffffffff612a8a16565b3060009081526008602090815260408083206001600160a01b0388168452909152902055600454611423908363ffffffff612a8a16565b600455600554611439908363ffffffff612a8a16565b60055560408051838152905130916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600192915050565b600080546001600160a01b0316331461149557600080fd5b610bc7838361280a565b600080546001600160a01b031633146114b757600080fd5b6001600160a01b0382166000908152600c602052604090206006015460ff16611505576001600160a01b0382166000908152600c60205260409020600601805460ff19166001179055611529565b6001600160a01b0382166000908152600c60205260409020600601805460ff191690555b506001919050565b6000546001600160a01b0316331461154857600080fd5b600d5460ff1661158a57600d8054600160ff199182168117909255600080546001600160a01b03168152600e6020526040902080549091169091179055611595565b600d805460ff191690555b565b6000546001600160a01b031681565b60035460c01b81565b6000610c083384846123fc565b600b6020526000908152604090205460ff1681565b600d5460ff1681565b600154600160a01b900460ff1615611632576040805162461bcd60e51b815260206004820152601660248201527529bcb9ba32b6902830bab9b2b210213c9020b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821630141561164857600080fd5b6001600160a01b038216611691576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600860209081526040808320338452909152902060020154600f546116cc90429063ffffffff61239f16565b11156116fa576001600160a01b03821660009081526008602090815260408083203384529091528120600301555b6001600160a01b03821660009081526008602090815260408083203384529091529020600381015460019091015482916117679161173791612a8a565b6001600160a01b03851660009081526008602090815260408083203384529091529020549063ffffffff61239f16565b10156117a45760405162461bcd60e51b8152600401808060200182810382526027815260200180612c826027913960400191505060405180910390fd5b6001600160a01b03821660009081526008602090815260408083203384529091529020546117d8908263ffffffff61239f16565b6001600160a01b03831660008181526008602090815260408083203380855290835281842095909555805163a9059cbb60e01b815260048101959095526024850186905251929363a9059cbb9360448083019491928390030190829087803b15801561184357600080fd5b505af1158015611857573d6000803e3d6000fd5b505050506040513d602081101561186d57600080fd5b50506001600160a01b03821660008181526008602090815260408083203380855290835292819020548151948552918401929092528282018490526060830152517f544b39701afd1119e68c6e95a6107ec843364e9fbaae5e99637a368cc82adfc89181900360800190a15050565b60055481565b600f5481565b6000546001600160a01b031633146118ff57600080fd5b600154600160a01b900460ff16611928576001805460ff60a01b1916600160a01b179055611595565b6001805460ff60a01b19169055565b6001546001600160a01b031681565b600e6020526000908152604090205460ff1681565b600a60209081526000928352604080842090915290825290205481565b600080546001600160a01b0316331461199057600080fd5b50600f55600190565b60075481565b6000546001600160a01b031633146119b657600080fd5b6001600160a01b0382166000818152600b6020908152604091829020805460ff191685151590811790915582519384529083015280517f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a59281900390910190a15050565b600080546001600160a01b03163314611a3257600080fd5b506001600160a01b03919091166000908152600c6020526040902060050155600190565b600080546001600160a01b03163314611a6e57600080fd5b506001600160a01b03919091166000908152600c6020526040902060030155600190565b600080546001600160a01b03163314611aaa57600080fd5b50600755600190565b600154600090600160a01b900460ff1615611b0e576040805162461bcd60e51b815260206004820152601660248201527529bcb9ba32b6902830bab9b2b210213c9020b236b4b760511b604482015290519081900360640190fd5b6001600160a01b038316611b57576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b3380611b98576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b6001600160a01b038085166000908152600860209081526040808320938516835292905220600101548311801590611bd05750600083115b611c0b5760405162461bcd60e51b8152600401808060200182810382526022815260200180612cea6022913960400191505060405180910390fd5b6001600160a01b03808516600090815260086020908152604080832093851683529290529081206001015490611c428684846122db565b9050611c4d81612b44565b611c8f576040805162461bcd60e51b815260206004820152600e60248201526d1b5a5b9d1a5b99c819985a5b195960921b604482015290519081900360640190fd5b3060009081526008602090815260408083206001600160a01b0387168452909152902060030154611cc6908263ffffffff612a8a16565b3060009081526008602081815260408084206001600160a01b0389811680875291845282862060030196909655948b168452918152818320938352929092522060010154611d1a908663ffffffff61239f16565b6001600160a01b03808816600081815260086020908152604080832094891683529390529190912060010191909155301415611db3576001600160a01b03808716600090815260086020908152604080832093871683529290522060030154611d89908663ffffffff612a8a16565b6001600160a01b038088166000908152600860209081526040808320938816835292905220600301555b6001600160a01b038087166000818152600860209081526040808320948816835293815290839020426002909101558251918252810187905280820183905290517f05ed4f81bc443fc929332d09ad813fcbd31f52653b5e27569abd927f851836d39181900360600190a150600195945050505050565b600080546001600160a01b03163314611e4257600080fd5b506001600160a01b03919091166000908152600c6020526040902060040155600190565b6000546001600160a01b03163314611e7d57600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600154600090600160a01b900460ff1615611efa576040805162461bcd60e51b815260206004820152601660248201527529bcb9ba32b6902830bab9b2b210213c9020b236b4b760511b604482015290519081900360640190fd5b6001600160a01b0383166000908152600c602052604090206006015460ff16611f6a576040805162461bcd60e51b815260206004820181905260248201527f746f6b656e2074797065206e6f7420616c6c6f77656420746f20667265657a65604482015290519081900360640190fd5b6001600160a01b038316611fb3576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b3380611ff4576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b6001600160a01b0384811660009081526008602090815260408083209385168352929052206003810154600190910154612064916120329190612a8a565b6001600160a01b038087166000908152600860209081526040808320938716835292905220549063ffffffff61239f16565b831115801561208e57506001600160a01b0384166000908152600c60205260409020600301548310155b6120c95760405162461bcd60e51b8152600401808060200182810382526022815260200180612cea6022913960400191505060405180910390fd5b6001600160a01b0380851660009081526008602090815260408083209385168352929052908120600101549081156121b2576121068684846122db565b905061211181612b44565b612153576040805162461bcd60e51b815260206004820152600e60248201526d1b5a5b9d1a5b99c819985a5b195960921b604482015290519081900360640190fd5b3060009081526008602090815260408083206001600160a01b038716845290915290206003015461218a908263ffffffff612a8a16565b3060009081526008602090815260408083206001600160a01b03881684529091529020600301555b6001600160a01b038087166000908152600860209081526040808320938716835292905220600101546121eb908663ffffffff612a8a16565b6001600160a01b03808816600081815260086020908152604080832094891683529390529190912060010191909155301415612264576001600160a01b03831660009081526009602052604090205461224a908663ffffffff61239f16565b6001600160a01b0384166000908152600960205260409020555b6001600160a01b038087166000818152600860209081526040808320948816835293815290839020426002909101558251918252810187905280820183905290517f72cb02c58250b8f066d50b43c9a45a6d81b4ac7435f56ae25ed9f7e0e2f8ecfc9181900360600190a150600195945050505050565b6001600160a01b0383166000908152600c60205260408120600401548190612304908490612b7b565b6001600160a01b0386166000908152600c60205260408120600501549192509061232f908390612b7b565b6001600160a01b038088166000908152600860209081526040808320938a1683529290529081206002015491925042919091039062015180821061238357612380826201518063ffffffff612bb816565b90505b612393818463ffffffff612aeb16565b98975050505050505050565b6000828211156123f6576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600154600160a01b900460ff161561244e576040805162461bcd60e51b815260206004820152601060248201526f7361666547756172642041637469766560801b604482015290519081900360640190fd5b6001600160a01b03821661249b576040805162461bcd60e51b815260206004820152600f60248201526e0746f2069732061646472657373203608c1b604482015290519081900360640190fd5b6001600160a01b0383166000908152600960205260409020548111156124fd576040805162461bcd60e51b81526020600482015260126024820152716e6f2062616c616e636520696e2066726f6d60701b604482015290519081900360640190fd5b6001600160a01b038216600090815260096020526040902054612526818363ffffffff612a8a16565b101561256c576040805162461bcd60e51b815260206004820152601060248201526f6f766572666c6f772062616c616e636560801b604482015290519081900360640190fd5b6001600160a01b0383166000908152600b602052604090205460ff16156125d0576040805162461bcd60e51b8152602060048201526013602482015272333937b69030b1b1b7bab73a10333937bd32b760691b604482015290519081900360640190fd5b6001600160a01b0382166000908152600b602052604090205460ff1615612632576040805162461bcd60e51b81526020600482015260116024820152703a379030b1b1b7bab73a10333937bd32b760791b604482015290519081900360640190fd5b6001600160a01b03831660009081526009602052604090205461265b908263ffffffff61239f16565b6001600160a01b0384166000818152600960209081526040808320949094553082526008815283822092825291909152205461269d908263ffffffff61239f16565b3060009081526008602090815260408083206001600160a01b0388811685529083528184209490945592851682526009905220546126e1908263ffffffff612a8a16565b6001600160a01b03831660008181526009602090815260408083209490945530825260088152838220928252919091522054612723908263ffffffff612a8a16565b3060009081526008602090815260408083206001600160a01b0387811685529252822092909255805490911633148061275b57503330145b6127b95761276b82600754612b7b565b9050612777838261280a565b6127b9576040805162461bcd60e51b815260206004820152600e60248201526d189d5c9b9a5b99c819985a5b195960921b604482015290519081900360640190fd5b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a350505050565b600154600090600160a01b900460ff161561285f576040805162461bcd60e51b815260206004820152601060248201526f7361666547756172642041637469766560801b604482015290519081900360640190fd5b6001600160a01b03831661287257600080fd5b6001600160a01b03831660009081526009602052604090205482111561289757600080fd5b6001600160a01b0383166000908152600b602052604090205460ff16156128f9576040805162461bcd60e51b81526020600482015260116024820152703a379030b1b1b7bab73a10333937bd32b760791b604482015290519081900360640190fd5b6001600160a01b038316600090815260096020526040902054612922908363ffffffff61239f16565b6001600160a01b03841660008181526009602090815260408083209490945530825260088152838220928252919091522054612964908363ffffffff61239f16565b3060009081526008602090815260408083206001600160a01b038816845282528220929092558052600990527fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b546129c2908363ffffffff612a8a16565b7fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b55306000908152600860209081526040808320838052909152902054612a0f908363ffffffff612a8a16565b306000908152600860209081526040808320838052909152902055600454612a3d908363ffffffff61239f16565b6004556040805183815290516000916001600160a01b038616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600192915050565b600082820183811015612ae4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082612afa57506000610a41565b82820282848281612b0757fe5b0414612ae45760405162461bcd60e51b8152600401808060200182810382526021815260200180612cc96021913960400191505060405180910390fd5b600454600090612b5a908363ffffffff612a8a16565b600455600554612b70908363ffffffff612a8a16565b600555506001919050565b600061271080831115612b8d57600080fd5b6000612baf82612ba3878763ffffffff612aeb16565b9063ffffffff612bb816565b95945050505050565b6000808211612c0e576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481612c1957fe5b04949350505050565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091529056fe7472616e736665722066726f6d206164646572737328302920697320696e76616c6964526571756972656420616d6f756e74206973206e6f74206672656520746f2077697468647261774164647265737328302920666f756e642c2063616e277420636f6e74696e7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776c657373207468616e207265717569726564206f72206c6573732062616c616e6365a265627a7a7230582055853f24039b1ded6754d632b64fdf8c6b70c28cf4b1871f527687a98130d4d964736f6c634300050a0032

Deployed Bytecode Sourcemap

17659:11218:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17659:11218:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7429:28;;;:::i;:::-;;;;;;;;;;;;;;;;7251:19;;;:::i;15621:201::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;15621:201:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;28540:332;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28540:332:0;-1:-1:-1;;;;;28540:332:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7353:26;;;:::i;9584:56::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9584:56:0;-1:-1:-1;;;;;9584:56:0;;:::i;:::-;;;;;;;-1:-1:-1;;;;;;9584:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14880:436;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14880:436:0;;;;;;;;;;;;;;;;;:::i;7304:21::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16796:143;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16796:143:0;;:::i;22471:594::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;22471:594:0;;;;;;;;:::i;:::-;;18651:211;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18651:211:0;-1:-1:-1;;;;;18651:211:0;;:::i;20827:614::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;20827:614:0;;;;;;;;;-1:-1:-1;;;;;;20827:614:0;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7796:67::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7796:67:0;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19618:122;;;:::i;19322:188::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19322:188:0;;:::i;19779:492::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19779:492:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;19779:492:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;19779:492: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;19779:492:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;19779:492:0;;;;;;;;-1:-1:-1;19779:492:0;;-1:-1:-1;;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;19779:492:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;19779:492: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;19779:492:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;19779:492:0;;-1:-1:-1;19779:492:0;;-1:-1:-1;;;;;19779:492:0:i;24073:739::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24073:739:0;-1:-1:-1;;;;;24073:739:0;;:::i;7926:45::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7926:45:0;-1:-1:-1;;;;;7926:45:0;;:::i;5824:21::-;;;:::i;6692:204::-;;;:::i;16021:570::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;16021:570:0;;;;;;;;:::i;17238:157::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;17238:157:0;;;;;;;;:::i;21449:365::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21449:365:0;-1:-1:-1;;;;;21449:365:0;;:::i;18200:281::-;;;:::i;5747:28::-;;;:::i;:::-;;;;-1:-1:-1;;;;;5747:28:0;;;;;;;;;;;;;;7277:20;;;:::i;:::-;;;;-1:-1:-1;;;;;;7277:20:0;;;;;;;;;;;;;;14407:153;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14407:153:0;;;;;;;;:::i;8101:46::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8101:46:0;-1:-1:-1;;;;;8101:46:0;;:::i;17895:38::-;;;:::i;23098:847::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;23098:847:0;;;;;;;;:::i;7386:36::-;;;:::i;20309:::-;;;:::i;6904:221::-;;;:::i;5784:31::-;;;:::i;17944:44::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17944:44:0;-1:-1:-1;;;;;17944:44:0;;:::i;7978:66::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7978:66:0;;;;;;;;;;:::i;20654:165::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20654:165:0;;:::i;7466:29::-;;;:::i;19052:151::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;19052:151:0;;;;;;;;;;:::i;22222:204::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;22222:204:0;;;;;;;;:::i;21822:::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;21822:204:0;;;;;;;;:::i;8904:154::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8904:154:0;;:::i;27206:1326::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;27206:1326:0;;;;;;;;:::i;22034:180::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;22034:180:0;;;;;;;;:::i;6449:116::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6449:116:0;-1:-1:-1;;;;;6449:116:0;;:::i;24899:1603::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;24899:1603:0;;;;;;;;:::i;7429:28::-;;;;:::o;7251:19::-;;;;:::o;15621:201::-;15731:9;;15697:12;;-1:-1:-1;;;15731:9:0;;;;15730:10;15722:19;;;;;;-1:-1:-1;15762:10:0;15752:21;;;;:9;:21;;;;;;;;-1:-1:-1;;;;;15752:31:0;;;;;;;;;:40;;;15810:4;15621:201;;;;;:::o;28540:332::-;-1:-1:-1;;;;;28712:13:0;;28597:17;28712:13;;;:6;:13;;;;;;;;28672:10;28712:26;;;;;;;:38;;;28597:17;;28672:10;28597:17;28780:41;28719:5;28672:10;28712:38;28780:10;:41::i;:::-;28840:11;;-1:-1:-1;28761:60:0;;-1:-1:-1;;;28540:332:0;;;:::o;7353:26::-;;;;:::o;9584:56::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14880:436::-;14996:9;;14962:12;;-1:-1:-1;;;14996:9:0;;;;14995:10;14987:19;;;;;;-1:-1:-1;;;;;15025:19:0;;15017:66;;;;-1:-1:-1;;;15017:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15112:16:0;;;;;;:9;:16;;;;;;;;15129:10;15112:28;;;;;;;;15102:38;;;15094:47;;;;;;-1:-1:-1;;;;;15206:16:0;;;;;;:9;:16;;;;;;;;15223:10;15206:28;;;;;;;;:40;;15239:6;15206:40;:32;:40;:::i;:::-;-1:-1:-1;;;;;15175:16:0;;;;;;:9;:16;;;;;;;;15192:10;15175:28;;;;;;;:71;15257:29;15185:5;15274:3;15279:6;15257:9;:29::i;:::-;-1:-1:-1;15304:4:0;14880:436;;;;;:::o;7304:21::-;;;;;;;;;:::o;16796:143::-;16852:12;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;16877:32;16890:10;16902:6;16877:12;:32::i;:::-;-1:-1:-1;16927:4:0;;16796:143;-1:-1:-1;;16796:143:0:o;22471:594::-;-1:-1:-1;;;;;22687:17:0;;22679:61;;;;;-1:-1:-1;;;22679:61:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22679:61:0;;;;;;;;;;;;;;;22759:69;;;-1:-1:-1;;;22759:69:0;;22794:10;22759:69;;;;22814:4;22759:69;;;;;;;;;;;;-1:-1:-1;;;;;22759:34:0;;;;;:69;;;;;;;;;;;;;;-1:-1:-1;22759:34:0;:69;;;5:2:-1;;;;30:1;27;20:12;5:2;22759:69:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22759:69:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22759:69:0;22751:113;;;;;-1:-1:-1;;;22751:113:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22914:13:0;;;;;;:6;:13;;;;;;;;22928:10;22914:25;;;;;;;:36;:48;;22955:6;22914:48;:40;:48;:::i;:::-;-1:-1:-1;;;;;22875:13:0;;;;;;:6;:13;;;;;;;;22889:10;22875:25;;;;;;;;;;:87;;;22978:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22471:594;;:::o;18651:211::-;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;18734:18;;;;:26;;:18;:26;18726:35;;;;;;-1:-1:-1;;;;;18784:25:0;;18776:34;;;;;;-1:-1:-1;;;;;18825:24:0;;;;;:11;:24;;;;;:31;;-1:-1:-1;;18825:31:0;18852:4;18825:31;;;18651:211::o;20827:614::-;21020:4;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;21042:25;;:::i;:::-;21080;;;-1:-1:-1;;;;;;;21116:29:0;;;;:16;;;;:29;;;21156:17;;;;:31;;;21198:21;;;:39;;;21248:15;;;:27;;;21292:21;;;:39;;;21366:4;21345:20;;;;:25;;;-1:-1:-1;;;;;21383:21:0;;;;-1:-1:-1;21383:21:0;;;:14;:21;;;;;;;:28;;;;;;;;;;;-1:-1:-1;;21383:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21383:28:0;;;;;;;;;;21366:4;20827:614::o;7796:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19618:122::-;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;19670:14;19712:5;;:22;;19693:4;19685:21;;-1:-1:-1;;;;;19712:5:0;;;;:22;;;;;19685:21;;19712:22;19670:14;19712:22;19685:21;19712:5;:22;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19712:22:0;6430:1;19618:122::o;19322:188::-;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;19396:19;19418:16;:7;19430:3;19418:16;:11;:16;:::i;:::-;19396:38;;19449:49;19467:4;19474:10;19486:11;19449:9;:49::i;19779:492::-;19877:4;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;19921:17;;19979:3;19961:21;;;19953:30;;;;;;20002:6;19998:236;20018:14;20014:1;:18;19998:236;;;20181:5;;20188:13;;20171:47;;-1:-1:-1;;;;;20181:5:0;;20188:10;;20199:1;;20188:13;;;;;;;;;;;;20203:11;20215:1;20203:14;;;;;;;;;;;;;;20171:9;:47::i;:::-;20034:3;;19998:236;;;-1:-1:-1;20255:4:0;;19779:492;-1:-1:-1;;;;19779:492:0:o;24073:739::-;24158:9;;24127:4;;-1:-1:-1;;;24158:9:0;;;;24157:10;24149:44;;;;;-1:-1:-1;;;24149:44:0;;;;;;;;;;;;-1:-1:-1;;;24149:44:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24212:17:0;;24204:61;;;;;-1:-1:-1;;;24204:61:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;24204:61:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24284:22:0;;24301:4;24284:22;24276:57;;;;;-1:-1:-1;;;24276:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24379:13:0;;;;;;:6;:13;;;;;;;;24393:10;24379:25;;;;;;;:36;;;24360:15;;24352:24;;:3;;:24;:7;:24;:::i;:::-;:63;24344:98;;;;;-1:-1:-1;;;24344:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24467:13:0;;24453:11;24467:13;;;:6;:13;;;;;;;;24481:10;24467:25;;;;;;;:35;;;24537:9;:21;;;;;;;:33;;24467:35;24537:33;:25;:33;:::i;:::-;24523:10;24513:21;;;;:9;:21;;;;;;;;:57;;;-1:-1:-1;;;;;24646:13:0;;;;:6;:13;;;;;:25;;;;;;;;;;:37;;;24620:21;;:65;;24513:57;24620:65;:25;:65;:::i;:::-;-1:-1:-1;;;;;24581:13:0;;;;;;:6;:13;;;;;;;;24595:10;24581:25;;;;;;;:104;;;24696:35;;;;:39;;;;24752:30;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24800:4:0;;24073:739;-1:-1:-1;;24073:739:0:o;7926:45::-;;;;;;;;;;;;;:::o;5824:21::-;;;-1:-1:-1;;;5824:21:0;;;;;:::o;6692:204::-;6765:8;;-1:-1:-1;;;;;6765:8:0;6751:10;:22;6743:31;;;;;;6820:8;;;6813:5;;6790:39;;-1:-1:-1;;;;;6820:8:0;;;;6813:5;;;;6790:39;;;6848:8;;;;6840:16;;-1:-1:-1;;;;;;6840:16:0;;;-1:-1:-1;;;;;6848:8:0;;6840:16;;;;6867:21;;;6692:204::o;16021:570::-;16105:12;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;-1:-1:-1;;;;;16145:17:0;;;;;;:9;:17;;;;;;:35;;16167:12;16145:35;:21;:35;:::i;:::-;-1:-1:-1;;;;;16125:17:0;;;;;;:9;:17;;;;;;;;:55;;;;16253:4;16238:21;;:6;:21;;;;;:29;;;;;;;;:40;:58;;16283:12;16238:58;:44;:58;:::i;:::-;16210:4;16195:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;16195:29:0;;;;;;;;;:101;16391:11;;:29;;16407:12;16391:29;:15;:29;:::i;:::-;16377:11;:43;16459:21;;:39;;16485:12;16459:39;:25;:39;:::i;:::-;16435:21;:63;16510:49;;;;;;;;16539:4;;16527:1;;16510:49;;;;;;;;;-1:-1:-1;16581:4:0;16021:570;;;;:::o;17238:157::-;17313:12;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;17338:27;17351:5;17358:6;17338:12;:27::i;21449:365::-;21525:4;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;-1:-1:-1;;;;;21551:21:0;;;;;;:14;:21;;;;;:37;;;;;21547:232;;-1:-1:-1;;;;;21623:21:0;;;;;;:14;:21;;;;;:37;;:44;;-1:-1:-1;;21623:44:0;21663:4;21623:44;;;21547:232;;;-1:-1:-1;;;;;21718:21:0;;21758:5;21718:21;;;:14;:21;;;;;:37;;:45;;-1:-1:-1;;21718:45:0;;;21547:232;-1:-1:-1;21797:4:0;21449:365;;;:::o;18200:281::-;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;18271:18;;;;18267:209;;18309:18;:25;;18330:4;-1:-1:-1;;18309:25:0;;;;;;;;-1:-1:-1;18365:5:0;;-1:-1:-1;;;;;18365:5:0;18353:18;;:11;:18;;;;;:24;;;;;;;;;;18267:209;;;18430:18;:26;;-1:-1:-1;;18430:26:0;;;18267:209;18200:281::o;5747:28::-;;;-1:-1:-1;;;;;5747:28:0;;:::o;7277:20::-;;;;;;:::o;14407:153::-;14470:12;14496:34;14506:10;14518:3;14523:6;14496:9;:34::i;8101:46::-;;;;;;;;;;;;;;;:::o;17895:38::-;;;;;;:::o;23098:847::-;23181:9;;-1:-1:-1;;;23181:9:0;;;;23180:10;23172:44;;;;;-1:-1:-1;;;23172:44:0;;;;;;;;;;;;-1:-1:-1;;;23172:44:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;23235:22:0;;23252:4;23235:22;;23227:31;;;;;;-1:-1:-1;;;;;23277:17:0;;23269:61;;;;;-1:-1:-1;;;23269:61:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23269:61:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;23371:13:0;;;;;;:6;:13;;;;;;;;23385:10;23371:25;;;;;;;:36;;;23352:15;;23344:24;;:3;;:24;:7;:24;:::i;:::-;:63;23341:143;;;-1:-1:-1;;;;;23432:13:0;;23470:1;23432:13;;;:6;:13;;;;;;;;23446:10;23432:25;;;;;;;:35;;:39;23341:143;-1:-1:-1;;;;;23585:13:0;;;;;;:6;:13;;;;;;;;23599:10;23585:25;;;;;;;:35;;;;23543:37;;;;;23626:6;;23502:120;;23543:78;;:41;:78::i;:::-;-1:-1:-1;;;;;23502:13:0;;;;;;:6;:13;;;;;;;;23516:10;23502:25;;;;;;;:36;;:120;:40;:120;:::i;:::-;:130;;23494:181;;;;-1:-1:-1;;;23494:181:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23732:13:0;;;;;;:6;:13;;;;;;;;23746:10;23732:25;;;;;;;:36;:48;;23773:6;23732:48;:40;:48;:::i;:::-;-1:-1:-1;;;;;23693:13:0;;;;;;:6;:13;;;;;;;;23707:10;23693:25;;;;;;;;;:87;;;;23791:50;;-1:-1:-1;;;23791:50:0;;;;;;;;;;;;;;;;23693:13;;23791:30;;:50;;;;;;;;;;;;;;23693:13;23791:50;;;5:2:-1;;;;30:1;27;20:12;5:2;23791:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23791:50:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;;23900:13:0;;;;;;:6;23791:50;23900:13;;;;;;;23880:10;23900:25;;;;;;;;;;:36;23857:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23098:847;;:::o;7386:36::-;;;;:::o;20309:::-;;;;:::o;6904:221::-;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;6974:9;;-1:-1:-1;;;6974:9:0;;;;6970:148;;7030:4;7018:16;;-1:-1:-1;;;;7018:16:0;-1:-1:-1;;;7018:16:0;;;6970:148;;;7085:9;:17;;-1:-1:-1;;;;7085:17:0;;;6904:221::o;5784:31::-;;;-1:-1:-1;;;;;5784:31:0;;:::o;17944:44::-;;;;;;;;;;;;;;;:::o;7978:66::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;20654:165::-;20735:4;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;-1:-1:-1;20757:15:0;:32;20807:4;;20654:165::o;7466:29::-;;;;:::o;19052:151::-;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;-1:-1:-1;;;;;19128:21:0;;;;;;:13;:21;;;;;;;;;:30;;-1:-1:-1;;19128:30:0;;;;;;;;;;19170:27;;;;;;;;;;;;;;;;;;;;;19052:151;;:::o;22222:204::-;22316:4;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;-1:-1:-1;;;;;;22338:21:0;;;;;;;;:14;:21;;;;;:38;;:58;22414:4;;22222:204::o;21822:::-;21916:4;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;-1:-1:-1;;;;;;21938:21:0;;;;;;;;:14;:21;;;;;:38;;:58;22014:4;;21822:204::o;8904:154::-;8972:12;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;-1:-1:-1;9002:11:0;:26;9046:4;;8904:154::o;27206:1326::-;27309:9;;27278:4;;-1:-1:-1;;;27309:9:0;;;;27308:10;27300:44;;;;;-1:-1:-1;;;27300:44:0;;;;;;;;;;;;-1:-1:-1;;;27300:44:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;27363:17:0;;27355:61;;;;;-1:-1:-1;;;27355:61:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;27355:61:0;;;;;;;;;;;;;;;27449:10;27478:24;27470:68;;;;;-1:-1:-1;;;27470:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;27470:68:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;27568:13:0;;;;;;;:6;:13;;;;;;;;:26;;;;;;;;;:38;;;27557:49;;;;;:63;;;27619:1;27610:6;:10;27557:63;27549:110;;;;-1:-1:-1;;;27549:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27818:13:0;;;27799:16;27818:13;;;:6;:13;;;;;;;;:26;;;;;;;;;;;:38;;;;27886:41;27825:5;27832:11;27818:38;27886:10;:41::i;:::-;27867:60;;27946:25;27959:11;27946:12;:25::i;:::-;27938:51;;;;;-1:-1:-1;;;27938:51:0;;;;;;;;;;;;-1:-1:-1;;;27938:51:0;;;;;;;;;;;;;;;28062:4;28047:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;28047:34:0;;;;;;;;;:44;;;:61;;28096:11;28047:61;:48;:61;:::i;:::-;28015:4;28000:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;28000:34:0;;;;;;;;;;;;:44;;:108;;;;28177:13;;;;;;;;;;;:26;;;;;;;;:38;;;:50;;28220:6;28177:50;:42;:50;:::i;:::-;-1:-1:-1;;;;;28136:13:0;;;;;;;:6;:13;;;;;;;;:26;;;;;;;;;;;;:38;;:91;;;;28257:4;28242:20;28238:149;;;-1:-1:-1;;;;;28327:13:0;;;;;;;:6;:13;;;;;;;;:26;;;;;;;;;:36;;;:48;;28368:6;28327:48;:40;:48;:::i;:::-;-1:-1:-1;;;;;28288:13:0;;;;;;;:6;:13;;;;;;;;:26;;;;;;;;;:36;;:87;28238:149;-1:-1:-1;;;;;28399:13:0;;;;;;;:6;:13;;;;;;;;:26;;;;;;;;;;;;28439:3;28399:37;;;;:43;28458:44;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28520:4:0;;27206:1326;-1:-1:-1;;;;;27206:1326:0:o;22034:180::-;22116:4;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;-1:-1:-1;;;;;;22138:21:0;;;;;;;;:14;:21;;;;;:32;;:46;22202:4;;22034:180::o;6449:116::-;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;6537:8;:20;;-1:-1:-1;;;;;;6537:20:0;-1:-1:-1;;;;;6537:20:0;;;;;;;;;;6449:116::o;24899:1603::-;25004:9;;24973:4;;-1:-1:-1;;;25004:9:0;;;;25003:10;24995:44;;;;;-1:-1:-1;;;24995:44:0;;;;;;;;;;;;-1:-1:-1;;;24995:44:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;25058:21:0;;;;;;:14;:21;;;;;:37;;;;;25050:81;;;;;-1:-1:-1;;;25050:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25150:17:0;;25142:61;;;;;-1:-1:-1;;;25142:61:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;25142:61:0;;;;;;;;;;;;;;;25236:10;25265:24;25257:68;;;;;-1:-1:-1;;;25257:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;25257:68:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;25442:13:0;;;;;;;:6;:13;;;;;;;;:26;;;;;;;;;:36;;;;25399:38;;;;;25357:123;;25399:80;;:38;:42;:80::i;:::-;-1:-1:-1;;;;;25357:13:0;;;;;;;:6;:13;;;;;;;;:26;;;;;;;;;:37;;:123;:41;:123;:::i;:::-;25346:6;:134;;:186;;;;-1:-1:-1;;;;;;25494:21:0;;;;;;:14;:21;;;;;:38;;;25484:48;;;25346:186;25338:233;;;;-1:-1:-1;;;25338:233:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25743:13:0;;;25724:16;25743:13;;;:6;:13;;;;;;;;:26;;;;;;;;;;;:38;;;;25823:15;;25819:301;;25878:41;25889:5;25895:11;25907;25878:10;:41::i;:::-;25864:55;;25942:25;25955:11;25942:12;:25::i;:::-;25934:51;;;;;-1:-1:-1;;;25934:51:0;;;;;;;;;;;;-1:-1:-1;;;25934:51:0;;;;;;;;;;;;;;;26062:4;26047:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;26047:34:0;;;;;;;;;:44;;;:61;;26096:11;26047:61;:48;:61;:::i;:::-;26015:4;26000:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;26000:34:0;;;;;;;;;:44;;:108;25819:301;-1:-1:-1;;;;;26173:13:0;;;;;;;:6;:13;;;;;;;;:26;;;;;;;;;:38;;;:50;;26216:6;26173:50;:42;:50;:::i;:::-;-1:-1:-1;;;;;26132:13:0;;;;;;;:6;:13;;;;;;;;:26;;;;;;;;;;;;:38;;:91;;;;26253:4;26238:20;26234:121;;;-1:-1:-1;;;;;26309:22:0;;;;;;:9;:22;;;;;;:34;;26336:6;26309:34;:26;:34;:::i;:::-;-1:-1:-1;;;;;26284:22:0;;;;;;:9;:22;;;;;:59;26234:121;-1:-1:-1;;;;;26365:13:0;;;;;;;:6;:13;;;;;;;;:26;;;;;;;;;;;;26405:3;26365:37;;;;:43;26426:46;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26490:4:0;;24899:1603;-1:-1:-1;;;;;24899:1603:0:o;26510:609::-;-1:-1:-1;;;;;26667:21:0;;26592:7;26667:21;;;:14;:21;;;;;:32;;;26592:7;;26640:60;;26660:6;;26640:19;:60::i;:::-;-1:-1:-1;;;;;26769:21:0;;26711:19;26769:21;;;:14;:21;;;;;:38;;;26617:83;;-1:-1:-1;26711:19:0;26733:75;;26617:83;;26733:19;:75::i;:::-;-1:-1:-1;;;;;26847:13:0;;;26819:18;26847:13;;;:6;:13;;;;;;;;:19;;;;;;;;;;;:30;;;26711:97;;-1:-1:-1;26841:3:0;:36;;;;;26938:5;26921:22;;26917:147;;27027:24;:13;27045:5;27027:24;:17;:24;:::i;:::-;27014:37;;26917:147;27081:30;:10;27096:14;27081:30;:14;:30;:::i;:::-;27074:37;26510:609;-1:-1:-1;;;;;;;;26510:609:0:o;3296:184::-;3354:7;3387:1;3382;:6;;3374:49;;;;;-1:-1:-1;;;3374:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3446:5:0;;;3296:184::o;11023:1612::-;11116:9;;-1:-1:-1;;;11116:9:0;;;;11115:10;11107:38;;;;;-1:-1:-1;;;11107:38:0;;;;;;;;;;;;-1:-1:-1;;;11107:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11160:17:0;;11151:45;;;;;-1:-1:-1;;;11151:45:0;;;;;;;;;;;;-1:-1:-1;;;11151:45:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11296:16:0;;;;;;:9;:16;;;;;;:26;-1:-1:-1;11296:26:0;11287:58;;;;;-1:-1:-1;;;11287:58:0;;;;;;;;;;;;-1:-1:-1;;;11287:58:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11438:14:0;;;;;;:9;:14;;;;;;11408:26;11438:14;11427:6;11408:26;:18;:26;:::i;:::-;:44;;11399:73;;;;;-1:-1:-1;;;11399:73:0;;;;;;;;;;;;-1:-1:-1;;;11399:73:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11510:20:0;;;;;;:13;:20;;;;;;;;11509:21;11501:52;;;;;-1:-1:-1;;;11501:52:0;;;;;;;;;;;;-1:-1:-1;;;11501:52:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11617:18:0;;;;;;:13;:18;;;;;;;;11616:19;11608:48;;;;;-1:-1:-1;;;11608:48:0;;;;;;;;;;;;-1:-1:-1;;;11608:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11735:16:0;;;;;;:9;:16;;;;;;:28;;11756:6;11735:28;:20;:28;:::i;:::-;-1:-1:-1;;;;;11716:16:0;;;;;;:9;:16;;;;;;;;:47;;;;11866:4;11851:21;;:6;:21;;;;;:28;;;;;;;;:39;:51;;11895:6;11851:51;:43;:51;:::i;:::-;11824:4;11809:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;11809:28:0;;;;;;;;;;;:93;;;;11975:14;;;;;:9;:14;;;;:26;;11994:6;11975:26;:18;:26;:::i;:::-;-1:-1:-1;;;;;11958:14:0;;;;;;:9;:14;;;;;;;;:43;;;;12111:4;12096:21;;:6;:21;;;;;:26;;;;;;;;:37;:49;;12138:6;12096:49;:41;:49;:::i;:::-;12071:4;12056:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;12056:26:0;;;;;;;;;:89;;;;12269:5;;12056:21;;12269:5;12255:10;:19;;:50;;-1:-1:-1;12278:10:0;12300:4;12278:27;12255:50;12250:322;;12402:39;12422:6;12429:11;;12402:19;:39::i;:::-;12390:51;;12485:28;12498:3;12503:9;12485:12;:28::i;:::-;12477:54;;;;;-1:-1:-1;;;12477:54:0;;;;;;;;;;;;-1:-1:-1;;;12477:54:0;;;;;;;;;;;;;;;12598:3;-1:-1:-1;;;;;12582:27:0;12591:5;-1:-1:-1;;;;;12582:27:0;;12602:6;12582:27;;;;;;;;;;;;;;;;;;11023:1612;;;;:::o;12648:1182::-;12773:9;;12723:12;;-1:-1:-1;;;12773:9:0;;;;12772:10;12764:38;;;;;-1:-1:-1;;;12764:38:0;;;;;;;;;;;;-1:-1:-1;;;12764:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;12825:23:0;;12817:32;;;;;;-1:-1:-1;;;;;12872:20:0;;;;;;:9;:20;;;;;;:34;-1:-1:-1;12872:34:0;12864:43;;;;;;-1:-1:-1;;;;;12958:24:0;;;;;;:13;:24;;;;;;;;12957:25;12949:54;;;;;-1:-1:-1;;;12949:54:0;;;;;;;;;;;;-1:-1:-1;;;12949:54:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;13086:20:0;;;;;;:9;:20;;;;;;:36;;13111:10;13086:36;:24;:36;:::i;:::-;-1:-1:-1;;;;;13063:20:0;;;;;;:9;:20;;;;;;;;:59;;;;13229:4;13214:21;;:6;:21;;;;;:32;;;;;;;;:43;:59;;13262:10;13214:59;:47;:59;:::i;:::-;13183:4;13168:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;13168:32:0;;;;;;;;:105;;;;13353:21;;:9;:21;;;;:37;;13379:10;13353:37;:25;:37;:::i;:::-;13329:21;:61;13507:4;13329:21;13492;;;:6;13329:21;13492;;;13329;13492;;;:33;;;;;;;;:44;:60;;13541:10;13492:60;:48;:60;:::i;:::-;13460:4;13445:21;;;;:6;:21;;;;;;;;:33;;;;;;;;:107;13642:11;;:27;;13658:10;13642:27;:15;:27;:::i;:::-;13628:11;:41;13692:42;;;;;;;;13720:1;;-1:-1:-1;;;;;13692:42:0;;;;;;;;;;;;-1:-1:-1;13802:4:0;12648:1182;;;;:::o;2840:181::-;2898:7;2930:5;;;2954:6;;;;2946:46;;;;;-1:-1:-1;;;2946:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3012:1;2840:181;-1:-1:-1;;;2840:181:0:o;3731:470::-;3789:7;4033:6;4029:47;;-1:-1:-1;4063:1:0;4056:8;;4029:47;4100:5;;;4104:1;4100;:5;:1;4124:5;;;;;:10;4116:56;;;;-1:-1:-1;;;4116:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13836:324;13958:11;;13899:12;;13958:29;;13974:12;13958:29;:15;:29;:::i;:::-;13944:11;:43;14026:21;;:39;;14052:12;14026:39;:25;:39;:::i;:::-;14002:21;:63;-1:-1:-1;14150:4:0;13836:324;;;:::o;8629:264::-;8720:7;8763:5;8787:19;;;;8779:28;;;;;;8818:9;8830:36;8859:6;8830:24;:9;8844;8830:24;:13;:24;:::i;:::-;:28;:36;:28;:36;:::i;:::-;8818:48;8629:264;-1:-1:-1;;;;;8629:264:0:o;4669:333::-;4727:7;4826:1;4822;:5;4814:44;;;;;-1:-1:-1;;;4814:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4869:9;4885:1;4881;:5;;;;;;;4669:333;-1:-1:-1;;;;4669:333:0:o;17659:11218::-;;;;;;;;;-1:-1:-1;17659:11218:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

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