ETH Price: $3,280.13 (+0.45%)
Gas: 17 Gwei

Token

MESSIERMISSION (M59V2)
 

Overview

Max Total Supply

1,000,000,000,000 M59V2

Holders

31

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
19,200,000,000 M59V2

Value
$0.00
0x8f6b034526f658d1b5127b661063b52f6cec2f10
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
MESSIERMISSION

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-25
*/

/**
/*
-- .. .-.. .-.. .. --- -. ... / --- ..-. / -- .. .-.. . ... / .- .-- .- -.-- / .. -. 
/ - .... . / -- .. -.. ... - / --- ..-. / - .... . / -.-. .-.. ..- ... - . .-. / --- 
..-. / ...- .. .-. --. --- / --. .- .-.. .- -..- .. . ... / .-.. .. . ... / -- -....- 
..... ----. .-.-.- / .- -. / . .-.. .-.. .. .--. - .. -.-. .- .-.. / -... . .... . -- 
--- - .... / --- ..-. / ...- .- ... - / .--. .-. --- .--. --- .-. - .. --- -. ... / - 
.... . / .... ..- -- .- -. / -... .-. .- .. -. / -.-. .- -. / --- -. .-.. -.-- / -... 
. --. .. -. / - --- / -.-. --- -- .--. .-. . .... . -. -.. .-.-.- / - .... . / -.-. . 
-. - .-. . / --- ..-. / -- -....- ..... ----. / -... --- .- ... - ... / .- / ... ..- .-
-. . .-. / -- .- ... ... .. ...- . / -... .-.. .- -.-. -.- / .... --- .-.. . / ..--- --.
.. ----- / -- .. .-.. .-.. .. --- -. / - .. -- . ... / .- ... / -- .- ... ... .. ...- . 
/ .- ... / - .... . / ... ..- -. .-.-.- / - .... . / -. . .-- / -- . - .- / --- ..-. / - 
.... .. ... / -.-. --- -. ... - . .-.. .-.. .- - .. --- -. .- .-.. / -.. . -.-. . -. - .-
. .- .-.. .. ... . -.. / . -.-. --- ... -.-- ... - . -- / .... .- ... / .- - / .. - ... / 
-.-. --- .-. . / .--. .-. .. ...- .- -.-. -.-- --..-- / .- -. --- -. -.-- -- .. - -.-- / .- 
-. -.. / ... . -.-. ..- .-. .. - -.-- .-.-.- / -- -....- ..... ----. / - .- -.- . ... / - ...
. . ... . / ...- .- .-.. ..- . ... / .- -. -.. / .-.. --- --- -.- ... / - --- / . -..- .--. .
- -. -.. / - .... . -- / .-- .. - .... / .. - ... / -- ..- .-.. - .. -....- - --- -.- . -. / ..
. - .- -.- .. -. --. / ... -.-- ... - . -- --..-- / .- -.. ...- .- -. -.-. . -.. / - .-. .- -..
 .. -. --. / -... --- - / -.--. -- -....- -... --- - -.--.- / .- -. -.. / - .-. .- -.. .. -. --.
 . / -.. .- .--. .--. / -.--. -- -....- ..... ----. / .-- .- .-.. .-.. . - -.--.- .-.-.- / - ....
  .-. --- ..- --. .... / ... - .- -.- .. -. --. / ..-. --- .-. / -- -....- ---.. --... / .-. . .-- .
  - .-. -.. ... --..-- / .--. .-. .. --- .-. .. - .. ... .. -. --. / ..-. .. -. .- -. -.-. .. .- .-..
   / .--. .-. .. ...- .- -.-. -.-- / .- -. -.. / -.-. --- -- -- ..- -. .. -.-. .- - .. -. --. / .. -. 
   / -- --- .-. ... . / -.-. --- -.. . --..-- / -- -....- ..... ----. / .-- .. .-.. .-.. / -... . / ..
   . ..- .--. .--. --- .-. - .. -. --. / - .... . / -- -....- ---.. --... / - --- -.- . -. .-.-.- / -- 
   -....- ..... ----. / ... ..- .--. .--. --- .-. - ... / - .... . / ...- .. ... .. --- -. / --- ..-. / 
   -- -....- ---.. --... / .- -. -.. / ... .... .- .-. . ... / - .... . / ...- .- .-.. ..- . ... / --- 
   ..-. / ..- ... . .-. / -.. .. ... -.-. .-. . - .. --- -. / .- -. -.. / -.. . -.-. . -. - .-. .- .-..
    .. ... . -.. / - .-. .- -. ... .- -.-. - .. --- -. ... .-.-.- / -- -....- ..... ----. / ..- ... . 
    .-. ... / -.-. .- -. / --. . -. . .-. .- - . / ..-. .. -. .- -. -.-. .. .- .-.. / ..-. .-. . . -..
     --- -- / ..-. .-. --- -- / -- -....- ..... ----. / - .-. .- -.. .. -. --. / -... --- - / -.--. --
      -....- -... --- - -.--.- --..-- / -- ..- .-.. - .. -....- .-. . .-- .- .-. -.. / ... - .- -.- .. 
      -. --. --..-- / .- -. -.. / .- ... / -- -....- ..... ----. / . -..- .--. .- -. -.. ... / .. - ...
       / ... - .- -.- .. -. --. / . -.-. --- -....- ... -.-- ... - . -- / - --- / --- - .... . .-. / .
       --. .-. --- .--- . -.-. - ... .-.-.- / -- ..- .-.. - .. / .. -. .--. ..- - -..-. --- ..- - .--. ..- - / 
       .-. . .-- .- .-. -.. / ... - .- -.- .. -. --. / --- ..-. ..-. . .-. ... / .- / --- -. . -....- --- ..-. 
       -....- .- -....- -.- .. -. -.. / ... . .-. ...- .. -.-. . / - .... .- - / .- -. -.-- / .--. .-. --- .--- 
       . -.-. - ... / .-- .. - .... --- ..- - / ... - .- -.- .. -. --. / -.-. .- -. / .- .--. .--. .-.. -.-- / 
       ..-. --- .-. .-.-.- / -.-. --- -- . / .--- --- .. -. / - .... . / .-. . ...- --- .-.. ..- - .. --- -. / 
       - --- -.- . -. / -. .- -- . ---... / -- . ... ... .. . .-. / -.-. .-.. .- ... ... .. -.-. / - --- -.- . 
       -. / ... -.-- -- -... --- .-.. ---... / -- ---.. --... / -.-. / --..-- / - --- - .- .-.. / ... ..- .--.
        .--. .-.. -.-- ---... / .---- --..-- ----- ----- ----- --..-- ----- ----- ----- --..-- ----- ----- -----
         --..-- ----- ----- ----- / -- .- -..- / - .-. -. / ---... / -....- -....- / .---- / .--. . .-. -.-. . -.
          - / -- .- -..- / .-- .- .-.. .-.. . - / ---... -....- / ...-- / .--. . .-. -.-. . -. - / .-- . -... ... 
          .. - . / ---... -....- / .-- .-- .-- .-.-.- -- . ... ... .. . .-. -- ..... ----. .-.-.- -.-. --- -- / - 
          .-- .. - - . .-. / ---... -....- / .--.-. -- . ... ... .. . .-. ..... ----. / - --. / ---... -....- / - 
          .-.-.- -- . -..-. -- . ... ... .. . .-. -- ..... ----. / --- - .... . .-. / -.. . - .- .. .-.. ... / .--- --- 
          .. -. / - .... . / - --. / --- .-. / -.-. .... . -.-. -.- / --- ..- - / - .... . / .-- .... ..
 - . .--. .- .--. . .-. / --- -. / .-- . -... ... .. - . / .-.-.- .-.-.- .-.-.-

https://t.me/Messier_Mission

https://twitter.com/messiermission



*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

interface IERC20 {
    
    function totalSupply() external view returns (uint256);
   
    function balanceOf(address account) external view returns (uint256);
   
    function transfer(address recipient, uint256 amount) external returns (bool);
   
    function allowance(address owner, address spender) external view returns (uint256);
 
    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(address sender,address recipient,uint256 amount) external returns (bool); 
    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }


    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}


abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}




contract MESSIERMISSION is Context,IERC20, Ownable{
    using Address for address;

    string private _name = "MESSIERMISSION";
    string private _symbol = "M59V2";
    uint8 private _decimals = 18;
    uint256 totalFeeFortx = 0;
    uint256 maxWalletTreshold = 3;
    uint256 maxTxTreshold = 2;
    uint256 private swapTreshold =2;

    uint256 private currentThreshold = 20; //Once the token value goes up this number can be decreased (To reduce price impact on asset)
    uint256 private _totalSupply = 1000000000000 * 10**_decimals; 
    uint256 public requiredTokensToSwap = _totalSupply * swapTreshold /1000;
    mapping (address => uint256) private _balances;
    mapping (address => bool) private _excludedFromFees;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public automatedMarketMakerPairs;
    address _owner;
    address payable public marketingAddress = payable(0x03256f5E23f87388e487538Db2F6Ca4efA5C6250);
    address public M87 =  (0x234736F78a6F18d20d3d2eD0544c55d38F26b1CD);
    address public M60 =  (0x2B52cC9051991B42A77CA1Dc703f6d15E0981241);
    uint256 maxWalletAmount = _totalSupply*maxWalletTreshold/100; 
    uint256 maxTxAmount = _totalSupply*maxTxTreshold/100;
    mapping (address => bool) botWallets;
    bool botTradeEnabled = false;
    bool checkWalletSize = true;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private presaleAddresses;
    uint256 private buyliqFee = 1; 
    uint256 private buyprevLiqFee = 1;
    uint256 private buymktFee = 1;
    uint256 private buyPrevmktFee = 1;
    uint256 private buyM87 = 1;
    uint256 private buyprevM87 = 1;
    uint256 private buyM60 = 1;
    uint256 private buyprevM60 = 1;
    
    bool private tradeEnabled = false;

    
    uint256 private sellliqFee = 1;
    uint256 private sellprevLiqFee = 1;
    uint256 private sellmktFee = 1;
    uint256 private sellPrevmktFee = 1;
    uint256 private sellM87 = 1;
    uint256 private sellprevM87 = 1;
    uint256 private sellM60 = 1;
    uint256 private sellprevM60 = 1;


    bool public inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    uint256 private mktTokens = 0;
    uint256 private M87Tokens = 0;
    uint256 private M60Tokens = 0;
    uint256 private liqTokens = 0;

    
    event SwapAndLiquify(uint256 tokensSwapped,
		uint256 ethReceived,
		uint256 tokensIntoLiquidity
	);
    event tokensSwappedDuringTokenomics(uint256 amount);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    
    // 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
    IUniswapV2Router02 _router;
    address public uniswapV2Pair;

    //Balances tracker

    modifier lockTheSwap{
		inSwapAndLiquify = true;
		_;
		inSwapAndLiquify = false;
	}
    

    constructor(){
        _balances[_msgSender()] = _totalSupply;
        //0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D mainnet and all networks
        IUniswapV2Router02 _uniRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        uniswapV2Pair = IUniswapV2Factory(_uniRouter.factory())
            .createPair(address(this), _uniRouter.WETH());
        
        _excludedFromFees[owner()] = true;         
        _excludedFromFees[address(this)] = true;// exclude owner and contract instance from fees
        _router = _uniRouter;
        _liquidityHolders[address(_router)] = true;
        _liquidityHolders[owner()] = true;
        _liquidityHolders[address(this)] = true;
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        emit Transfer(address(0),_msgSender(),_totalSupply);




    }
    receive() external payable{}


    //general token data and tracking of balances to be swapped.
    function getOwner()external view returns(address){
            return owner();
    }
    function currentmktTokens() external view returns (uint256){
            return mktTokens;
     }
     function currentPZTokens() external view returns (uint256){
            return M87Tokens;
    
     }
     function currentLiqTokens() external view returns (uint256){
            return liqTokens;
     }

     function totalSupply() external view override returns (uint256){
            return _totalSupply;
     }
   
    function balanceOf(address account) public view override returns (uint256){
        return _balances[account];
    }
   
    function transfer(address recipient, uint256 amount) external override returns (bool){
            _transfer(_msgSender(),recipient,amount);
            return true;

    }
   
    function allowance(address owner, address spender) external view override returns (uint256){
            return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount) external override returns (bool){
            _approve(_msgSender(),spender,amount);
            return true;
    }

    function decimals()external view returns(uint256){
        return _decimals;
    }
    function name() external view returns (string memory) {
		return _name;
	}
    function symbol() external view returns (string memory){
        return _symbol;
    }
        function updateMaxTxTreshold(uint256 newVal) public onlyOwner{
        maxTxTreshold = newVal;
        maxTxAmount = _totalSupply*maxTxTreshold/100;// 1%

    }
     function updateMaxWalletTreshold(uint256 newVal) public onlyOwner{
        maxWalletTreshold = newVal;
        maxWalletAmount = _totalSupply*maxWalletTreshold/100;

    }
    

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool){
        require(amount <= _allowances[sender][_msgSender()], "ERC20: transfer amount exceeds allowance");
		_transfer(sender, recipient, amount);
		_approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
		return true;
    }

    function addBotWallet (address payable detectedBot, bool isBot) public onlyOwner{
        botWallets[detectedBot] = isBot;
    }
    function currentbuyliqFee() public view returns (uint256){
            return buyliqFee;
    }
    function currentbuymktfee() public view returns (uint256){
            return buymktFee;
    }
    function currentbuyM87fee() public view returns (uint256){
            return buyM87;
    }
    function currentbuyM60fee() public view returns (uint256){
            return buyM87;
    }

      function currentsellLiqFee() public view returns (uint256){
            return sellliqFee;
    }
    function currentsellmktfee() public view returns (uint256){
            return sellmktFee;
    }
    function currentsellM87fee() public view returns (uint256){
            return sellM87;
    }
    function currentsellM60fee() public view returns (uint256){
            return sellM60;
    }
    function currentThresholdInt()public view returns (uint256){
        return currentThreshold;
    }
    function isExcluded(address toCheck)public view returns (bool){
            return _excludedFromFees[toCheck];
    }

    function _transfer(address from, address to, uint256 amount) internal{
        
        require(from != address(0), "ERC20: transfer from the zero address");
		require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0,"ERC20: transfered amount must be greater than zero");
        uint256 senderBalance = _balances[from];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        if(tradeEnabled == false){
            require(_liquidityHolders[to] || _liquidityHolders[from],"Cant trade, trade is disabled");
        }
        if(_liquidityHolders[to]==false && _liquidityHolders[from]==false){
        require(amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
        }
        uint256 inContractBalance = balanceOf(address(this));
        if(inContractBalance >=requiredTokensToSwap && 
			!inSwapAndLiquify && 
			from != uniswapV2Pair && 
			swapAndLiquifyEnabled){
                if(inContractBalance >= requiredTokensToSwap ){
                    inContractBalance = requiredTokensToSwap;
                    swapForTokenomics(inContractBalance);
                }
            }

            bool takeFees = true;
            
            
            if(_excludedFromFees[from] || _excludedFromFees[to]) {
                totalFeeFortx = 0;
                takeFees = false;
               

            }
            uint256 mktAmount = 0;
            uint256 M87Amount = 0; // Amount to be added to prize M60l.
            uint256 M60Amount = 0; // Amount to be added to prize M60l.
		    uint256 liqAmount = 0;  // Amount to be added to liquidity.

            if(takeFees){
                
                //bot fees
                if(botWallets[from] == true||botWallets[to]==true){
                    revert("No bots allowed to trade");
                }
                //Selling fees
                if (automatedMarketMakerPairs[to] && to != address(_router) ){
                        totalFeeFortx = 0;
                        mktAmount = amount * sellmktFee/100;
                        liqAmount = amount * sellliqFee/100;
                        M87Amount = amount * sellM87/100;
                        M60Amount = amount * sellM60/100;
                        totalFeeFortx = mktAmount + liqAmount + M87Amount + M60Amount;
                }
                //Buy Fees
                else if(automatedMarketMakerPairs[from] && from != address(_router)) {
                
                    totalFeeFortx = 0;
                    mktAmount = amount * buymktFee/100;
                    liqAmount = amount * buyliqFee/100;
                    M87Amount = amount * buyM87/100;
                    M60Amount = amount * buyM60/100;
                    totalFeeFortx = mktAmount + liqAmount + M87Amount + M60Amount;
                }

                
            }

            _balances[from] = senderBalance - amount;
            _balances[to] += amount - mktAmount - M87Amount - M60Amount - liqAmount;

          if(liqAmount != 0) {
			_balances[address(this)] += totalFeeFortx;
			//tLiqTotal += liqAmount;
            liqTokens += liqAmount;
            M87Tokens += M87Amount;
            M60Tokens += M60Amount;
            mktTokens += mktAmount;
			emit Transfer(from, address(this), totalFeeFortx);
            
		    }
            emit Transfer(from, to,amount-totalFeeFortx);
            
        
    }
    function swapForTokenomics(uint256 balanceToswap) private lockTheSwap{
        swapAndLiquify(liqTokens);
        swapTokensForETHmkt(mktTokens);
        SwapForM87(M87Tokens);
        SwapForM60(M60Tokens);
        uint256 remainingETHBalance = address(this).balance;
        processM87(remainingETHBalance,M87);
        emit tokensSwappedDuringTokenomics(balanceToswap);
        mktTokens = 0;
        M87Tokens = 0;
        M60Tokens = 0;
        liqTokens = 0;
    }
     function addLimitExempt(address newAddress)external onlyOwner{
        _liquidityHolders[newAddress] = true;
     
    }
    function swapTokensForETHmkt(uint256 amount)private {
        address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = _router.WETH();
		_approve(address(this), address(_router), amount);

		
		_router.swapExactTokensForETHSupportingFeeOnTransferTokens(
			amount,
			0, // Accept any amount of ETH.
			path,
			marketingAddress,
			block.timestamp
		);

    }
      function SwapForM87(uint256 amount)private {
        address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = _router.WETH();
		_approve(address(this), address(_router), amount);

		
		_router.swapExactTokensForETHSupportingFeeOnTransferTokens(
			amount,
			0, // Accept any amount of ETH.
			path,
			address(this),
			block.timestamp
		);
    }
    function updateM87(address newToken)private{
        M87 = newToken;
    }
    function processM87(uint256 ethAmount, address rewardToken) internal {
        // generate the uniswap pair path of weth -> eth
        address[] memory path = new address[](2);
        path[0] = _router.WETH();
        path[1] = rewardToken;

        // make the swap
        _router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(
            0, // accept any amount of Ethereum
            path,
            address(this),
            block.timestamp
        );

    }
      function SwapForM60(uint256 amount)private {
        address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = _router.WETH();
		_approve(address(this), address(_router), amount);

		
		_router.swapExactTokensForETHSupportingFeeOnTransferTokens(
			amount,
			0, // Accept any amount of ETH.
			path,
			address(this),
			block.timestamp
		);
        

    }
    function updateM60(address newToken)private{
        M60 = newToken;
    }
    function processM60(uint256 ethAmount, address rewardToken) internal {
        // generate the uniswap pair path of weth -> eth
        address[] memory path = new address[](2);
        path[0] = _router.WETH();
        path[1] = rewardToken;

        // make the swap
        _router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(
            0, // accept any amount of Ethereum
            path,
            address(this),
            block.timestamp
        );
    }

    function unstuckTokens (IERC20 tokenToClear, address payable destination, uint256 amount) public onlyOwner{
        //uint256 contractBalance = tokenToClear.balanceOf(address(this));
        tokenToClear.transfer(destination, amount);
    }

    function unstuckETH(address payable destination) public onlyOwner{
        uint256 ethBalance = address(this).balance;
        payable(destination).transfer(ethBalance);
    }

    function tradeStatus(bool status) public onlyOwner{
        tradeEnabled = status;
    }

    function swapAndLiquify(uint256 liqTokensPassed) private {
		uint256 half = liqTokensPassed / 2;
		uint256 otherHalf = liqTokensPassed - half;
		uint256 initialBalance = address(this).balance;

		swapTokensForETH(half);
		uint256 newBalance = address(this).balance - (initialBalance); 

		addLiquidity(otherHalf, newBalance);
		emit SwapAndLiquify(half,newBalance,otherHalf);
	}

    function swapTokensForETH(uint256 tokenAmount) private{
		address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = _router.WETH();
		_approve(address(this), address(_router), tokenAmount);

		
		_router.swapExactTokensForETHSupportingFeeOnTransferTokens(
			tokenAmount,
			0, // Accept any amount of ETH.
			path,
			address(this),
			block.timestamp
		);
	}
    
    function addLiquidity(uint256 tokenAmount,uint256 ethAmount) private{
		_approve(address(this), address(_router), tokenAmount);

		_router.addLiquidityETH{value:ethAmount}(
			address(this),
			tokenAmount,
			0,
			0,
			deadAddress,// tr
			block.timestamp
		);
	}

    function _approve(address owner,address spender, uint256 amount) internal{
        require(owner != address(0), "ERC20: approve from the zero address");
		require(spender != address(0), "ERC20: approve to the zero address");

		_allowances[owner][spender] = amount;
		emit Approval(owner, spender, amount);


    }




    //Fees related functions

    function addToExcluded(address toExclude) public onlyOwner{  
        _excludedFromFees[toExclude] = true;
    }

    function removeFromExcluded(address toRemove) public onlyOwner{
        _excludedFromFees[toRemove] = false;
    }
      function excludePresaleAddresses(address router, address presale) external onlyOwner {
        
        _liquidityHolders[address(router)] = true;
        _liquidityHolders[presale] = true;
        presaleAddresses[address(router)] = true;
        presaleAddresses[presale] = true;
       
    }

    function startPresaleStatus()public onlyOwner{
        
        buymktFee = 0;
        sellmktFee =0;
        buyliqFee =0;
        sellliqFee =0;
        buyM87 =0;
        sellM87 = 0;
        buyM60 =0;
        sellM60 = 0;
        setSwapAndLiquify(false);

    }
    function endPresaleStatus() public onlyOwner{
        buymktFee = 1;
        buyliqFee = 1;
        buyM87 = 1;
        buyM60 = 1;

        sellmktFee = 1;
        sellliqFee = 1;
        sellM87 = 1;
        sellM60 = 1;
        setSwapAndLiquify(true);
    }

    function updateThreshold(uint newThreshold) public onlyOwner{
        currentThreshold = newThreshold;

    }

    function setSwapAndLiquify(bool _enabled) public onlyOwner{
            swapAndLiquifyEnabled = _enabled;
    }


    //Marketing related 

    function setMktAddress(address newAddress) external onlyOwner{
        marketingAddress = payable(newAddress);
    }
   
    function transferAssetsETH(address payable to, uint256 amount) internal{
            to.transfer(amount);
    }
   
    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updatecurrentbuyliqFee(uint256 newAmount) public onlyOwner{
            buyliqFee = newAmount;
    }
    function updatecurrentbuymktfee(uint256 newAmount) public onlyOwner{
             buymktFee= newAmount;
    }
    function updatecurrentbuyM87fee(uint256 newAmount) public onlyOwner{
             buyM87= newAmount;
    }
    function updatecurrentbuyM60fee(uint256 newAmount) public onlyOwner{
             buyM60= newAmount;
    }

      function updatecurrentsellLiqFee(uint256 newAmount) public onlyOwner{
             sellliqFee= newAmount;
    }
    function updatecurrentsellmktfee(uint256 newAmount)public onlyOwner{
             sellmktFee= newAmount;
    }
    
    function updatecurrentsellyM87fee(uint256 newAmount) public onlyOwner{
             sellM87= newAmount;
    }
    function updatecurrentsellyM60fee(uint256 newAmount) public onlyOwner{
             sellM60= newAmount;
    }
    function currentMaxWallet() public view returns(uint256){
        return maxWalletAmount;
    }
    function currentMaxTx() public view returns(uint256){
        return maxTxAmount;
    }
    function updateSwapTreshold(uint256 newVal) public onlyOwner{
        swapTreshold = newVal;
        requiredTokensToSwap = _totalSupply*swapTreshold/1000;
        
    }
    function currentTradeStatus() public view returns (bool){
        return tradeEnabled;   
    }
    function currentSwapTreshold() public view returns(uint256){
        return swapTreshold;
    }
    function currentTokensToSwap() public view returns(uint256){
        return requiredTokensToSwap;
    }
}


interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);
    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"tokensSwappedDuringTokenomics","type":"event"},{"inputs":[],"name":"M60","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"M87","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"detectedBot","type":"address"},{"internalType":"bool","name":"isBot","type":"bool"}],"name":"addBotWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"addLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toExclude","type":"address"}],"name":"addToExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentLiqTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentPZTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentSwapTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentThresholdInt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTradeStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuyM60fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuyM87fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuyliqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuymktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentmktTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellLiqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellM60fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellM87fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellmktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endPresaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toCheck","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toRemove","type":"address"}],"name":"removeFromExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"requiredTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMktAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startPresaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"tradeStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"destination","type":"address"}],"name":"unstuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenToClear","type":"address"},{"internalType":"address payable","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unstuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxTxTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxWalletTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuyM60fee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuyM87fee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuyliqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuymktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellLiqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellmktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellyM60fee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellyM87fee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600e81526020017f4d4553534945524d495353494f4e000000000000000000000000000000000000815250600190805190602001906200005192919062000a6e565b506040518060400160405280600581526020017f4d35395632000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000a6e565b506012600360006101000a81548160ff021916908360ff16021790555060006004556003600555600260065560026007556014600855600360009054906101000a900460ff16600a620000f3919062000c66565b64e8d4a5100062000105919062000da3565b6009556103e86007546009546200011d919062000da3565b62000129919062000bd3565b600a557303256f5e23f87388e487538db2f6ca4efa5c6250601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073234736f78a6f18d20d3d2ed0544c55d38f26b1cd601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732b52cc9051991b42a77ca1dc703f6d15e0981241601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060646005546009546200023f919062000da3565b6200024b919062000bd3565b601355606460065460095462000262919062000da3565b6200026e919062000bd3565b6014556000601660006101000a81548160ff0219169083151502179055506001601660016101000a81548160ff02191690831515021790555060016019556001601a556001601b556001601c556001601d556001601e556001601f5560016020556000602160006101000a81548160ff021916908315150217905550600160225560016023556001602455600160255560016026556001602755600160285560016029556001602a60016101000a81548160ff02191690831515021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152506000602b556000602c556000602d556000602e553480156200038657600080fd5b50620003a76200039b620008d860201b60201c565b620008e060201b60201c565b600954600b6000620003be620008d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200045c57600080fd5b505afa15801562000471573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000497919062000b35565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004fa57600080fd5b505afa1580156200050f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000535919062000b35565b6040518363ffffffff1660e01b81526004016200055492919062000b89565b602060405180830381600087803b1580156200056f57600080fd5b505af115801562000584573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005aa919062000b35565b603060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c600062000600620009a460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080602f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160176000602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760006200077a620009a460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000858603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620009cd60201b60201c565b62000868620008d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600954604051620008c9919062000bb6565b60405180910390a35062000f3e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b82805462000a7c9062000e4f565b90600052602060002090601f01602090048101928262000aa0576000855562000aec565b82601f1062000abb57805160ff191683800117855562000aec565b8280016001018555821562000aec579182015b8281111562000aeb57825182559160200191906001019062000ace565b5b50905062000afb919062000aff565b5090565b5b8082111562000b1a57600081600090555060010162000b00565b5090565b60008151905062000b2f8162000f24565b92915050565b60006020828403121562000b4e5762000b4d62000f12565b5b600062000b5e8482850162000b1e565b91505092915050565b62000b728162000e04565b82525050565b62000b838162000e38565b82525050565b600060408201905062000ba0600083018562000b67565b62000baf602083018462000b67565b9392505050565b600060208201905062000bcd600083018462000b78565b92915050565b600062000be08262000e38565b915062000bed8362000e38565b92508262000c005762000bff62000eb4565b5b828204905092915050565b6000808291508390505b600185111562000c5d5780860481111562000c355762000c3462000e85565b5b600185161562000c455780820291505b808102905062000c558562000f17565b945062000c15565b94509492505050565b600062000c738262000e38565b915062000c808362000e42565b925062000caf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000cb7565b905092915050565b60008262000cc9576001905062000d9c565b8162000cd9576000905062000d9c565b816001811462000cf2576002811462000cfd5762000d33565b600191505062000d9c565b60ff84111562000d125762000d1162000e85565b5b8360020a91508482111562000d2c5762000d2b62000e85565b5b5062000d9c565b5060208310610133831016604e8410600b841016171562000d6d5782820a90508381111562000d675762000d6662000e85565b5b62000d9c565b62000d7c848484600162000c0b565b9250905081840481111562000d965762000d9562000e85565b5b81810290505b9392505050565b600062000db08262000e38565b915062000dbd8362000e38565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000df95762000df862000e85565b5b828202905092915050565b600062000e118262000e18565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000600282049050600182168062000e6857607f821691505b6020821081141562000e7f5762000e7e62000ee3565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b60008160011c9050919050565b62000f2f8162000e04565b811462000f3b57600080fd5b50565b60805160601c61579262000f64600039600081816113ac01526144bd01526157926000f3fe6080604052600436106103d25760003560e01c8063893d20e8116101fd578063b62496f511610118578063dd62ed3e116100ab578063ef1fe3ee1161007a578063ef1fe3ee14610e20578063f2fde38b14610e49578063f44f3b3d14610e72578063f7da678514610e9b578063f953cf3a14610ec4576103d9565b8063dd62ed3e14610d64578063ddcf9b9814610da1578063e1370dd314610dcc578063edcf19b214610df7576103d9565b8063cba0e996116100e7578063cba0e99614610caa578063d1294d4c14610ce7578063d15bcf0f14610d10578063d7d7442f14610d3b576103d9565b8063b62496f514610bf0578063bf9b015914610c2d578063bf9eb54014610c58578063cb66453414610c81576103d9565b80639b136da411610190578063a7a074521161015f578063a7a0745214610b4a578063a9059cbb14610b73578063b195b83914610bb0578063b4d95a9314610bc7576103d9565b80639b136da414610aa0578063a04bdc8114610acb578063a5ece94114610af6578063a6c38f5914610b21576103d9565b80639226b7a2116101cc5780639226b7a2146109f657806395d89b4114610a2157806399936bd714610a4c5780639a7a23d614610a77576103d9565b8063893d20e81461094c5780638cd0260c146109775780638da5cb5b146109a057806390f50283146109cb576103d9565b806349bd5a5e116102ed57806364c1616311610280578063715018a61161024f578063715018a6146108b857806372b00def146108cf578063801527ce146108fa5780638628c23f14610923576103d9565b806364c16163146107fc5780636573c4df146108275780636df3333a1461085057806370a082311461087b576103d9565b8063508567dd116102bc578063508567dd14610754578063524068411461077f5780635297defd146107a85780635be76f11146107d3576103d9565b806349bd5a5e146106aa5780634a0e963c146106d55780634a74bb02146106fe5780634bd7ace514610729576103d9565b806322788f86116103655780632d03420b116103345780632d03420b14610602578063313ce5671461062b5780633aef625014610656578063487a69051461067f576103d9565b806322788f861461054457806323b872dd1461056f57806327c8f835146105ac578063286e5007146105d7576103d9565b806313b4a7f4116103a157806313b4a7f41461049a57806314c0eaf9146104c357806318160ddd146104ee578063220f669614610519576103d9565b806306fdde03146103de57806307fb1603146104095780630882a86314610434578063095ea7b31461045d576103d9565b366103d957005b600080fd5b3480156103ea57600080fd5b506103f3610edb565b6040516104009190614d0c565b60405180910390f35b34801561041557600080fd5b5061041e610f6d565b60405161042b9190614ece565b60405180910390f35b34801561044057600080fd5b5061045b60048036038101906104569190614886565b610f77565b005b34801561046957600080fd5b50610484600480360381019061047f9190614799565b610ffd565b6040516104919190614ca5565b60405180910390f35b3480156104a657600080fd5b506104c160048036038101906104bc91906146c6565b61101b565b005b3480156104cf57600080fd5b506104d86111fb565b6040516104e59190614ece565b60405180910390f35b3480156104fa57600080fd5b50610503611205565b6040516105109190614ece565b60405180910390f35b34801561052557600080fd5b5061052e61120f565b60405161053b9190614ca5565b60405180910390f35b34801561055057600080fd5b50610559611222565b6040516105669190614ece565b60405180910390f35b34801561057b57600080fd5b5061059660048036038101906105919190614706565b61122c565b6040516105a39190614ca5565b60405180910390f35b3480156105b857600080fd5b506105c16113aa565b6040516105ce9190614be5565b60405180910390f35b3480156105e357600080fd5b506105ec6113ce565b6040516105f99190614ece565b60405180910390f35b34801561060e57600080fd5b50610629600480360381019061062491906147d9565b6113d8565b005b34801561063757600080fd5b50610640611471565b60405161064d9190614ece565b60405180910390f35b34801561066257600080fd5b5061067d60048036038101906106789190614886565b61148b565b005b34801561068b57600080fd5b50610694611511565b6040516106a19190614ece565b60405180910390f35b3480156106b657600080fd5b506106bf61151b565b6040516106cc9190614be5565b60405180910390f35b3480156106e157600080fd5b506106fc60048036038101906106f791906145ff565b611541565b005b34801561070a57600080fd5b50610713611618565b6040516107209190614ca5565b60405180910390f35b34801561073557600080fd5b5061073e61162b565b60405161074b9190614ece565b60405180910390f35b34801561076057600080fd5b50610769611635565b6040516107769190614ece565b60405180910390f35b34801561078b57600080fd5b506107a660048036038101906107a19190614886565b61163f565b005b3480156107b457600080fd5b506107bd6116c5565b6040516107ca9190614ece565b60405180910390f35b3480156107df57600080fd5b506107fa60048036038101906107f59190614659565b6116cf565b005b34801561080857600080fd5b5061081161179b565b60405161081e9190614ece565b60405180910390f35b34801561083357600080fd5b5061084e60048036038101906108499190614886565b6117a5565b005b34801561085c57600080fd5b5061086561184d565b6040516108729190614ece565b60405180910390f35b34801561088757600080fd5b506108a2600480360381019061089d91906145ff565b611857565b6040516108af9190614ece565b60405180910390f35b3480156108c457600080fd5b506108cd6118a0565b005b3480156108db57600080fd5b506108e4611928565b6040516108f19190614be5565b60405180910390f35b34801561090657600080fd5b50610921600480360381019061091c91906147d9565b61194e565b005b34801561092f57600080fd5b5061094a60048036038101906109459190614886565b6119e7565b005b34801561095857600080fd5b50610961611a6d565b60405161096e9190614be5565b60405180910390f35b34801561098357600080fd5b5061099e60048036038101906109999190614886565b611a7c565b005b3480156109ac57600080fd5b506109b5611b02565b6040516109c29190614be5565b60405180910390f35b3480156109d757600080fd5b506109e0611b2b565b6040516109ed9190614ece565b60405180910390f35b348015610a0257600080fd5b50610a0b611b35565b604051610a189190614ece565b60405180910390f35b348015610a2d57600080fd5b50610a36611b3f565b604051610a439190614d0c565b60405180910390f35b348015610a5857600080fd5b50610a61611bd1565b604051610a6e9190614be5565b60405180910390f35b348015610a8357600080fd5b50610a9e6004803603810190610a999190614759565b611bf7565b005b348015610aac57600080fd5b50610ab5611d12565b604051610ac29190614ece565b60405180910390f35b348015610ad757600080fd5b50610ae0611d1c565b604051610aed9190614ece565b60405180910390f35b348015610b0257600080fd5b50610b0b611d22565b604051610b189190614c00565b60405180910390f35b348015610b2d57600080fd5b50610b486004803603810190610b439190614686565b611d48565b005b348015610b5657600080fd5b50610b716004803603810190610b6c9190614886565b611e1f565b005b348015610b7f57600080fd5b50610b9a6004803603810190610b959190614799565b611ec7565b604051610ba79190614ca5565b60405180910390f35b348015610bbc57600080fd5b50610bc5611ee5565b005b348015610bd357600080fd5b50610bee6004803603810190610be991906145ff565b611fad565b005b348015610bfc57600080fd5b50610c176004803603810190610c1291906145ff565b612084565b604051610c249190614ca5565b60405180910390f35b348015610c3957600080fd5b50610c426120a4565b604051610c4f9190614ece565b60405180910390f35b348015610c6457600080fd5b50610c7f6004803603810190610c7a91906145ff565b6120ae565b005b348015610c8d57600080fd5b50610ca86004803603810190610ca391906145ff565b61216e565b005b348015610cb657600080fd5b50610cd16004803603810190610ccc91906145ff565b612245565b604051610cde9190614ca5565b60405180910390f35b348015610cf357600080fd5b50610d0e6004803603810190610d099190614886565b61229b565b005b348015610d1c57600080fd5b50610d25612344565b604051610d329190614ca5565b60405180910390f35b348015610d4757600080fd5b50610d626004803603810190610d5d9190614886565b61235b565b005b348015610d7057600080fd5b50610d8b6004803603810190610d8691906146c6565b6123e1565b604051610d989190614ece565b60405180910390f35b348015610dad57600080fd5b50610db6612468565b604051610dc39190614ece565b60405180910390f35b348015610dd857600080fd5b50610de1612472565b604051610dee9190614ece565b60405180910390f35b348015610e0357600080fd5b50610e1e6004803603810190610e199190614886565b61247c565b005b348015610e2c57600080fd5b50610e476004803603810190610e429190614886565b612502565b005b348015610e5557600080fd5b50610e706004803603810190610e6b91906145ff565b612588565b005b348015610e7e57600080fd5b50610e996004803603810190610e949190614886565b612680565b005b348015610ea757600080fd5b50610ec26004803603810190610ebd9190614833565b612706565b005b348015610ed057600080fd5b50610ed9612815565b005b606060018054610eea90615225565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1690615225565b8015610f635780601f10610f3857610100808354040283529160200191610f63565b820191906000526020600020905b815481529060010190602001808311610f4657829003601f168201915b5050505050905090565b6000601d54905090565b610f7f6128dd565b73ffffffffffffffffffffffffffffffffffffffff16610f9d611b02565b73ffffffffffffffffffffffffffffffffffffffff1614610ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fea90614e4e565b60405180910390fd5b8060198190555050565b600061101161100a6128dd565b84846128e5565b6001905092915050565b6110236128dd565b73ffffffffffffffffffffffffffffffffffffffff16611041611b02565b73ffffffffffffffffffffffffffffffffffffffff1614611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e90614e4e565b60405180910390fd5b6001601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000602c54905090565b6000600954905090565b602a60009054906101000a900460ff1681565b6000600854905090565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112776128dd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156112f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112eb90614e2e565b60405180910390fd5b6112ff848484612ab0565b61139f8461130b6128dd565b84600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113556128dd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461139a919061510a565b6128e5565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000601d54905090565b6113e06128dd565b73ffffffffffffffffffffffffffffffffffffffff166113fe611b02565b73ffffffffffffffffffffffffffffffffffffffff1614611454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144b90614e4e565b60405180910390fd5b80602160006101000a81548160ff02191690831515021790555050565b6000600360009054906101000a900460ff1660ff16905090565b6114936128dd565b73ffffffffffffffffffffffffffffffffffffffff166114b1611b02565b73ffffffffffffffffffffffffffffffffffffffff1614611507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fe90614e4e565b60405180910390fd5b8060268190555050565b6000600a54905090565b603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6115496128dd565b73ffffffffffffffffffffffffffffffffffffffff16611567611b02565b73ffffffffffffffffffffffffffffffffffffffff16146115bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b490614e4e565b60405180910390fd5b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602a60019054906101000a900460ff1681565b6000601954905090565b6000602854905090565b6116476128dd565b73ffffffffffffffffffffffffffffffffffffffff16611665611b02565b73ffffffffffffffffffffffffffffffffffffffff16146116bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b290614e4e565b60405180910390fd5b80601d8190555050565b6000602454905090565b6116d76128dd565b73ffffffffffffffffffffffffffffffffffffffff166116f5611b02565b73ffffffffffffffffffffffffffffffffffffffff161461174b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174290614e4e565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611796573d6000803e3d6000fd5b505050565b6000602e54905090565b6117ad6128dd565b73ffffffffffffffffffffffffffffffffffffffff166117cb611b02565b73ffffffffffffffffffffffffffffffffffffffff1614611821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181890614e4e565b60405180910390fd5b80600581905550606460055460095461183a91906150b0565b611844919061507f565b60138190555050565b6000600754905090565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118a86128dd565b73ffffffffffffffffffffffffffffffffffffffff166118c6611b02565b73ffffffffffffffffffffffffffffffffffffffff161461191c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191390614e4e565b60405180910390fd5b61192660006135dd565b565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6119566128dd565b73ffffffffffffffffffffffffffffffffffffffff16611974611b02565b73ffffffffffffffffffffffffffffffffffffffff16146119ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c190614e4e565b60405180910390fd5b80602a60016101000a81548160ff02191690831515021790555050565b6119ef6128dd565b73ffffffffffffffffffffffffffffffffffffffff16611a0d611b02565b73ffffffffffffffffffffffffffffffffffffffff1614611a63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5a90614e4e565b60405180910390fd5b8060248190555050565b6000611a77611b02565b905090565b611a846128dd565b73ffffffffffffffffffffffffffffffffffffffff16611aa2611b02565b73ffffffffffffffffffffffffffffffffffffffff1614611af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aef90614e4e565b60405180910390fd5b8060228190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000602254905090565b6000602654905090565b606060028054611b4e90615225565b80601f0160208091040260200160405190810160405280929190818152602001828054611b7a90615225565b8015611bc75780601f10611b9c57610100808354040283529160200191611bc7565b820191906000526020600020905b815481529060010190602001808311611baa57829003601f168201915b5050505050905090565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611bff6128dd565b73ffffffffffffffffffffffffffffffffffffffff16611c1d611b02565b73ffffffffffffffffffffffffffffffffffffffff1614611c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6a90614e4e565b60405180910390fd5b603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfb90614d8e565b60405180910390fd5b611d0e82826136a1565b5050565b6000601b54905090565b600a5481565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d506128dd565b73ffffffffffffffffffffffffffffffffffffffff16611d6e611b02565b73ffffffffffffffffffffffffffffffffffffffff1614611dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbb90614e4e565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611e276128dd565b73ffffffffffffffffffffffffffffffffffffffff16611e45611b02565b73ffffffffffffffffffffffffffffffffffffffff1614611e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9290614e4e565b60405180910390fd5b806006819055506064600654600954611eb491906150b0565b611ebe919061507f565b60148190555050565b6000611edb611ed46128dd565b8484612ab0565b6001905092915050565b611eed6128dd565b73ffffffffffffffffffffffffffffffffffffffff16611f0b611b02565b73ffffffffffffffffffffffffffffffffffffffff1614611f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5890614e4e565b60405180910390fd5b6000601b819055506000602481905550600060198190555060006022819055506000601d8190555060006026819055506000601f819055506000602881905550611fab600061194e565b565b611fb56128dd565b73ffffffffffffffffffffffffffffffffffffffff16611fd3611b02565b73ffffffffffffffffffffffffffffffffffffffff1614612029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202090614e4e565b60405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000601454905090565b6120b66128dd565b73ffffffffffffffffffffffffffffffffffffffff166120d4611b02565b73ffffffffffffffffffffffffffffffffffffffff161461212a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212190614e4e565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6121766128dd565b73ffffffffffffffffffffffffffffffffffffffff16612194611b02565b73ffffffffffffffffffffffffffffffffffffffff16146121ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e190614e4e565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6122a36128dd565b73ffffffffffffffffffffffffffffffffffffffff166122c1611b02565b73ffffffffffffffffffffffffffffffffffffffff1614612317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230e90614e4e565b60405180910390fd5b806007819055506103e860075460095461233191906150b0565b61233b919061507f565b600a8190555050565b6000602160009054906101000a900460ff16905090565b6123636128dd565b73ffffffffffffffffffffffffffffffffffffffff16612381611b02565b73ffffffffffffffffffffffffffffffffffffffff16146123d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ce90614e4e565b60405180910390fd5b8060088190555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000602b54905090565b6000601354905090565b6124846128dd565b73ffffffffffffffffffffffffffffffffffffffff166124a2611b02565b73ffffffffffffffffffffffffffffffffffffffff16146124f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ef90614e4e565b60405180910390fd5b80601b8190555050565b61250a6128dd565b73ffffffffffffffffffffffffffffffffffffffff16612528611b02565b73ffffffffffffffffffffffffffffffffffffffff161461257e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257590614e4e565b60405180910390fd5b80601f8190555050565b6125906128dd565b73ffffffffffffffffffffffffffffffffffffffff166125ae611b02565b73ffffffffffffffffffffffffffffffffffffffff1614612604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fb90614e4e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612674576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266b90614d4e565b60405180910390fd5b61267d816135dd565b50565b6126886128dd565b73ffffffffffffffffffffffffffffffffffffffff166126a6611b02565b73ffffffffffffffffffffffffffffffffffffffff16146126fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f390614e4e565b60405180910390fd5b8060288190555050565b61270e6128dd565b73ffffffffffffffffffffffffffffffffffffffff1661272c611b02565b73ffffffffffffffffffffffffffffffffffffffff1614612782576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277990614e4e565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016127bd929190614c1b565b602060405180830381600087803b1580156127d757600080fd5b505af11580156127eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280f9190614806565b50505050565b61281d6128dd565b73ffffffffffffffffffffffffffffffffffffffff1661283b611b02565b73ffffffffffffffffffffffffffffffffffffffff1614612891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288890614e4e565b60405180910390fd5b6001601b8190555060016019819055506001601d819055506001601f8190555060016024819055506001602281905550600160268190555060016028819055506128db600161194e565b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294c90614eae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bc90614d6e565b60405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612aa39190614ece565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1790614e8e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8790614d2e565b60405180910390fd5b60008111612bd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bca90614dee565b60405180910390fd5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5190614dae565b60405180910390fd5b60001515602160009054906101000a900460ff1615151415612d5757601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d175750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4d90614e0e565b60405180910390fd5b5b60001515601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515148015612e07575060001515601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612e5257601454821115612e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4890614dce565b60405180910390fd5b5b6000612e5d30611857565b9050600a548110158015612e7e5750602a60009054906101000a900460ff16155b8015612ed85750603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612ef05750602a60019054906101000a900460ff165b15612f0e57600a548110612f0d57600a549050612f0c81613742565b5b5b600060019050600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612fb55750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612fc7576000600481905550600090505b60008060008084156133625760011515601560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480613082575060011515601560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b156130c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b990614e6e565b60405180910390fd5b600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131695750602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b1561321357600060048190555060646024548961318691906150b0565b613190919061507f565b93506064602254896131a291906150b0565b6131ac919061507f565b90506064602654896131be91906150b0565b6131c8919061507f565b92506064602854896131da91906150b0565b6131e4919061507f565b9150818382866131f49190615029565b6131fe9190615029565b6132089190615029565b600481905550613361565b600e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132ba5750602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614155b156133605760006004819055506064601b54896132d791906150b0565b6132e1919061507f565b93506064601954896132f391906150b0565b6132fd919061507f565b90506064601d548961330f91906150b0565b613319919061507f565b92506064601f548961332b91906150b0565b613335919061507f565b9150818382866133459190615029565b61334f9190615029565b6133599190615029565b6004819055505b5b5b878761336e919061510a565b600b60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808284868b6133c0919061510a565b6133ca919061510a565b6133d4919061510a565b6133de919061510a565b600b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461342c9190615029565b925050819055506000811461355f57600454600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461348c9190615029565b9250508190555080602e60008282546134a59190615029565b9250508190555082602c60008282546134be9190615029565b9250508190555081602d60008282546134d79190615029565b9250508190555083602b60008282546134f09190615029565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516135569190614ece565b60405180910390a35b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004548b6135bc919061510a565b6040516135c99190614ece565b60405180910390a350505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6001602a60006101000a81548160ff021916908315150217905550613768602e54613830565b613773602b546138bb565b61377e602c54613b2f565b613789602d54613d81565b60004790506137ba81601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613fd3565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f01904826040516137e99190614ece565b60405180910390a16000602b819055506000602c819055506000602d819055506000602e81905550506000602a60006101000a81548160ff02191690831515021790555050565b600060028261383f919061507f565b90506000818361384f919061510a565b9050600047905061385f836141f8565b6000814761386d919061510a565b9050613879838261444a565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516138ac93929190614f9d565b60405180910390a15050505050565b6000600267ffffffffffffffff8111156138d8576138d7615313565b5b6040519080825280602002602001820160405280156139065781602001602082028036833780820191505090505b509050308160008151811061391e5761391d6152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156139c057600080fd5b505afa1580156139d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f8919061462c565b81600181518110613a0c57613a0b6152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613a7330602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401613af9959493929190614ee9565b600060405180830381600087803b158015613b1357600080fd5b505af1158015613b27573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff811115613b4c57613b4b615313565b5b604051908082528060200260200182016040528015613b7a5781602001602082028036833780820191505090505b5090503081600081518110613b9257613b916152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613c3457600080fd5b505afa158015613c48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c6c919061462c565b81600181518110613c8057613c7f6152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613ce730602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d4b959493929190614f43565b600060405180830381600087803b158015613d6557600080fd5b505af1158015613d79573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff811115613d9e57613d9d615313565b5b604051908082528060200260200182016040528015613dcc5781602001602082028036833780820191505090505b5090503081600081518110613de457613de36152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613e8657600080fd5b505afa158015613e9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ebe919061462c565b81600181518110613ed257613ed16152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f3930602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f9d959493929190614f43565b600060405180830381600087803b158015613fb757600080fd5b505af1158015613fcb573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff811115613ff057613fef615313565b5b60405190808252806020026020018201604052801561401e5781602001602082028036833780820191505090505b509050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561408957600080fd5b505afa15801561409d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140c1919061462c565b816000815181106140d5576140d46152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181600181518110614124576141236152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008430426040518663ffffffff1660e01b81526004016141c19493929190614cc0565b6000604051808303818588803b1580156141da57600080fd5b505af11580156141ee573d6000803e3d6000fd5b5050505050505050565b6000600267ffffffffffffffff81111561421557614214615313565b5b6040519080825280602002602001820160405280156142435781602001602082028036833780820191505090505b509050308160008151811061425b5761425a6152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156142fd57600080fd5b505afa158015614311573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614335919061462c565b81600181518110614349576143486152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506143b030602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614414959493929190614f43565b600060405180830381600087803b15801561442e57600080fd5b505af1158015614442573d6000803e3d6000fd5b505050505050565b61447730602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000807f0000000000000000000000000000000000000000000000000000000000000000426040518863ffffffff1660e01b81526004016144fe96959493929190614c44565b6060604051808303818588803b15801561451757600080fd5b505af115801561452b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061455091906148b3565b5050505050565b600081359050614566816156e9565b92915050565b60008151905061457b816156e9565b92915050565b60008135905061459081615700565b92915050565b6000813590506145a581615717565b92915050565b6000815190506145ba81615717565b92915050565b6000813590506145cf8161572e565b92915050565b6000813590506145e481615745565b92915050565b6000815190506145f981615745565b92915050565b60006020828403121561461557614614615342565b5b600061462384828501614557565b91505092915050565b60006020828403121561464257614641615342565b5b60006146508482850161456c565b91505092915050565b60006020828403121561466f5761466e615342565b5b600061467d84828501614581565b91505092915050565b6000806040838503121561469d5761469c615342565b5b60006146ab85828601614581565b92505060206146bc85828601614596565b9150509250929050565b600080604083850312156146dd576146dc615342565b5b60006146eb85828601614557565b92505060206146fc85828601614557565b9150509250929050565b60008060006060848603121561471f5761471e615342565b5b600061472d86828701614557565b935050602061473e86828701614557565b925050604061474f868287016145d5565b9150509250925092565b600080604083850312156147705761476f615342565b5b600061477e85828601614557565b925050602061478f85828601614596565b9150509250929050565b600080604083850312156147b0576147af615342565b5b60006147be85828601614557565b92505060206147cf858286016145d5565b9150509250929050565b6000602082840312156147ef576147ee615342565b5b60006147fd84828501614596565b91505092915050565b60006020828403121561481c5761481b615342565b5b600061482a848285016145ab565b91505092915050565b60008060006060848603121561484c5761484b615342565b5b600061485a868287016145c0565b935050602061486b86828701614581565b925050604061487c868287016145d5565b9150509250925092565b60006020828403121561489c5761489b615342565b5b60006148aa848285016145d5565b91505092915050565b6000806000606084860312156148cc576148cb615342565b5b60006148da868287016145ea565b93505060206148eb868287016145ea565b92505060406148fc868287016145ea565b9150509250925092565b6000614912838361493c565b60208301905092915050565b614927816151aa565b82525050565b61493681615150565b82525050565b6149458161513e565b82525050565b6149548161513e565b82525050565b600061496582614fe4565b61496f8185615007565b935061497a83614fd4565b8060005b838110156149ab5781516149928882614906565b975061499d83614ffa565b92505060018101905061497e565b5085935050505092915050565b6149c181615162565b82525050565b6149d0816151bc565b82525050565b60006149e182614fef565b6149eb8185615018565b93506149fb8185602086016151f2565b614a0481615347565b840191505092915050565b6000614a1c602383615018565b9150614a2782615358565b604082019050919050565b6000614a3f602683615018565b9150614a4a826153a7565b604082019050919050565b6000614a62602283615018565b9150614a6d826153f6565b604082019050919050565b6000614a85603983615018565b9150614a9082615445565b604082019050919050565b6000614aa8602683615018565b9150614ab382615494565b604082019050919050565b6000614acb602883615018565b9150614ad6826154e3565b604082019050919050565b6000614aee603283615018565b9150614af982615532565b604082019050919050565b6000614b11601d83615018565b9150614b1c82615581565b602082019050919050565b6000614b34602883615018565b9150614b3f826155aa565b604082019050919050565b6000614b57602083615018565b9150614b62826155f9565b602082019050919050565b6000614b7a601883615018565b9150614b8582615622565b602082019050919050565b6000614b9d602583615018565b9150614ba88261564b565b604082019050919050565b6000614bc0602483615018565b9150614bcb8261569a565b604082019050919050565b614bdf816151a0565b82525050565b6000602082019050614bfa600083018461494b565b92915050565b6000602082019050614c15600083018461492d565b92915050565b6000604082019050614c30600083018561491e565b614c3d6020830184614bd6565b9392505050565b600060c082019050614c59600083018961494b565b614c666020830188614bd6565b614c7360408301876149c7565b614c8060608301866149c7565b614c8d608083018561494b565b614c9a60a0830184614bd6565b979650505050505050565b6000602082019050614cba60008301846149b8565b92915050565b6000608082019050614cd560008301876149c7565b8181036020830152614ce7818661495a565b9050614cf6604083018561494b565b614d036060830184614bd6565b95945050505050565b60006020820190508181036000830152614d2681846149d6565b905092915050565b60006020820190508181036000830152614d4781614a0f565b9050919050565b60006020820190508181036000830152614d6781614a32565b9050919050565b60006020820190508181036000830152614d8781614a55565b9050919050565b60006020820190508181036000830152614da781614a78565b9050919050565b60006020820190508181036000830152614dc781614a9b565b9050919050565b60006020820190508181036000830152614de781614abe565b9050919050565b60006020820190508181036000830152614e0781614ae1565b9050919050565b60006020820190508181036000830152614e2781614b04565b9050919050565b60006020820190508181036000830152614e4781614b27565b9050919050565b60006020820190508181036000830152614e6781614b4a565b9050919050565b60006020820190508181036000830152614e8781614b6d565b9050919050565b60006020820190508181036000830152614ea781614b90565b9050919050565b60006020820190508181036000830152614ec781614bb3565b9050919050565b6000602082019050614ee36000830184614bd6565b92915050565b600060a082019050614efe6000830188614bd6565b614f0b60208301876149c7565b8181036040830152614f1d818661495a565b9050614f2c606083018561491e565b614f396080830184614bd6565b9695505050505050565b600060a082019050614f586000830188614bd6565b614f6560208301876149c7565b8181036040830152614f77818661495a565b9050614f86606083018561494b565b614f936080830184614bd6565b9695505050505050565b6000606082019050614fb26000830186614bd6565b614fbf6020830185614bd6565b614fcc6040830184614bd6565b949350505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000615034826151a0565b915061503f836151a0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561507457615073615257565b5b828201905092915050565b600061508a826151a0565b9150615095836151a0565b9250826150a5576150a4615286565b5b828204905092915050565b60006150bb826151a0565b91506150c6836151a0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156150ff576150fe615257565b5b828202905092915050565b6000615115826151a0565b9150615120836151a0565b92508282101561513357615132615257565b5b828203905092915050565b600061514982615180565b9050919050565b600061515b82615180565b9050919050565b60008115159050919050565b60006151798261513e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006151b5826151ce565b9050919050565b60006151c7826151a0565b9050919050565b60006151d9826151e0565b9050919050565b60006151eb82615180565b9050919050565b60005b838110156152105780820151818401526020810190506151f5565b8381111561521f576000848401525b50505050565b6000600282049050600182168061523d57607f821691505b60208210811415615251576152506152b5565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e73666572656420616d6f756e74206d75737420626560008201527f2067726561746572207468616e207a65726f0000000000000000000000000000602082015250565b7f43616e742074726164652c2074726164652069732064697361626c6564000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4e6f20626f747320616c6c6f77656420746f2074726164650000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6156f28161513e565b81146156fd57600080fd5b50565b61570981615150565b811461571457600080fd5b50565b61572081615162565b811461572b57600080fd5b50565b6157378161516e565b811461574257600080fd5b50565b61574e816151a0565b811461575957600080fd5b5056fea2646970667358221220b04e132aea36415f6d6bdedc833208231db346ea17b76efa34a9bee9a7db025c64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106103d25760003560e01c8063893d20e8116101fd578063b62496f511610118578063dd62ed3e116100ab578063ef1fe3ee1161007a578063ef1fe3ee14610e20578063f2fde38b14610e49578063f44f3b3d14610e72578063f7da678514610e9b578063f953cf3a14610ec4576103d9565b8063dd62ed3e14610d64578063ddcf9b9814610da1578063e1370dd314610dcc578063edcf19b214610df7576103d9565b8063cba0e996116100e7578063cba0e99614610caa578063d1294d4c14610ce7578063d15bcf0f14610d10578063d7d7442f14610d3b576103d9565b8063b62496f514610bf0578063bf9b015914610c2d578063bf9eb54014610c58578063cb66453414610c81576103d9565b80639b136da411610190578063a7a074521161015f578063a7a0745214610b4a578063a9059cbb14610b73578063b195b83914610bb0578063b4d95a9314610bc7576103d9565b80639b136da414610aa0578063a04bdc8114610acb578063a5ece94114610af6578063a6c38f5914610b21576103d9565b80639226b7a2116101cc5780639226b7a2146109f657806395d89b4114610a2157806399936bd714610a4c5780639a7a23d614610a77576103d9565b8063893d20e81461094c5780638cd0260c146109775780638da5cb5b146109a057806390f50283146109cb576103d9565b806349bd5a5e116102ed57806364c1616311610280578063715018a61161024f578063715018a6146108b857806372b00def146108cf578063801527ce146108fa5780638628c23f14610923576103d9565b806364c16163146107fc5780636573c4df146108275780636df3333a1461085057806370a082311461087b576103d9565b8063508567dd116102bc578063508567dd14610754578063524068411461077f5780635297defd146107a85780635be76f11146107d3576103d9565b806349bd5a5e146106aa5780634a0e963c146106d55780634a74bb02146106fe5780634bd7ace514610729576103d9565b806322788f86116103655780632d03420b116103345780632d03420b14610602578063313ce5671461062b5780633aef625014610656578063487a69051461067f576103d9565b806322788f861461054457806323b872dd1461056f57806327c8f835146105ac578063286e5007146105d7576103d9565b806313b4a7f4116103a157806313b4a7f41461049a57806314c0eaf9146104c357806318160ddd146104ee578063220f669614610519576103d9565b806306fdde03146103de57806307fb1603146104095780630882a86314610434578063095ea7b31461045d576103d9565b366103d957005b600080fd5b3480156103ea57600080fd5b506103f3610edb565b6040516104009190614d0c565b60405180910390f35b34801561041557600080fd5b5061041e610f6d565b60405161042b9190614ece565b60405180910390f35b34801561044057600080fd5b5061045b60048036038101906104569190614886565b610f77565b005b34801561046957600080fd5b50610484600480360381019061047f9190614799565b610ffd565b6040516104919190614ca5565b60405180910390f35b3480156104a657600080fd5b506104c160048036038101906104bc91906146c6565b61101b565b005b3480156104cf57600080fd5b506104d86111fb565b6040516104e59190614ece565b60405180910390f35b3480156104fa57600080fd5b50610503611205565b6040516105109190614ece565b60405180910390f35b34801561052557600080fd5b5061052e61120f565b60405161053b9190614ca5565b60405180910390f35b34801561055057600080fd5b50610559611222565b6040516105669190614ece565b60405180910390f35b34801561057b57600080fd5b5061059660048036038101906105919190614706565b61122c565b6040516105a39190614ca5565b60405180910390f35b3480156105b857600080fd5b506105c16113aa565b6040516105ce9190614be5565b60405180910390f35b3480156105e357600080fd5b506105ec6113ce565b6040516105f99190614ece565b60405180910390f35b34801561060e57600080fd5b50610629600480360381019061062491906147d9565b6113d8565b005b34801561063757600080fd5b50610640611471565b60405161064d9190614ece565b60405180910390f35b34801561066257600080fd5b5061067d60048036038101906106789190614886565b61148b565b005b34801561068b57600080fd5b50610694611511565b6040516106a19190614ece565b60405180910390f35b3480156106b657600080fd5b506106bf61151b565b6040516106cc9190614be5565b60405180910390f35b3480156106e157600080fd5b506106fc60048036038101906106f791906145ff565b611541565b005b34801561070a57600080fd5b50610713611618565b6040516107209190614ca5565b60405180910390f35b34801561073557600080fd5b5061073e61162b565b60405161074b9190614ece565b60405180910390f35b34801561076057600080fd5b50610769611635565b6040516107769190614ece565b60405180910390f35b34801561078b57600080fd5b506107a660048036038101906107a19190614886565b61163f565b005b3480156107b457600080fd5b506107bd6116c5565b6040516107ca9190614ece565b60405180910390f35b3480156107df57600080fd5b506107fa60048036038101906107f59190614659565b6116cf565b005b34801561080857600080fd5b5061081161179b565b60405161081e9190614ece565b60405180910390f35b34801561083357600080fd5b5061084e60048036038101906108499190614886565b6117a5565b005b34801561085c57600080fd5b5061086561184d565b6040516108729190614ece565b60405180910390f35b34801561088757600080fd5b506108a2600480360381019061089d91906145ff565b611857565b6040516108af9190614ece565b60405180910390f35b3480156108c457600080fd5b506108cd6118a0565b005b3480156108db57600080fd5b506108e4611928565b6040516108f19190614be5565b60405180910390f35b34801561090657600080fd5b50610921600480360381019061091c91906147d9565b61194e565b005b34801561092f57600080fd5b5061094a60048036038101906109459190614886565b6119e7565b005b34801561095857600080fd5b50610961611a6d565b60405161096e9190614be5565b60405180910390f35b34801561098357600080fd5b5061099e60048036038101906109999190614886565b611a7c565b005b3480156109ac57600080fd5b506109b5611b02565b6040516109c29190614be5565b60405180910390f35b3480156109d757600080fd5b506109e0611b2b565b6040516109ed9190614ece565b60405180910390f35b348015610a0257600080fd5b50610a0b611b35565b604051610a189190614ece565b60405180910390f35b348015610a2d57600080fd5b50610a36611b3f565b604051610a439190614d0c565b60405180910390f35b348015610a5857600080fd5b50610a61611bd1565b604051610a6e9190614be5565b60405180910390f35b348015610a8357600080fd5b50610a9e6004803603810190610a999190614759565b611bf7565b005b348015610aac57600080fd5b50610ab5611d12565b604051610ac29190614ece565b60405180910390f35b348015610ad757600080fd5b50610ae0611d1c565b604051610aed9190614ece565b60405180910390f35b348015610b0257600080fd5b50610b0b611d22565b604051610b189190614c00565b60405180910390f35b348015610b2d57600080fd5b50610b486004803603810190610b439190614686565b611d48565b005b348015610b5657600080fd5b50610b716004803603810190610b6c9190614886565b611e1f565b005b348015610b7f57600080fd5b50610b9a6004803603810190610b959190614799565b611ec7565b604051610ba79190614ca5565b60405180910390f35b348015610bbc57600080fd5b50610bc5611ee5565b005b348015610bd357600080fd5b50610bee6004803603810190610be991906145ff565b611fad565b005b348015610bfc57600080fd5b50610c176004803603810190610c1291906145ff565b612084565b604051610c249190614ca5565b60405180910390f35b348015610c3957600080fd5b50610c426120a4565b604051610c4f9190614ece565b60405180910390f35b348015610c6457600080fd5b50610c7f6004803603810190610c7a91906145ff565b6120ae565b005b348015610c8d57600080fd5b50610ca86004803603810190610ca391906145ff565b61216e565b005b348015610cb657600080fd5b50610cd16004803603810190610ccc91906145ff565b612245565b604051610cde9190614ca5565b60405180910390f35b348015610cf357600080fd5b50610d0e6004803603810190610d099190614886565b61229b565b005b348015610d1c57600080fd5b50610d25612344565b604051610d329190614ca5565b60405180910390f35b348015610d4757600080fd5b50610d626004803603810190610d5d9190614886565b61235b565b005b348015610d7057600080fd5b50610d8b6004803603810190610d8691906146c6565b6123e1565b604051610d989190614ece565b60405180910390f35b348015610dad57600080fd5b50610db6612468565b604051610dc39190614ece565b60405180910390f35b348015610dd857600080fd5b50610de1612472565b604051610dee9190614ece565b60405180910390f35b348015610e0357600080fd5b50610e1e6004803603810190610e199190614886565b61247c565b005b348015610e2c57600080fd5b50610e476004803603810190610e429190614886565b612502565b005b348015610e5557600080fd5b50610e706004803603810190610e6b91906145ff565b612588565b005b348015610e7e57600080fd5b50610e996004803603810190610e949190614886565b612680565b005b348015610ea757600080fd5b50610ec26004803603810190610ebd9190614833565b612706565b005b348015610ed057600080fd5b50610ed9612815565b005b606060018054610eea90615225565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1690615225565b8015610f635780601f10610f3857610100808354040283529160200191610f63565b820191906000526020600020905b815481529060010190602001808311610f4657829003601f168201915b5050505050905090565b6000601d54905090565b610f7f6128dd565b73ffffffffffffffffffffffffffffffffffffffff16610f9d611b02565b73ffffffffffffffffffffffffffffffffffffffff1614610ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fea90614e4e565b60405180910390fd5b8060198190555050565b600061101161100a6128dd565b84846128e5565b6001905092915050565b6110236128dd565b73ffffffffffffffffffffffffffffffffffffffff16611041611b02565b73ffffffffffffffffffffffffffffffffffffffff1614611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e90614e4e565b60405180910390fd5b6001601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000602c54905090565b6000600954905090565b602a60009054906101000a900460ff1681565b6000600854905090565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112776128dd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156112f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112eb90614e2e565b60405180910390fd5b6112ff848484612ab0565b61139f8461130b6128dd565b84600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113556128dd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461139a919061510a565b6128e5565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b6000601d54905090565b6113e06128dd565b73ffffffffffffffffffffffffffffffffffffffff166113fe611b02565b73ffffffffffffffffffffffffffffffffffffffff1614611454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144b90614e4e565b60405180910390fd5b80602160006101000a81548160ff02191690831515021790555050565b6000600360009054906101000a900460ff1660ff16905090565b6114936128dd565b73ffffffffffffffffffffffffffffffffffffffff166114b1611b02565b73ffffffffffffffffffffffffffffffffffffffff1614611507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fe90614e4e565b60405180910390fd5b8060268190555050565b6000600a54905090565b603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6115496128dd565b73ffffffffffffffffffffffffffffffffffffffff16611567611b02565b73ffffffffffffffffffffffffffffffffffffffff16146115bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b490614e4e565b60405180910390fd5b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602a60019054906101000a900460ff1681565b6000601954905090565b6000602854905090565b6116476128dd565b73ffffffffffffffffffffffffffffffffffffffff16611665611b02565b73ffffffffffffffffffffffffffffffffffffffff16146116bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b290614e4e565b60405180910390fd5b80601d8190555050565b6000602454905090565b6116d76128dd565b73ffffffffffffffffffffffffffffffffffffffff166116f5611b02565b73ffffffffffffffffffffffffffffffffffffffff161461174b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174290614e4e565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611796573d6000803e3d6000fd5b505050565b6000602e54905090565b6117ad6128dd565b73ffffffffffffffffffffffffffffffffffffffff166117cb611b02565b73ffffffffffffffffffffffffffffffffffffffff1614611821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181890614e4e565b60405180910390fd5b80600581905550606460055460095461183a91906150b0565b611844919061507f565b60138190555050565b6000600754905090565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118a86128dd565b73ffffffffffffffffffffffffffffffffffffffff166118c6611b02565b73ffffffffffffffffffffffffffffffffffffffff161461191c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191390614e4e565b60405180910390fd5b61192660006135dd565b565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6119566128dd565b73ffffffffffffffffffffffffffffffffffffffff16611974611b02565b73ffffffffffffffffffffffffffffffffffffffff16146119ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c190614e4e565b60405180910390fd5b80602a60016101000a81548160ff02191690831515021790555050565b6119ef6128dd565b73ffffffffffffffffffffffffffffffffffffffff16611a0d611b02565b73ffffffffffffffffffffffffffffffffffffffff1614611a63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5a90614e4e565b60405180910390fd5b8060248190555050565b6000611a77611b02565b905090565b611a846128dd565b73ffffffffffffffffffffffffffffffffffffffff16611aa2611b02565b73ffffffffffffffffffffffffffffffffffffffff1614611af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aef90614e4e565b60405180910390fd5b8060228190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000602254905090565b6000602654905090565b606060028054611b4e90615225565b80601f0160208091040260200160405190810160405280929190818152602001828054611b7a90615225565b8015611bc75780601f10611b9c57610100808354040283529160200191611bc7565b820191906000526020600020905b815481529060010190602001808311611baa57829003601f168201915b5050505050905090565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611bff6128dd565b73ffffffffffffffffffffffffffffffffffffffff16611c1d611b02565b73ffffffffffffffffffffffffffffffffffffffff1614611c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6a90614e4e565b60405180910390fd5b603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfb90614d8e565b60405180910390fd5b611d0e82826136a1565b5050565b6000601b54905090565b600a5481565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d506128dd565b73ffffffffffffffffffffffffffffffffffffffff16611d6e611b02565b73ffffffffffffffffffffffffffffffffffffffff1614611dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbb90614e4e565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611e276128dd565b73ffffffffffffffffffffffffffffffffffffffff16611e45611b02565b73ffffffffffffffffffffffffffffffffffffffff1614611e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9290614e4e565b60405180910390fd5b806006819055506064600654600954611eb491906150b0565b611ebe919061507f565b60148190555050565b6000611edb611ed46128dd565b8484612ab0565b6001905092915050565b611eed6128dd565b73ffffffffffffffffffffffffffffffffffffffff16611f0b611b02565b73ffffffffffffffffffffffffffffffffffffffff1614611f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5890614e4e565b60405180910390fd5b6000601b819055506000602481905550600060198190555060006022819055506000601d8190555060006026819055506000601f819055506000602881905550611fab600061194e565b565b611fb56128dd565b73ffffffffffffffffffffffffffffffffffffffff16611fd3611b02565b73ffffffffffffffffffffffffffffffffffffffff1614612029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202090614e4e565b60405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000601454905090565b6120b66128dd565b73ffffffffffffffffffffffffffffffffffffffff166120d4611b02565b73ffffffffffffffffffffffffffffffffffffffff161461212a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212190614e4e565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6121766128dd565b73ffffffffffffffffffffffffffffffffffffffff16612194611b02565b73ffffffffffffffffffffffffffffffffffffffff16146121ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e190614e4e565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6122a36128dd565b73ffffffffffffffffffffffffffffffffffffffff166122c1611b02565b73ffffffffffffffffffffffffffffffffffffffff1614612317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230e90614e4e565b60405180910390fd5b806007819055506103e860075460095461233191906150b0565b61233b919061507f565b600a8190555050565b6000602160009054906101000a900460ff16905090565b6123636128dd565b73ffffffffffffffffffffffffffffffffffffffff16612381611b02565b73ffffffffffffffffffffffffffffffffffffffff16146123d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ce90614e4e565b60405180910390fd5b8060088190555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000602b54905090565b6000601354905090565b6124846128dd565b73ffffffffffffffffffffffffffffffffffffffff166124a2611b02565b73ffffffffffffffffffffffffffffffffffffffff16146124f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ef90614e4e565b60405180910390fd5b80601b8190555050565b61250a6128dd565b73ffffffffffffffffffffffffffffffffffffffff16612528611b02565b73ffffffffffffffffffffffffffffffffffffffff161461257e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257590614e4e565b60405180910390fd5b80601f8190555050565b6125906128dd565b73ffffffffffffffffffffffffffffffffffffffff166125ae611b02565b73ffffffffffffffffffffffffffffffffffffffff1614612604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fb90614e4e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612674576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266b90614d4e565b60405180910390fd5b61267d816135dd565b50565b6126886128dd565b73ffffffffffffffffffffffffffffffffffffffff166126a6611b02565b73ffffffffffffffffffffffffffffffffffffffff16146126fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f390614e4e565b60405180910390fd5b8060288190555050565b61270e6128dd565b73ffffffffffffffffffffffffffffffffffffffff1661272c611b02565b73ffffffffffffffffffffffffffffffffffffffff1614612782576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277990614e4e565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016127bd929190614c1b565b602060405180830381600087803b1580156127d757600080fd5b505af11580156127eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280f9190614806565b50505050565b61281d6128dd565b73ffffffffffffffffffffffffffffffffffffffff1661283b611b02565b73ffffffffffffffffffffffffffffffffffffffff1614612891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288890614e4e565b60405180910390fd5b6001601b8190555060016019819055506001601d819055506001601f8190555060016024819055506001602281905550600160268190555060016028819055506128db600161194e565b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294c90614eae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bc90614d6e565b60405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612aa39190614ece565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1790614e8e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8790614d2e565b60405180910390fd5b60008111612bd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bca90614dee565b60405180910390fd5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5190614dae565b60405180910390fd5b60001515602160009054906101000a900460ff1615151415612d5757601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d175750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4d90614e0e565b60405180910390fd5b5b60001515601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515148015612e07575060001515601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612e5257601454821115612e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4890614dce565b60405180910390fd5b5b6000612e5d30611857565b9050600a548110158015612e7e5750602a60009054906101000a900460ff16155b8015612ed85750603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612ef05750602a60019054906101000a900460ff165b15612f0e57600a548110612f0d57600a549050612f0c81613742565b5b5b600060019050600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612fb55750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612fc7576000600481905550600090505b60008060008084156133625760011515601560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480613082575060011515601560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b156130c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b990614e6e565b60405180910390fd5b600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131695750602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b1561321357600060048190555060646024548961318691906150b0565b613190919061507f565b93506064602254896131a291906150b0565b6131ac919061507f565b90506064602654896131be91906150b0565b6131c8919061507f565b92506064602854896131da91906150b0565b6131e4919061507f565b9150818382866131f49190615029565b6131fe9190615029565b6132089190615029565b600481905550613361565b600e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132ba5750602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614155b156133605760006004819055506064601b54896132d791906150b0565b6132e1919061507f565b93506064601954896132f391906150b0565b6132fd919061507f565b90506064601d548961330f91906150b0565b613319919061507f565b92506064601f548961332b91906150b0565b613335919061507f565b9150818382866133459190615029565b61334f9190615029565b6133599190615029565b6004819055505b5b5b878761336e919061510a565b600b60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808284868b6133c0919061510a565b6133ca919061510a565b6133d4919061510a565b6133de919061510a565b600b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461342c9190615029565b925050819055506000811461355f57600454600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461348c9190615029565b9250508190555080602e60008282546134a59190615029565b9250508190555082602c60008282546134be9190615029565b9250508190555081602d60008282546134d79190615029565b9250508190555083602b60008282546134f09190615029565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516135569190614ece565b60405180910390a35b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004548b6135bc919061510a565b6040516135c99190614ece565b60405180910390a350505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6001602a60006101000a81548160ff021916908315150217905550613768602e54613830565b613773602b546138bb565b61377e602c54613b2f565b613789602d54613d81565b60004790506137ba81601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613fd3565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f01904826040516137e99190614ece565b60405180910390a16000602b819055506000602c819055506000602d819055506000602e81905550506000602a60006101000a81548160ff02191690831515021790555050565b600060028261383f919061507f565b90506000818361384f919061510a565b9050600047905061385f836141f8565b6000814761386d919061510a565b9050613879838261444a565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516138ac93929190614f9d565b60405180910390a15050505050565b6000600267ffffffffffffffff8111156138d8576138d7615313565b5b6040519080825280602002602001820160405280156139065781602001602082028036833780820191505090505b509050308160008151811061391e5761391d6152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156139c057600080fd5b505afa1580156139d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f8919061462c565b81600181518110613a0c57613a0b6152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613a7330602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401613af9959493929190614ee9565b600060405180830381600087803b158015613b1357600080fd5b505af1158015613b27573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff811115613b4c57613b4b615313565b5b604051908082528060200260200182016040528015613b7a5781602001602082028036833780820191505090505b5090503081600081518110613b9257613b916152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613c3457600080fd5b505afa158015613c48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c6c919061462c565b81600181518110613c8057613c7f6152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613ce730602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d4b959493929190614f43565b600060405180830381600087803b158015613d6557600080fd5b505af1158015613d79573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff811115613d9e57613d9d615313565b5b604051908082528060200260200182016040528015613dcc5781602001602082028036833780820191505090505b5090503081600081518110613de457613de36152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613e8657600080fd5b505afa158015613e9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ebe919061462c565b81600181518110613ed257613ed16152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f3930602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f9d959493929190614f43565b600060405180830381600087803b158015613fb757600080fd5b505af1158015613fcb573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff811115613ff057613fef615313565b5b60405190808252806020026020018201604052801561401e5781602001602082028036833780820191505090505b509050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561408957600080fd5b505afa15801561409d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140c1919061462c565b816000815181106140d5576140d46152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181600181518110614124576141236152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008430426040518663ffffffff1660e01b81526004016141c19493929190614cc0565b6000604051808303818588803b1580156141da57600080fd5b505af11580156141ee573d6000803e3d6000fd5b5050505050505050565b6000600267ffffffffffffffff81111561421557614214615313565b5b6040519080825280602002602001820160405280156142435781602001602082028036833780820191505090505b509050308160008151811061425b5761425a6152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156142fd57600080fd5b505afa158015614311573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614335919061462c565b81600181518110614349576143486152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506143b030602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614414959493929190614f43565b600060405180830381600087803b15801561442e57600080fd5b505af1158015614442573d6000803e3d6000fd5b505050505050565b61447730602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000807f000000000000000000000000000000000000000000000000000000000000dead426040518863ffffffff1660e01b81526004016144fe96959493929190614c44565b6060604051808303818588803b15801561451757600080fd5b505af115801561452b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061455091906148b3565b5050505050565b600081359050614566816156e9565b92915050565b60008151905061457b816156e9565b92915050565b60008135905061459081615700565b92915050565b6000813590506145a581615717565b92915050565b6000815190506145ba81615717565b92915050565b6000813590506145cf8161572e565b92915050565b6000813590506145e481615745565b92915050565b6000815190506145f981615745565b92915050565b60006020828403121561461557614614615342565b5b600061462384828501614557565b91505092915050565b60006020828403121561464257614641615342565b5b60006146508482850161456c565b91505092915050565b60006020828403121561466f5761466e615342565b5b600061467d84828501614581565b91505092915050565b6000806040838503121561469d5761469c615342565b5b60006146ab85828601614581565b92505060206146bc85828601614596565b9150509250929050565b600080604083850312156146dd576146dc615342565b5b60006146eb85828601614557565b92505060206146fc85828601614557565b9150509250929050565b60008060006060848603121561471f5761471e615342565b5b600061472d86828701614557565b935050602061473e86828701614557565b925050604061474f868287016145d5565b9150509250925092565b600080604083850312156147705761476f615342565b5b600061477e85828601614557565b925050602061478f85828601614596565b9150509250929050565b600080604083850312156147b0576147af615342565b5b60006147be85828601614557565b92505060206147cf858286016145d5565b9150509250929050565b6000602082840312156147ef576147ee615342565b5b60006147fd84828501614596565b91505092915050565b60006020828403121561481c5761481b615342565b5b600061482a848285016145ab565b91505092915050565b60008060006060848603121561484c5761484b615342565b5b600061485a868287016145c0565b935050602061486b86828701614581565b925050604061487c868287016145d5565b9150509250925092565b60006020828403121561489c5761489b615342565b5b60006148aa848285016145d5565b91505092915050565b6000806000606084860312156148cc576148cb615342565b5b60006148da868287016145ea565b93505060206148eb868287016145ea565b92505060406148fc868287016145ea565b9150509250925092565b6000614912838361493c565b60208301905092915050565b614927816151aa565b82525050565b61493681615150565b82525050565b6149458161513e565b82525050565b6149548161513e565b82525050565b600061496582614fe4565b61496f8185615007565b935061497a83614fd4565b8060005b838110156149ab5781516149928882614906565b975061499d83614ffa565b92505060018101905061497e565b5085935050505092915050565b6149c181615162565b82525050565b6149d0816151bc565b82525050565b60006149e182614fef565b6149eb8185615018565b93506149fb8185602086016151f2565b614a0481615347565b840191505092915050565b6000614a1c602383615018565b9150614a2782615358565b604082019050919050565b6000614a3f602683615018565b9150614a4a826153a7565b604082019050919050565b6000614a62602283615018565b9150614a6d826153f6565b604082019050919050565b6000614a85603983615018565b9150614a9082615445565b604082019050919050565b6000614aa8602683615018565b9150614ab382615494565b604082019050919050565b6000614acb602883615018565b9150614ad6826154e3565b604082019050919050565b6000614aee603283615018565b9150614af982615532565b604082019050919050565b6000614b11601d83615018565b9150614b1c82615581565b602082019050919050565b6000614b34602883615018565b9150614b3f826155aa565b604082019050919050565b6000614b57602083615018565b9150614b62826155f9565b602082019050919050565b6000614b7a601883615018565b9150614b8582615622565b602082019050919050565b6000614b9d602583615018565b9150614ba88261564b565b604082019050919050565b6000614bc0602483615018565b9150614bcb8261569a565b604082019050919050565b614bdf816151a0565b82525050565b6000602082019050614bfa600083018461494b565b92915050565b6000602082019050614c15600083018461492d565b92915050565b6000604082019050614c30600083018561491e565b614c3d6020830184614bd6565b9392505050565b600060c082019050614c59600083018961494b565b614c666020830188614bd6565b614c7360408301876149c7565b614c8060608301866149c7565b614c8d608083018561494b565b614c9a60a0830184614bd6565b979650505050505050565b6000602082019050614cba60008301846149b8565b92915050565b6000608082019050614cd560008301876149c7565b8181036020830152614ce7818661495a565b9050614cf6604083018561494b565b614d036060830184614bd6565b95945050505050565b60006020820190508181036000830152614d2681846149d6565b905092915050565b60006020820190508181036000830152614d4781614a0f565b9050919050565b60006020820190508181036000830152614d6781614a32565b9050919050565b60006020820190508181036000830152614d8781614a55565b9050919050565b60006020820190508181036000830152614da781614a78565b9050919050565b60006020820190508181036000830152614dc781614a9b565b9050919050565b60006020820190508181036000830152614de781614abe565b9050919050565b60006020820190508181036000830152614e0781614ae1565b9050919050565b60006020820190508181036000830152614e2781614b04565b9050919050565b60006020820190508181036000830152614e4781614b27565b9050919050565b60006020820190508181036000830152614e6781614b4a565b9050919050565b60006020820190508181036000830152614e8781614b6d565b9050919050565b60006020820190508181036000830152614ea781614b90565b9050919050565b60006020820190508181036000830152614ec781614bb3565b9050919050565b6000602082019050614ee36000830184614bd6565b92915050565b600060a082019050614efe6000830188614bd6565b614f0b60208301876149c7565b8181036040830152614f1d818661495a565b9050614f2c606083018561491e565b614f396080830184614bd6565b9695505050505050565b600060a082019050614f586000830188614bd6565b614f6560208301876149c7565b8181036040830152614f77818661495a565b9050614f86606083018561494b565b614f936080830184614bd6565b9695505050505050565b6000606082019050614fb26000830186614bd6565b614fbf6020830185614bd6565b614fcc6040830184614bd6565b949350505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000615034826151a0565b915061503f836151a0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561507457615073615257565b5b828201905092915050565b600061508a826151a0565b9150615095836151a0565b9250826150a5576150a4615286565b5b828204905092915050565b60006150bb826151a0565b91506150c6836151a0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156150ff576150fe615257565b5b828202905092915050565b6000615115826151a0565b9150615120836151a0565b92508282101561513357615132615257565b5b828203905092915050565b600061514982615180565b9050919050565b600061515b82615180565b9050919050565b60008115159050919050565b60006151798261513e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006151b5826151ce565b9050919050565b60006151c7826151a0565b9050919050565b60006151d9826151e0565b9050919050565b60006151eb82615180565b9050919050565b60005b838110156152105780820151818401526020810190506151f5565b8381111561521f576000848401525b50505050565b6000600282049050600182168061523d57607f821691505b60208210811415615251576152506152b5565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e73666572656420616d6f756e74206d75737420626560008201527f2067726561746572207468616e207a65726f0000000000000000000000000000602082015250565b7f43616e742074726164652c2074726164652069732064697361626c6564000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4e6f20626f747320616c6c6f77656420746f2074726164650000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6156f28161513e565b81146156fd57600080fd5b50565b61570981615150565b811461571457600080fd5b50565b61572081615162565b811461572b57600080fd5b50565b6157378161516e565b811461574257600080fd5b50565b61574e816151a0565b811461575957600080fd5b5056fea2646970667358221220b04e132aea36415f6d6bdedc833208231db346ea17b76efa34a9bee9a7db025c64736f6c63430008070033

Deployed Bytecode Sourcemap

10473:19601:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15708:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17083:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28439:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15442:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26596:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14633:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14852:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12632:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17596:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16248:388;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12714:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16984:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24794:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15618:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29148:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29966:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13293:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26350:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12667:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16780:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17495:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28673:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17290:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24608:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14744:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16059:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29863:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14969:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9838:94;;;;;;;;;;;;;:::i;:::-;;11554:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27591:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29024:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14435:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28905:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9187:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17186:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17394:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15790:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11481:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27995:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16882:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11030:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11381:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16644:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15888:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15098:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26906:279;;;;;;;;;;;;;:::i;:::-;;26472:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11295:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29485:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27742:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21835:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17703:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29580:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29760:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27471:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15285:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14527:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29382:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28556:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28787:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10087:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29265:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24357:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27191:272;;;;;;;;;;;;;:::i;:::-;;15708:76;15747:13;15774:5;15767:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15708:76;:::o;17083:93::-;17132:7;17162:6;;17155:13;;17083:93;:::o;28439:111::-;9418:12;:10;:12::i;:::-;9407:23;;:7;:5;:7::i;:::-;:23;;;9399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28533:9:::1;28521;:21;;;;28439:111:::0;:::o;15442:168::-;15519:4;15539:37;15548:12;:10;:12::i;:::-;15561:7;15569:6;15539:8;:37::i;:::-;15598:4;15591:11;;15442:168;;;;:::o;26596:302::-;9418:12;:10;:12::i;:::-;9407:23;;:7;:5;:7::i;:::-;:23;;;9399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26739:4:::1;26702:17;:34;26728:6;26702:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;26783:4;26754:17;:26;26772:7;26754:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;26834:4;26798:16;:33;26823:6;26798:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;26877:4;26849:16;:25;26866:7;26849:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;26596:302:::0;;:::o;14633:104::-;14683:7;14713:9;;14706:16;;14633:104;:::o;14852:106::-;14907:7;14937:12;;14930:19;;14852:106;:::o;12632:28::-;;;;;;;;;;;;;:::o;17596:101::-;17647:7;17673:16;;17666:23;;17596:101;:::o;16248:388::-;16380:4;16414:11;:19;16426:6;16414:19;;;;;;;;;;;;;;;:33;16434:12;:10;:12::i;:::-;16414:33;;;;;;;;;;;;;;;;16404:6;:43;;16396:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;16497:36;16507:6;16515:9;16526:6;16497:9;:36::i;:::-;16538:74;16547:6;16555:12;:10;:12::i;:::-;16605:6;16569:11;:19;16581:6;16569:19;;;;;;;;;;;;;;;:33;16589:12;:10;:12::i;:::-;16569:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;16538:8;:74::i;:::-;16624:4;16617:11;;16248:388;;;;;:::o;12714:81::-;;;:::o;16984:93::-;17033:7;17063:6;;17056:13;;16984:93;:::o;24794:90::-;9418:12;:10;:12::i;:::-;9407:23;;:7;:5;:7::i;:::-;:23;;;9399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24870:6:::1;24855:12;;:21;;;;;;;;;;;;;;;;;;24794:90:::0;:::o;15618:84::-;15659:7;15685:9;;;;;;;;;;;15678:16;;;;15618:84;:::o;29148:111::-;9418:12;:10;:12::i;:::-;9407:23;;:7;:5;:7::i;:::-;:23;;;9399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29242:9:::1;29233:7;:18;;;;29148:111:::0;:::o;29966:105::-;30017:7;30043:20;;30036:27;;29966:105;:::o;13293:28::-;;;;;;;;;;;;;:::o;26350:114::-;9418:12;:10;:12::i;:::-;9407:23;;:7;:5;:7::i;:::-;:23;;;9399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26452:4:::1;26421:17;:28;26439:9;26421:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;26350:114:::0;:::o;12667:40::-;;;;;;;;;;;;;:::o;16780:96::-;16829:7;16859:9;;16852:16;;16780:96;:::o;17495:95::-;17545:7;17575;;17568:14;;17495:95;:::o;28673:108::-;9418:12;:10;:12::i;:::-;9407:23;;:7;:5;:7::i;:::-;:23;;;9399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28764:9:::1;28756:6;:17;;;;28673:108:::0;:::o;17290:98::-;17340:7;17370:10;;17363:17;;17290:98;:::o;24608:178::-;9418:12;:10;:12::i;:::-;9407:23;;:7;:5;:7::i;:::-;:23;;;9399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24684:18:::1;24705:21;24684:42;;24745:11;24737:29;;:41;24767:10;24737:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;24673:113;24608:178:::0;:::o;14744:99::-;14795:7;14825:9;;14818:16;;14744:99;:::o;16059:175::-;9418:12;:10;:12::i;:::-;9407:23;;:7;:5;:7::i;:::-;:23;;;9399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16155:6:::1;16135:17;:26;;;;16221:3;16203:17;;16190:12;;:30;;;;:::i;:::-;:34;;;;:::i;:::-;16172:15;:52;;;;16059:175:::0;:::o;29863:97::-;29914:7;29940:12;;29933:19;;29863:97;:::o;14969:118::-;15035:7;15061:9;:18;15071:7;15061:18;;;;;;;;;;;;;;;;15054:25;;14969:118;;;:::o;9838:94::-;9418:12;:10;:12::i;:::-;9407:23;;:7;:5;:7::i;:::-;:23;;;9399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9903:21:::1;9921:1;9903:9;:21::i;:::-;9838:94::o:0;11554:66::-;;;;;;;;;;;;;:::o;27591:113::-;9418:12;:10;:12::i;:::-;9407:23;;:7;:5;:7::i;:::-;:23;;;9399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27688:8:::1;27664:21;;:32;;;;;;;;;;;;;;;;;;27591:113:::0;:::o;29024:112::-;9418:12;:10;:12::i;:::-;9407:23;;:7;:5;:7::i;:::-;:23;;;9399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29119:9:::1;29107:10;:21;;;;29024:112:::0;:::o;14435:86::-;14476:7;14506;:5;:7::i;:::-;14499:14;;14435:86;:::o;28905:113::-;9418:12;:10;:12::i;:::-;9407:23;;:7;:5;:7::i;:::-;:23;;;9399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29001:9:::1;28989:10;:21;;;;28905:113:::0;:::o;9187:87::-;9233:7;9260:6;;;;;;;;;;;9253:13;;9187:87;:::o;17186:98::-;17236:7;17266:10;;17259:17;;17186:98;:::o;17394:95::-;17444:7;17474;;17467:14;;17394:95;:::o;15790:88::-;15831:13;15863:7;15856:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15790:88;:::o;11481:66::-;;;;;;;;;;;;;:::o;27995:242::-;9418:12;:10;:12::i;:::-;9407:23;;:7;:5;:7::i;:::-;:23;;;9399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28102:13:::1;;;;;;;;;;;28094:21;;:4;:21;;;;28086:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;28188:41;28217:4;28223:5;28188:28;:41::i;:::-;27995:242:::0;;:::o;16882:96::-;16931:7;16961:9;;16954:16;;16882:96;:::o;11030:71::-;;;;:::o;11381:93::-;;;;;;;;;;;;;:::o;16644:130::-;9418:12;:10;:12::i;:::-;9407:23;;:7;:5;:7::i;:::-;:23;;;9399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16761:5:::1;16735:10;:23;16746:11;16735:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;16644:130:::0;;:::o;15888:164::-;9418:12;:10;:12::i;:::-;9407:23;;:7;:5;:7::i;:::-;:23;;;9399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15976:6:::1;15960:13;:22;;;;16034:3;16020:13;;16007:12;;:26;;;;:::i;:::-;:30;;;;:::i;:::-;15993:11;:44;;;;15888:164:::0;:::o;15098:176::-;15178:4;15198:40;15208:12;:10;:12::i;:::-;15221:9;15231:6;15198:9;:40::i;:::-;15260:4;15253:11;;15098:176;;;;:::o;26906:279::-;9418:12;:10;:12::i;:::-;9407:23;;:7;:5;:7::i;:::-;:23;;;9399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26984:1:::1;26972:9;:13;;;;27008:1;26996:10;:13;;;;27031:1;27020:9;:12;;;;27055:1;27043:10;:13;;;;27075:1;27067:6;:9;;;;27097:1;27087:7;:11;;;;27117:1;27109:6;:9;;;;27139:1;27129:7;:11;;;;27151:24;27169:5;27151:17;:24::i;:::-;26906:279::o:0;26472:116::-;9418:12;:10;:12::i;:::-;9407:23;;:7;:5;:7::i;:::-;:23;;;9399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26575:5:::1;26545:17;:27;26563:8;26545:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;26472:116:::0;:::o;11295:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;29485:89::-;29529:7;29555:11;;29548:18;;29485:89;:::o;27742:118::-;9418:12;:10;:12::i;:::-;9407:23;;:7;:5;:7::i;:::-;:23;;;9399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27841:10:::1;27814:16;;:38;;;;;;;;;;;;;;;;;;27742:118:::0;:::o;21835:123::-;9418:12;:10;:12::i;:::-;9407:23;;:7;:5;:7::i;:::-;:23;;;9399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21939:4:::1;21907:17;:29;21925:10;21907:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;21835:123:::0;:::o;17703:118::-;17760:4;17787:17;:26;17805:7;17787:26;;;;;;;;;;;;;;;;;;;;;;;;;17780:33;;17703:118;;;:::o;29580:174::-;9418:12;:10;:12::i;:::-;9407:23;;:7;:5;:7::i;:::-;:23;;;9399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29666:6:::1;29651:12;:21;;;;29732:4;29719:12;;29706;;:25;;;;:::i;:::-;:30;;;;:::i;:::-;29683:20;:53;;;;29580:174:::0;:::o;29760:97::-;29811:4;29834:12;;;;;;;;;;;29827:19;;29760:97;:::o;27471:112::-;9418:12;:10;:12::i;:::-;9407:23;;:7;:5;:7::i;:::-;:23;;;9399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27561:12:::1;27542:16;:31;;;;27471:112:::0;:::o;15285:148::-;15368:7;15398:11;:18;15410:5;15398:18;;;;;;;;;;;;;;;:27;15417:7;15398:27;;;;;;;;;;;;;;;;15391:34;;15285:148;;;;:::o;14527:99::-;14578:7;14608:9;;14601:16;;14527:99;:::o;29382:97::-;29430:7;29456:15;;29449:22;;29382:97;:::o;28556:111::-;9418:12;:10;:12::i;:::-;9407:23;;:7;:5;:7::i;:::-;:23;;;9399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28650:9:::1;28639;:20;;;;28556:111:::0;:::o;28787:108::-;9418:12;:10;:12::i;:::-;9407:23;;:7;:5;:7::i;:::-;:23;;;9399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28878:9:::1;28870:6;:17;;;;28787:108:::0;:::o;10087:192::-;9418:12;:10;:12::i;:::-;9407:23;;:7;:5;:7::i;:::-;:23;;;9399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10196:1:::1;10176:22;;:8;:22;;;;10168:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10252:19;10262:8;10252:9;:19::i;:::-;10087:192:::0;:::o;29265:111::-;9418:12;:10;:12::i;:::-;9407:23;;:7;:5;:7::i;:::-;:23;;;9399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29359:9:::1;29350:7;:18;;;;29265:111:::0;:::o;24357:243::-;9418:12;:10;:12::i;:::-;9407:23;;:7;:5;:7::i;:::-;:23;;;9399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24550:12:::1;:21;;;24572:11;24585:6;24550:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24357:243:::0;;;:::o;27191:272::-;9418:12;:10;:12::i;:::-;9407:23;;:7;:5;:7::i;:::-;:23;;;9399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27258:1:::1;27246:9;:13;;;;27282:1;27270:9;:13;;;;27303:1;27294:6;:10;;;;27324:1;27315:6;:10;;;;27351:1;27338:10;:14;;;;27376:1;27363:10;:14;;;;27398:1;27388:7;:11;;;;27420:1;27410:7;:11;;;;27432:23;27450:4;27432:17;:23::i;:::-;27191:272::o:0;5149:98::-;5202:7;5229:10;5222:17;;5149:98;:::o;25982:322::-;26091:1;26074:19;;:5;:19;;;;26066:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26166:1;26147:21;;:7;:21;;;;26139:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26244:6;26214:11;:18;26226:5;26214:18;;;;;;;;;;;;;;;:27;26233:7;26214:27;;;;;;;;;;;;;;;:36;;;;26276:7;26260:32;;26269:5;26260:32;;;26285:6;26260:32;;;;;;:::i;:::-;;;;;;;;25982:322;;;:::o;17829:3511::-;17943:1;17927:18;;:4;:18;;;;17919:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18014:1;18000:16;;:2;:16;;;;17992:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18084:1;18075:6;:10;18067:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;18150:21;18174:9;:15;18184:4;18174:15;;;;;;;;;;;;;;;;18150:39;;18225:6;18208:13;:23;;18200:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;18304:5;18288:21;;:12;;;;;;;;;;;:21;;;18285:141;;;18333:17;:21;18351:2;18333:21;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;18358:17;:23;18376:4;18358:23;;;;;;;;;;;;;;;;;;;;;;;;;18333:48;18325:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;18285:141;18462:5;18439:28;;:17;:21;18457:2;18439:21;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;:62;;;;;18496:5;18471:30;;:17;:23;18489:4;18471:23;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;18439:62;18436:163;;;18531:11;;18521:6;:21;;18513:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;18436:163;18609:25;18637:24;18655:4;18637:9;:24::i;:::-;18609:52;;18695:20;;18675:17;:40;;:66;;;;;18725:16;;;;;;;;;;;18724:17;18675:66;:96;;;;;18758:13;;;;;;;;;;;18750:21;;:4;:21;;;;18675:96;:126;;;;;18780:21;;;;;;;;;;;18675:126;18672:352;;;18845:20;;18824:17;:41;18821:188;;18910:20;;18890:40;;18953:36;18971:17;18953;:36::i;:::-;18821:188;18672:352;19040:13;19056:4;19040:20;;19106:17;:23;19124:4;19106:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;19133:17;:21;19151:2;19133:21;;;;;;;;;;;;;;;;;;;;;;;;;19106:48;19103:159;;;19191:1;19175:13;:17;;;;19222:5;19211:16;;19103:159;19276:17;19312;19385;19452;19530:8;19527:1243;;;19627:4;19607:24;;:10;:16;19618:4;19607:16;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;:46;;;;19649:4;19633:20;;:10;:14;19644:2;19633:14;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;19607:46;19604:127;;;19677:34;;;;;;;;;;:::i;:::-;;;;;;;;19604:127;19785:25;:29;19811:2;19785:29;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;;19832:7;;;;;;;;;;;19818:22;;:2;:22;;;;19785:55;19781:954;;;19885:1;19869:13;:17;;;;19945:3;19934:10;;19925:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;19913:35;;20007:3;19996:10;;19987:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;19975:35;;20066:3;20058:7;;20049:6;:16;;;;:::i;:::-;:20;;;;:::i;:::-;20037:32;;20125:3;20117:7;;20108:6;:16;;;;:::i;:::-;:20;;;;:::i;:::-;20096:32;;20207:9;20195;20183;20171;:21;;;;:::i;:::-;:33;;;;:::i;:::-;:45;;;;:::i;:::-;20155:13;:61;;;;19781:954;;;20290:25;:31;20316:4;20290:31;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;;20341:7;;;;;;;;;;;20325:24;;:4;:24;;;;20290:59;20287:448;;;20408:1;20392:13;:17;;;;20463:3;20453:9;;20444:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;20432:34;;20520:3;20510:9;;20501:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;20489:34;;20574:3;20567:6;;20558;:15;;;;:::i;:::-;:19;;;;:::i;:::-;20546:31;;20628:3;20621:6;;20612;:15;;;;:::i;:::-;:19;;;;:::i;:::-;20600:31;;20706:9;20694;20682;20670;:21;;;;:::i;:::-;:33;;;;:::i;:::-;:45;;;;:::i;:::-;20654:13;:61;;;;20287:448;19781:954;19527:1243;20820:6;20804:13;:22;;;;:::i;:::-;20786:9;:15;20796:4;20786:15;;;;;;;;;;;;;;;:40;;;;20903:9;20891;20879;20867;20858:6;:18;;;;:::i;:::-;:30;;;;:::i;:::-;:42;;;;:::i;:::-;:54;;;;:::i;:::-;20841:9;:13;20851:2;20841:13;;;;;;;;;;;;;;;;:71;;;;;;;:::i;:::-;;;;;;;;20943:1;20930:9;:14;20927:323;;20980:13;;20952:9;:24;20970:4;20952:24;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;21051:9;21038;;:22;;;;;;;:::i;:::-;;;;;;;;21088:9;21075;;:22;;;;;;;:::i;:::-;;;;;;;;21125:9;21112;;:22;;;;;;;:::i;:::-;;;;;;;;21162:9;21149;;:22;;;;;;;:::i;:::-;;;;;;;;21205:4;21182:44;;21191:4;21182:44;;;21212:13;;21182:44;;;;;;:::i;:::-;;;;;;;;20927:323;21284:2;21269:39;;21278:4;21269:39;;;21294:13;;21287:6;:20;;;;:::i;:::-;21269:39;;;;;;:::i;:::-;;;;;;;;17898:3442;;;;;;;17829:3511;;;:::o;10287:173::-;10343:16;10362:6;;;;;;;;;;;10343:25;;10388:8;10379:6;;:17;;;;;;;;;;;;;;;;;;10443:8;10412:40;;10433:8;10412:40;;;;;;;;;;;;10332:128;10287:173;:::o;28243:188::-;28360:5;28326:25;:31;28352:4;28326:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;28417:5;28383:40;;28411:4;28383:40;;;;;;;;;;;;28243:188;;:::o;21346:482::-;13400:4;13381:16;;:23;;;;;;;;;;;;;;;;;;21426:25:::1;21441:9;;21426:14;:25::i;:::-;21462:30;21482:9;;21462:19;:30::i;:::-;21503:21;21514:9;;21503:10;:21::i;:::-;21535;21546:9;;21535:10;:21::i;:::-;21567:27;21597:21;21567:51;;21629:35;21640:19;21660:3;;;;;;;;;;;21629:10;:35::i;:::-;21680:44;21710:13;21680:44;;;;;;:::i;:::-;;;;;;;;21747:1;21735:9;:13;;;;21771:1;21759:9;:13;;;;21795:1;21783:9;:13;;;;21819:1;21807:9;:13;;;;21415:413;13434:5:::0;13415:16;;:24;;;;;;;;;;;;;;;;;;21346:482;:::o;24892:388::-;24954:12;24987:1;24969:15;:19;;;;:::i;:::-;24954:34;;24993:17;25031:4;25013:15;:22;;;;:::i;:::-;24993:42;;25040:22;25065:21;25040:46;;25093:22;25110:4;25093:16;:22::i;:::-;25120:18;25166:14;25141:21;:40;;;;:::i;:::-;25120:61;;25189:35;25202:9;25213:10;25189:12;:35::i;:::-;25234:41;25249:4;25254:10;25265:9;25234:41;;;;;;;;:::i;:::-;;;;;;;;24949:331;;;;24892:388;:::o;21964:399::-;22027:21;22065:1;22051:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22027:40;;22090:4;22072;22077:1;22072:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22110:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22100:4;22105:1;22100:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;22129:49;22146:4;22161:7;;;;;;;;;;;22171:6;22129:8;:49::i;:::-;22189:7;;;;;;;;;;;:58;;;22253:6;22265:1;22301:4;22311:16;;;;;;;;;;;22333:15;22189:164;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22016:347;21964:399;:::o;22371:385::-;22425:21;22463:1;22449:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22425:40;;22488:4;22470;22475:1;22470:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22508:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22498:4;22503:1;22498:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;22527:49;22544:4;22559:7;;;;;;;;;;;22569:6;22527:8;:49::i;:::-;22587:7;;;;;;;;;;;:58;;;22651:6;22663:1;22699:4;22717;22728:15;22587:161;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22414:342;22371:385;:::o;23359:397::-;23413:21;23451:1;23437:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23413:40;;23476:4;23458;23463:1;23458:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23496:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23486:4;23491:1;23486:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;23515:49;23532:4;23547:7;;;;;;;;;;;23557:6;23515:8;:49::i;:::-;23575:7;;;;;;;;;;;:58;;;23639:6;23651:1;23687:4;23705;23716:15;23575:161;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23402:354;23359:397;:::o;22844:507::-;22982:21;23020:1;23006:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22982:40;;23043:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23033:4;23038:1;23033:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;23078:11;23068:4;23073:1;23068:7;;;;;;;;:::i;:::-;;;;;;;:21;;;;;;;;;;;23128:7;;;;;;;;;;;:58;;;23194:9;23219:1;23268:4;23295;23315:15;23128:213;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22913:438;22844:507;;:::o;25288:397::-;25347:21;25385:1;25371:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25347:40;;25410:4;25392;25397:1;25392:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25430:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25420:4;25425:1;25420:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;25449:54;25466:4;25481:7;;;;;;;;;;;25491:11;25449:8;:54::i;:::-;25514:7;;;;;;;;;;;:58;;;25578:11;25595:1;25631:4;25649;25660:15;25514:166;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25342:343;25288:397;:::o;25697:277::-;25770:54;25787:4;25802:7;;;;;;;;;;;25812:11;25770:8;:54::i;:::-;25831:7;;;;;;;;;;;:23;;;25861:9;25885:4;25896:11;25913:1;25920;25927:11;25949:15;25831:138;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25697:277;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;301:155;;;;:::o;462:133::-;505:5;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;462:133;;;;:::o;601:137::-;655:5;686:6;680:13;671:22;;702:30;726:5;702:30;:::i;:::-;601:137;;;;:::o;744:165::-;803:5;841:6;828:20;819:29;;857:46;897:5;857:46;:::i;:::-;744:165;;;;:::o;915:139::-;961:5;999:6;986:20;977:29;;1015:33;1042:5;1015:33;:::i;:::-;915:139;;;;:::o;1060:143::-;1117:5;1148:6;1142:13;1133:22;;1164:33;1191:5;1164:33;:::i;:::-;1060:143;;;;:::o;1209:329::-;1268:6;1317:2;1305:9;1296:7;1292:23;1288:32;1285:119;;;1323:79;;:::i;:::-;1285:119;1443:1;1468:53;1513:7;1504:6;1493:9;1489:22;1468:53;:::i;:::-;1458:63;;1414:117;1209:329;;;;:::o;1544:351::-;1614:6;1663:2;1651:9;1642:7;1638:23;1634:32;1631:119;;;1669:79;;:::i;:::-;1631:119;1789:1;1814:64;1870:7;1861:6;1850:9;1846:22;1814:64;:::i;:::-;1804:74;;1760:128;1544:351;;;;:::o;1901:345::-;1968:6;2017:2;2005:9;1996:7;1992:23;1988:32;1985:119;;;2023:79;;:::i;:::-;1985:119;2143:1;2168:61;2221:7;2212:6;2201:9;2197:22;2168:61;:::i;:::-;2158:71;;2114:125;1901:345;;;;:::o;2252:484::-;2325:6;2333;2382:2;2370:9;2361:7;2357:23;2353:32;2350:119;;;2388:79;;:::i;:::-;2350:119;2508:1;2533:61;2586:7;2577:6;2566:9;2562:22;2533:61;:::i;:::-;2523:71;;2479:125;2643:2;2669:50;2711:7;2702:6;2691:9;2687:22;2669:50;:::i;:::-;2659:60;;2614:115;2252:484;;;;;:::o;2742:474::-;2810:6;2818;2867:2;2855:9;2846:7;2842:23;2838:32;2835:119;;;2873:79;;:::i;:::-;2835:119;2993:1;3018:53;3063:7;3054:6;3043:9;3039:22;3018:53;:::i;:::-;3008:63;;2964:117;3120:2;3146:53;3191:7;3182:6;3171:9;3167:22;3146:53;:::i;:::-;3136:63;;3091:118;2742:474;;;;;:::o;3222:619::-;3299:6;3307;3315;3364:2;3352:9;3343:7;3339:23;3335:32;3332:119;;;3370:79;;:::i;:::-;3332:119;3490:1;3515:53;3560:7;3551:6;3540:9;3536:22;3515:53;:::i;:::-;3505:63;;3461:117;3617:2;3643:53;3688:7;3679:6;3668:9;3664:22;3643:53;:::i;:::-;3633:63;;3588:118;3745:2;3771:53;3816:7;3807:6;3796:9;3792:22;3771:53;:::i;:::-;3761:63;;3716:118;3222:619;;;;;:::o;3847:468::-;3912:6;3920;3969:2;3957:9;3948:7;3944:23;3940:32;3937:119;;;3975:79;;:::i;:::-;3937:119;4095:1;4120:53;4165:7;4156:6;4145:9;4141:22;4120:53;:::i;:::-;4110:63;;4066:117;4222:2;4248:50;4290:7;4281:6;4270:9;4266:22;4248:50;:::i;:::-;4238:60;;4193:115;3847:468;;;;;:::o;4321:474::-;4389:6;4397;4446:2;4434:9;4425:7;4421:23;4417:32;4414:119;;;4452:79;;:::i;:::-;4414:119;4572:1;4597:53;4642:7;4633:6;4622:9;4618:22;4597:53;:::i;:::-;4587:63;;4543:117;4699:2;4725:53;4770:7;4761:6;4750:9;4746:22;4725:53;:::i;:::-;4715:63;;4670:118;4321:474;;;;;:::o;4801:323::-;4857:6;4906:2;4894:9;4885:7;4881:23;4877:32;4874:119;;;4912:79;;:::i;:::-;4874:119;5032:1;5057:50;5099:7;5090:6;5079:9;5075:22;5057:50;:::i;:::-;5047:60;;5003:114;4801:323;;;;:::o;5130:345::-;5197:6;5246:2;5234:9;5225:7;5221:23;5217:32;5214:119;;;5252:79;;:::i;:::-;5214:119;5372:1;5397:61;5450:7;5441:6;5430:9;5426:22;5397:61;:::i;:::-;5387:71;;5343:125;5130:345;;;;:::o;5481:661::-;5579:6;5587;5595;5644:2;5632:9;5623:7;5619:23;5615:32;5612:119;;;5650:79;;:::i;:::-;5612:119;5770:1;5795:66;5853:7;5844:6;5833:9;5829:22;5795:66;:::i;:::-;5785:76;;5741:130;5910:2;5936:61;5989:7;5980:6;5969:9;5965:22;5936:61;:::i;:::-;5926:71;;5881:126;6046:2;6072:53;6117:7;6108:6;6097:9;6093:22;6072:53;:::i;:::-;6062:63;;6017:118;5481:661;;;;;:::o;6148:329::-;6207:6;6256:2;6244:9;6235:7;6231:23;6227:32;6224:119;;;6262:79;;:::i;:::-;6224:119;6382:1;6407:53;6452:7;6443:6;6432:9;6428:22;6407:53;:::i;:::-;6397:63;;6353:117;6148:329;;;;:::o;6483:663::-;6571:6;6579;6587;6636:2;6624:9;6615:7;6611:23;6607:32;6604:119;;;6642:79;;:::i;:::-;6604:119;6762:1;6787:64;6843:7;6834:6;6823:9;6819:22;6787:64;:::i;:::-;6777:74;;6733:128;6900:2;6926:64;6982:7;6973:6;6962:9;6958:22;6926:64;:::i;:::-;6916:74;;6871:129;7039:2;7065:64;7121:7;7112:6;7101:9;7097:22;7065:64;:::i;:::-;7055:74;;7010:129;6483:663;;;;;:::o;7152:179::-;7221:10;7242:46;7284:3;7276:6;7242:46;:::i;:::-;7320:4;7315:3;7311:14;7297:28;;7152:179;;;;:::o;7337:147::-;7432:45;7471:5;7432:45;:::i;:::-;7427:3;7420:58;7337:147;;:::o;7490:142::-;7593:32;7619:5;7593:32;:::i;:::-;7588:3;7581:45;7490:142;;:::o;7638:108::-;7715:24;7733:5;7715:24;:::i;:::-;7710:3;7703:37;7638:108;;:::o;7752:118::-;7839:24;7857:5;7839:24;:::i;:::-;7834:3;7827:37;7752:118;;:::o;7906:732::-;8025:3;8054:54;8102:5;8054:54;:::i;:::-;8124:86;8203:6;8198:3;8124:86;:::i;:::-;8117:93;;8234:56;8284:5;8234:56;:::i;:::-;8313:7;8344:1;8329:284;8354:6;8351:1;8348:13;8329:284;;;8430:6;8424:13;8457:63;8516:3;8501:13;8457:63;:::i;:::-;8450:70;;8543:60;8596:6;8543:60;:::i;:::-;8533:70;;8389:224;8376:1;8373;8369:9;8364:14;;8329:284;;;8333:14;8629:3;8622:10;;8030:608;;;7906:732;;;;:::o;8644:109::-;8725:21;8740:5;8725:21;:::i;:::-;8720:3;8713:34;8644:109;;:::o;8759:147::-;8854:45;8893:5;8854:45;:::i;:::-;8849:3;8842:58;8759:147;;:::o;8912:364::-;9000:3;9028:39;9061:5;9028:39;:::i;:::-;9083:71;9147:6;9142:3;9083:71;:::i;:::-;9076:78;;9163:52;9208:6;9203:3;9196:4;9189:5;9185:16;9163:52;:::i;:::-;9240:29;9262:6;9240:29;:::i;:::-;9235:3;9231:39;9224:46;;9004:272;8912:364;;;;:::o;9282:366::-;9424:3;9445:67;9509:2;9504:3;9445:67;:::i;:::-;9438:74;;9521:93;9610:3;9521:93;:::i;:::-;9639:2;9634:3;9630:12;9623:19;;9282:366;;;:::o;9654:::-;9796:3;9817:67;9881:2;9876:3;9817:67;:::i;:::-;9810:74;;9893:93;9982:3;9893:93;:::i;:::-;10011:2;10006:3;10002:12;9995:19;;9654:366;;;:::o;10026:::-;10168:3;10189:67;10253:2;10248:3;10189:67;:::i;:::-;10182:74;;10265:93;10354:3;10265:93;:::i;:::-;10383:2;10378:3;10374:12;10367:19;;10026:366;;;:::o;10398:::-;10540:3;10561:67;10625:2;10620:3;10561:67;:::i;:::-;10554:74;;10637:93;10726:3;10637:93;:::i;:::-;10755:2;10750:3;10746:12;10739:19;;10398:366;;;:::o;10770:::-;10912:3;10933:67;10997:2;10992:3;10933:67;:::i;:::-;10926:74;;11009:93;11098:3;11009:93;:::i;:::-;11127:2;11122:3;11118:12;11111:19;;10770:366;;;:::o;11142:::-;11284:3;11305:67;11369:2;11364:3;11305:67;:::i;:::-;11298:74;;11381:93;11470:3;11381:93;:::i;:::-;11499:2;11494:3;11490:12;11483:19;;11142:366;;;:::o;11514:::-;11656:3;11677:67;11741:2;11736:3;11677:67;:::i;:::-;11670:74;;11753:93;11842:3;11753:93;:::i;:::-;11871:2;11866:3;11862:12;11855:19;;11514:366;;;:::o;11886:::-;12028:3;12049:67;12113:2;12108:3;12049:67;:::i;:::-;12042:74;;12125:93;12214:3;12125:93;:::i;:::-;12243:2;12238:3;12234:12;12227:19;;11886:366;;;:::o;12258:::-;12400:3;12421:67;12485:2;12480:3;12421:67;:::i;:::-;12414:74;;12497:93;12586:3;12497:93;:::i;:::-;12615:2;12610:3;12606:12;12599:19;;12258:366;;;:::o;12630:::-;12772:3;12793:67;12857:2;12852:3;12793:67;:::i;:::-;12786:74;;12869:93;12958:3;12869:93;:::i;:::-;12987:2;12982:3;12978:12;12971:19;;12630:366;;;:::o;13002:::-;13144:3;13165:67;13229:2;13224:3;13165:67;:::i;:::-;13158:74;;13241:93;13330:3;13241:93;:::i;:::-;13359:2;13354:3;13350:12;13343:19;;13002:366;;;:::o;13374:::-;13516:3;13537:67;13601:2;13596:3;13537:67;:::i;:::-;13530:74;;13613:93;13702:3;13613:93;:::i;:::-;13731:2;13726:3;13722:12;13715:19;;13374:366;;;:::o;13746:::-;13888:3;13909:67;13973:2;13968:3;13909:67;:::i;:::-;13902:74;;13985:93;14074:3;13985:93;:::i;:::-;14103:2;14098:3;14094:12;14087:19;;13746:366;;;:::o;14118:118::-;14205:24;14223:5;14205:24;:::i;:::-;14200:3;14193:37;14118:118;;:::o;14242:222::-;14335:4;14373:2;14362:9;14358:18;14350:26;;14386:71;14454:1;14443:9;14439:17;14430:6;14386:71;:::i;:::-;14242:222;;;;:::o;14470:254::-;14579:4;14617:2;14606:9;14602:18;14594:26;;14630:87;14714:1;14703:9;14699:17;14690:6;14630:87;:::i;:::-;14470:254;;;;:::o;14730:348::-;14859:4;14897:2;14886:9;14882:18;14874:26;;14910:79;14986:1;14975:9;14971:17;14962:6;14910:79;:::i;:::-;14999:72;15067:2;15056:9;15052:18;15043:6;14999:72;:::i;:::-;14730:348;;;;;:::o;15084:807::-;15333:4;15371:3;15360:9;15356:19;15348:27;;15385:71;15453:1;15442:9;15438:17;15429:6;15385:71;:::i;:::-;15466:72;15534:2;15523:9;15519:18;15510:6;15466:72;:::i;:::-;15548:80;15624:2;15613:9;15609:18;15600:6;15548:80;:::i;:::-;15638;15714:2;15703:9;15699:18;15690:6;15638:80;:::i;:::-;15728:73;15796:3;15785:9;15781:19;15772:6;15728:73;:::i;:::-;15811;15879:3;15868:9;15864:19;15855:6;15811:73;:::i;:::-;15084:807;;;;;;;;;:::o;15897:210::-;15984:4;16022:2;16011:9;16007:18;15999:26;;16035:65;16097:1;16086:9;16082:17;16073:6;16035:65;:::i;:::-;15897:210;;;;:::o;16113:720::-;16348:4;16386:3;16375:9;16371:19;16363:27;;16400:79;16476:1;16465:9;16461:17;16452:6;16400:79;:::i;:::-;16526:9;16520:4;16516:20;16511:2;16500:9;16496:18;16489:48;16554:108;16657:4;16648:6;16554:108;:::i;:::-;16546:116;;16672:72;16740:2;16729:9;16725:18;16716:6;16672:72;:::i;:::-;16754;16822:2;16811:9;16807:18;16798:6;16754:72;:::i;:::-;16113:720;;;;;;;:::o;16839:313::-;16952:4;16990:2;16979:9;16975:18;16967:26;;17039:9;17033:4;17029:20;17025:1;17014:9;17010:17;17003:47;17067:78;17140:4;17131:6;17067:78;:::i;:::-;17059:86;;16839:313;;;;:::o;17158:419::-;17324:4;17362:2;17351:9;17347:18;17339:26;;17411:9;17405:4;17401:20;17397:1;17386:9;17382:17;17375:47;17439:131;17565:4;17439:131;:::i;:::-;17431:139;;17158:419;;;:::o;17583:::-;17749:4;17787:2;17776:9;17772:18;17764:26;;17836:9;17830:4;17826:20;17822:1;17811:9;17807:17;17800:47;17864:131;17990:4;17864:131;:::i;:::-;17856:139;;17583:419;;;:::o;18008:::-;18174:4;18212:2;18201:9;18197:18;18189:26;;18261:9;18255:4;18251:20;18247:1;18236:9;18232:17;18225:47;18289:131;18415:4;18289:131;:::i;:::-;18281:139;;18008:419;;;:::o;18433:::-;18599:4;18637:2;18626:9;18622:18;18614:26;;18686:9;18680:4;18676:20;18672:1;18661:9;18657:17;18650:47;18714:131;18840:4;18714:131;:::i;:::-;18706:139;;18433:419;;;:::o;18858:::-;19024:4;19062:2;19051:9;19047:18;19039:26;;19111:9;19105:4;19101:20;19097:1;19086:9;19082:17;19075:47;19139:131;19265:4;19139:131;:::i;:::-;19131:139;;18858:419;;;:::o;19283:::-;19449:4;19487:2;19476:9;19472:18;19464:26;;19536:9;19530:4;19526:20;19522:1;19511:9;19507:17;19500:47;19564:131;19690:4;19564:131;:::i;:::-;19556:139;;19283:419;;;:::o;19708:::-;19874:4;19912:2;19901:9;19897:18;19889:26;;19961:9;19955:4;19951:20;19947:1;19936:9;19932:17;19925:47;19989:131;20115:4;19989:131;:::i;:::-;19981:139;;19708:419;;;:::o;20133:::-;20299:4;20337:2;20326:9;20322:18;20314:26;;20386:9;20380:4;20376:20;20372:1;20361:9;20357:17;20350:47;20414:131;20540:4;20414:131;:::i;:::-;20406:139;;20133:419;;;:::o;20558:::-;20724:4;20762:2;20751:9;20747:18;20739:26;;20811:9;20805:4;20801:20;20797:1;20786:9;20782:17;20775:47;20839:131;20965:4;20839:131;:::i;:::-;20831:139;;20558:419;;;:::o;20983:::-;21149:4;21187:2;21176:9;21172:18;21164:26;;21236:9;21230:4;21226:20;21222:1;21211:9;21207:17;21200:47;21264:131;21390:4;21264:131;:::i;:::-;21256:139;;20983:419;;;:::o;21408:::-;21574:4;21612:2;21601:9;21597:18;21589:26;;21661:9;21655:4;21651:20;21647:1;21636:9;21632:17;21625:47;21689:131;21815:4;21689:131;:::i;:::-;21681:139;;21408:419;;;:::o;21833:::-;21999:4;22037:2;22026:9;22022:18;22014:26;;22086:9;22080:4;22076:20;22072:1;22061:9;22057:17;22050:47;22114:131;22240:4;22114:131;:::i;:::-;22106:139;;21833:419;;;:::o;22258:::-;22424:4;22462:2;22451:9;22447:18;22439:26;;22511:9;22505:4;22501:20;22497:1;22486:9;22482:17;22475:47;22539:131;22665:4;22539:131;:::i;:::-;22531:139;;22258:419;;;:::o;22683:222::-;22776:4;22814:2;22803:9;22799:18;22791:26;;22827:71;22895:1;22884:9;22880:17;22871:6;22827:71;:::i;:::-;22683:222;;;;:::o;22911:847::-;23182:4;23220:3;23209:9;23205:19;23197:27;;23234:71;23302:1;23291:9;23287:17;23278:6;23234:71;:::i;:::-;23315:80;23391:2;23380:9;23376:18;23367:6;23315:80;:::i;:::-;23442:9;23436:4;23432:20;23427:2;23416:9;23412:18;23405:48;23470:108;23573:4;23564:6;23470:108;:::i;:::-;23462:116;;23588:80;23664:2;23653:9;23649:18;23640:6;23588:80;:::i;:::-;23678:73;23746:3;23735:9;23731:19;23722:6;23678:73;:::i;:::-;22911:847;;;;;;;;:::o;23764:831::-;24027:4;24065:3;24054:9;24050:19;24042:27;;24079:71;24147:1;24136:9;24132:17;24123:6;24079:71;:::i;:::-;24160:80;24236:2;24225:9;24221:18;24212:6;24160:80;:::i;:::-;24287:9;24281:4;24277:20;24272:2;24261:9;24257:18;24250:48;24315:108;24418:4;24409:6;24315:108;:::i;:::-;24307:116;;24433:72;24501:2;24490:9;24486:18;24477:6;24433:72;:::i;:::-;24515:73;24583:3;24572:9;24568:19;24559:6;24515:73;:::i;:::-;23764:831;;;;;;;;:::o;24601:442::-;24750:4;24788:2;24777:9;24773:18;24765:26;;24801:71;24869:1;24858:9;24854:17;24845:6;24801:71;:::i;:::-;24882:72;24950:2;24939:9;24935:18;24926:6;24882:72;:::i;:::-;24964;25032:2;25021:9;25017:18;25008:6;24964:72;:::i;:::-;24601:442;;;;;;:::o;25130:132::-;25197:4;25220:3;25212:11;;25250:4;25245:3;25241:14;25233:22;;25130:132;;;:::o;25268:114::-;25335:6;25369:5;25363:12;25353:22;;25268:114;;;:::o;25388:99::-;25440:6;25474:5;25468:12;25458:22;;25388:99;;;:::o;25493:113::-;25563:4;25595;25590:3;25586:14;25578:22;;25493:113;;;:::o;25612:184::-;25711:11;25745:6;25740:3;25733:19;25785:4;25780:3;25776:14;25761:29;;25612:184;;;;:::o;25802:169::-;25886:11;25920:6;25915:3;25908:19;25960:4;25955:3;25951:14;25936:29;;25802:169;;;;:::o;25977:305::-;26017:3;26036:20;26054:1;26036:20;:::i;:::-;26031:25;;26070:20;26088:1;26070:20;:::i;:::-;26065:25;;26224:1;26156:66;26152:74;26149:1;26146:81;26143:107;;;26230:18;;:::i;:::-;26143:107;26274:1;26271;26267:9;26260:16;;25977:305;;;;:::o;26288:185::-;26328:1;26345:20;26363:1;26345:20;:::i;:::-;26340:25;;26379:20;26397:1;26379:20;:::i;:::-;26374:25;;26418:1;26408:35;;26423:18;;:::i;:::-;26408:35;26465:1;26462;26458:9;26453:14;;26288:185;;;;:::o;26479:348::-;26519:7;26542:20;26560:1;26542:20;:::i;:::-;26537:25;;26576:20;26594:1;26576:20;:::i;:::-;26571:25;;26764:1;26696:66;26692:74;26689:1;26686:81;26681:1;26674:9;26667:17;26663:105;26660:131;;;26771:18;;:::i;:::-;26660:131;26819:1;26816;26812:9;26801:20;;26479:348;;;;:::o;26833:191::-;26873:4;26893:20;26911:1;26893:20;:::i;:::-;26888:25;;26927:20;26945:1;26927:20;:::i;:::-;26922:25;;26966:1;26963;26960:8;26957:34;;;26971:18;;:::i;:::-;26957:34;27016:1;27013;27009:9;27001:17;;26833:191;;;;:::o;27030:96::-;27067:7;27096:24;27114:5;27096:24;:::i;:::-;27085:35;;27030:96;;;:::o;27132:104::-;27177:7;27206:24;27224:5;27206:24;:::i;:::-;27195:35;;27132:104;;;:::o;27242:90::-;27276:7;27319:5;27312:13;27305:21;27294:32;;27242:90;;;:::o;27338:109::-;27388:7;27417:24;27435:5;27417:24;:::i;:::-;27406:35;;27338:109;;;:::o;27453:126::-;27490:7;27530:42;27523:5;27519:54;27508:65;;27453:126;;;:::o;27585:77::-;27622:7;27651:5;27640:16;;27585:77;;;:::o;27668:134::-;27726:9;27759:37;27790:5;27759:37;:::i;:::-;27746:50;;27668:134;;;:::o;27808:121::-;27866:9;27899:24;27917:5;27899:24;:::i;:::-;27886:37;;27808:121;;;:::o;27935:126::-;27985:9;28018:37;28049:5;28018:37;:::i;:::-;28005:50;;27935:126;;;:::o;28067:113::-;28117:9;28150:24;28168:5;28150:24;:::i;:::-;28137:37;;28067:113;;;:::o;28186:307::-;28254:1;28264:113;28278:6;28275:1;28272:13;28264:113;;;28363:1;28358:3;28354:11;28348:18;28344:1;28339:3;28335:11;28328:39;28300:2;28297:1;28293:10;28288:15;;28264:113;;;28395:6;28392:1;28389:13;28386:101;;;28475:1;28466:6;28461:3;28457:16;28450:27;28386:101;28235:258;28186:307;;;:::o;28499:320::-;28543:6;28580:1;28574:4;28570:12;28560:22;;28627:1;28621:4;28617:12;28648:18;28638:81;;28704:4;28696:6;28692:17;28682:27;;28638:81;28766:2;28758:6;28755:14;28735:18;28732:38;28729:84;;;28785:18;;:::i;:::-;28729:84;28550:269;28499:320;;;:::o;28825:180::-;28873:77;28870:1;28863:88;28970:4;28967:1;28960:15;28994:4;28991:1;28984:15;29011:180;29059:77;29056:1;29049:88;29156:4;29153:1;29146:15;29180:4;29177:1;29170:15;29197:180;29245:77;29242:1;29235:88;29342:4;29339:1;29332:15;29366:4;29363:1;29356:15;29383:180;29431:77;29428:1;29421:88;29528:4;29525:1;29518:15;29552:4;29549:1;29542:15;29569:180;29617:77;29614:1;29607:88;29714:4;29711:1;29704:15;29738:4;29735:1;29728:15;29878:117;29987:1;29984;29977:12;30001:102;30042:6;30093:2;30089:7;30084:2;30077:5;30073:14;30069:28;30059:38;;30001:102;;;:::o;30109:222::-;30249:34;30245:1;30237:6;30233:14;30226:58;30318:5;30313:2;30305:6;30301:15;30294:30;30109:222;:::o;30337:225::-;30477:34;30473:1;30465:6;30461:14;30454:58;30546:8;30541:2;30533:6;30529:15;30522:33;30337:225;:::o;30568:221::-;30708:34;30704:1;30696:6;30692:14;30685:58;30777:4;30772:2;30764:6;30760:15;30753:29;30568:221;:::o;30795:244::-;30935:34;30931:1;30923:6;30919:14;30912:58;31004:27;30999:2;30991:6;30987:15;30980:52;30795:244;:::o;31045:225::-;31185:34;31181:1;31173:6;31169:14;31162:58;31254:8;31249:2;31241:6;31237:15;31230:33;31045:225;:::o;31276:227::-;31416:34;31412:1;31404:6;31400:14;31393:58;31485:10;31480:2;31472:6;31468:15;31461:35;31276:227;:::o;31509:237::-;31649:34;31645:1;31637:6;31633:14;31626:58;31718:20;31713:2;31705:6;31701:15;31694:45;31509:237;:::o;31752:179::-;31892:31;31888:1;31880:6;31876:14;31869:55;31752:179;:::o;31937:227::-;32077:34;32073:1;32065:6;32061:14;32054:58;32146:10;32141:2;32133:6;32129:15;32122:35;31937:227;:::o;32170:182::-;32310:34;32306:1;32298:6;32294:14;32287:58;32170:182;:::o;32358:174::-;32498:26;32494:1;32486:6;32482:14;32475:50;32358:174;:::o;32538:224::-;32678:34;32674:1;32666:6;32662:14;32655:58;32747:7;32742:2;32734:6;32730:15;32723:32;32538:224;:::o;32768:223::-;32908:34;32904:1;32896:6;32892:14;32885:58;32977:6;32972:2;32964:6;32960:15;32953:31;32768:223;:::o;32997:122::-;33070:24;33088:5;33070:24;:::i;:::-;33063:5;33060:35;33050:63;;33109:1;33106;33099:12;33050:63;32997:122;:::o;33125:138::-;33206:32;33232:5;33206:32;:::i;:::-;33199:5;33196:43;33186:71;;33253:1;33250;33243:12;33186:71;33125:138;:::o;33269:116::-;33339:21;33354:5;33339:21;:::i;:::-;33332:5;33329:32;33319:60;;33375:1;33372;33365:12;33319:60;33269:116;:::o;33391:148::-;33477:37;33508:5;33477:37;:::i;:::-;33470:5;33467:48;33457:76;;33529:1;33526;33519:12;33457:76;33391:148;:::o;33545:122::-;33618:24;33636:5;33618:24;:::i;:::-;33611:5;33608:35;33598:63;;33657:1;33654;33647:12;33598:63;33545:122;:::o

Swarm Source

ipfs://b04e132aea36415f6d6bdedc833208231db346ea17b76efa34a9bee9a7db025c
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.