ETH Price: $3,185.40 (+5.21%)

Token

$FityChumpBitBoyBorovikSlumDogePaulyGirlHarrisHoeW... (RUGME)
 

Overview

Max Total Supply

10,000,000 RUGME

Holders

113

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 RUGME

Value
$0.00
0x28726268c47812f24f8df7c5130977cb6eb5d664
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:
RUGME

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-15
*/

// SPDX-License-Identifier: MIT
/**

███████╗██╗████████╗██╗░░░██╗░█████╗░██╗░░██╗██╗░░░██╗███╗░░░███╗██████╗░
██╔════╝██║╚══██╔══╝╚██╗░██╔╝██╔══██╗██║░░██║██║░░░██║████╗░████║██╔══██╗
█████╗░░██║░░░██║░░░░╚████╔╝░██║░░╚═╝███████║██║░░░██║██╔████╔██║██████╔╝
██╔══╝░░██║░░░██║░░░░░╚██╔╝░░██║░░██╗██╔══██║██║░░░██║██║╚██╔╝██║██╔═══╝░
██║░░░░░██║░░░██║░░░░░░██║░░░╚█████╔╝██║░░██║╚██████╔╝██║░╚═╝░██║██║░░░░░
╚═╝░░░░░╚═╝░░░╚═╝░░░░░░╚═╝░░░░╚════╝░╚═╝░░╚═╝░╚═════╝░╚═╝░░░░░╚═╝╚═╝░░░░░

██████╗░██╗████████╗██████╗░░█████╗░██╗░░░██╗██████╗░░█████╗░██████╗░░█████╗░██╗░░░██╗██╗██╗░░██╗
██╔══██╗██║╚══██╔══╝██╔══██╗██╔══██╗╚██╗░██╔╝██╔══██╗██╔══██╗██╔══██╗██╔══██╗██║░░░██║██║██║░██╔╝
██████╦╝██║░░░██║░░░██████╦╝██║░░██║░╚████╔╝░██████╦╝██║░░██║██████╔╝██║░░██║╚██╗░██╔╝██║█████═╝░
██╔══██╗██║░░░██║░░░██╔══██╗██║░░██║░░╚██╔╝░░██╔══██╗██║░░██║██╔══██╗██║░░██║░╚████╔╝░██║██╔═██╗░
██████╦╝██║░░░██║░░░██████╦╝╚█████╔╝░░░██║░░░██████╦╝╚█████╔╝██║░░██║╚█████╔╝░░╚██╔╝░░██║██║░╚██╗
╚═════╝░╚═╝░░░╚═╝░░░╚═════╝░░╚════╝░░░░╚═╝░░░╚═════╝░░╚════╝░╚═╝░░╚═╝░╚════╝░░░░╚═╝░░░╚═╝╚═╝░░╚═╝

░██████╗██╗░░░░░██╗░░░██╗███╗░░░███╗██████╗░░█████╗░░██████╗░███████╗
██╔════╝██║░░░░░██║░░░██║████╗░████║██╔══██╗██╔══██╗██╔════╝░██╔════╝
╚█████╗░██║░░░░░██║░░░██║██╔████╔██║██║░░██║██║░░██║██║░░██╗░█████╗░░
░╚═══██╗██║░░░░░██║░░░██║██║╚██╔╝██║██║░░██║██║░░██║██║░░╚██╗██╔══╝░░
██████╔╝███████╗╚██████╔╝██║░╚═╝░██║██████╔╝╚█████╔╝╚██████╔╝███████╗
╚═════╝░╚══════╝░╚═════╝░╚═╝░░░░░╚═╝╚═════╝░░╚════╝░░╚═════╝░╚══════╝

██████╗░░█████╗░██╗░░░██╗██╗░░░░░██╗░░░██╗░██████╗░██╗██████╗░██╗░░░░░
██╔══██╗██╔══██╗██║░░░██║██║░░░░░╚██╗░██╔╝██╔════╝░██║██╔══██╗██║░░░░░
██████╔╝███████║██║░░░██║██║░░░░░░╚████╔╝░██║░░██╗░██║██████╔╝██║░░░░░
██╔═══╝░██╔══██║██║░░░██║██║░░░░░░░╚██╔╝░░██║░░╚██╗██║██╔══██╗██║░░░░░
██║░░░░░██║░░██║╚██████╔╝███████╗░░░██║░░░╚██████╔╝██║██║░░██║███████╗
╚═╝░░░░░╚═╝░░╚═╝░╚═════╝░╚══════╝░░░╚═╝░░░░╚═════╝░╚═╝╚═╝░░╚═╝╚══════╝

██╗░░██╗░█████╗░██████╗░██████╗░██╗░██████╗██╗░░██╗░█████╗░███████╗
██║░░██║██╔══██╗██╔══██╗██╔══██╗██║██╔════╝██║░░██║██╔══██╗██╔════╝
███████║███████║██████╔╝██████╔╝██║╚█████╗░███████║██║░░██║█████╗░░
██╔══██║██╔══██║██╔══██╗██╔══██╗██║░╚═══██╗██╔══██║██║░░██║██╔══╝░░
██║░░██║██║░░██║██║░░██║██║░░██║██║██████╔╝██║░░██║╚█████╔╝███████╗
╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝╚═════╝░╚═╝░░╚═╝░╚════╝░╚══════╝

░██╗░░░░░░░██╗░█████╗░██╗░░░░░███████╗██╗░░░██╗░██████╗░██╗░░░░░░░██╗░█████╗░███╗░░██╗██╗░░██╗███████╗██████╗░
░██║░░██╗░░██║██╔══██╗██║░░░░░██╔════╝╚██╗░██╔╝██╔════╝░██║░░██╗░░██║██╔══██╗████╗░██║██║░██╔╝██╔════╝██╔══██╗
░╚██╗████╗██╔╝██║░░██║██║░░░░░█████╗░░░╚████╔╝░╚█████╗░░╚██╗████╗██╔╝███████║██╔██╗██║█████═╝░█████╗░░██████╔╝
░░████╔═████║░██║░░██║██║░░░░░██╔══╝░░░░╚██╔╝░░░╚═══██╗░░████╔═████║░██╔══██║██║╚████║██╔═██╗░██╔══╝░░██╔══██╗
░░╚██╔╝░╚██╔╝░╚█████╔╝███████╗██║░░░░░░░░██║░░░██████╔╝░░╚██╔╝░╚██╔╝░██║░░██║██║░╚███║██║░╚██╗███████╗██║░░██║
░░░╚═╝░░░╚═╝░░░╚════╝░╚══════╝╚═╝░░░░░░░░╚═╝░░░╚═════╝░░░░╚═╝░░░╚═╝░░╚═╝░░╚═╝╚═╝░░╚══╝╚═╝░░╚═╝╚══════╝╚═╝░░╚═╝

██████╗░██╗░█████╗░██╗░░██╗███████╗██╗░░░░░███████╗██╗░░██╗
██╔══██╗██║██╔══██╗██║░░██║██╔════╝██║░░░░░██╔════╝╚██╗██╔╝
██████╔╝██║██║░░╚═╝███████║█████╗░░██║░░░░░█████╗░░░╚███╔╝░
██╔══██╗██║██║░░██╗██╔══██║██╔══╝░░██║░░░░░██╔══╝░░░██╔██╗░
██║░░██║██║╚█████╔╝██║░░██║██║░░░░░███████╗███████╗██╔╝╚██╗
╚═╝░░╚═╝╚═╝░╚════╝░╚═╝░░╚═╝╚═╝░░░░░╚══════╝╚══════╝╚═╝░░╚═╝

░█████╗░██╗░░░░░██╗████████╗████████╗██╗░░░░░███████╗██████╗░██╗████████╗░█████╗░██╗░░██╗
██╔══██╗██║░░░░░██║╚══██╔══╝╚══██╔══╝██║░░░░░██╔════╝██╔══██╗██║╚══██╔══╝██╔══██╗██║░░██║
███████║██║░░░░░██║░░░██║░░░░░░██║░░░██║░░░░░█████╗░░██████╦╝██║░░░██║░░░██║░░╚═╝███████║
██╔══██║██║░░░░░██║░░░██║░░░░░░██║░░░██║░░░░░██╔══╝░░██╔══██╗██║░░░██║░░░██║░░██╗██╔══██║
██║░░██║███████╗██║░░░██║░░░░░░██║░░░███████╗███████╗██████╦╝██║░░░██║░░░╚█████╔╝██║░░██║
╚═╝░░╚═╝╚══════╝╚═╝░░░╚═╝░░░░░░╚═╝░░░╚══════╝╚══════╝╚═════╝░╚═╝░░░╚═╝░░░░╚════╝░╚═╝░░╚═╝

░█████╗░░█████╗░██╗░░░░░██╗░█████╗░██╗░░██╗██████╗░███████╗███████╗██╗░░██╗███╗░░██╗██╗░░░██╗████████╗███████╗
██╔═══╝░██╔══██╗██║░░░░░██║██╔══██╗██║░██╔╝██╔══██╗██╔════╝██╔════╝╚██╗██╔╝████╗░██║██║░░░██║╚══██╔══╝╚════██║
██████╗░╚██████║██║░░░░░██║██║░░╚═╝█████═╝░██║░░██║█████╗░░█████╗░░░╚███╔╝░██╔██╗██║██║░░░██║░░░██║░░░░░███╔═╝
██╔══██╗░╚═══██║██║░░░░░██║██║░░██╗██╔═██╗░██║░░██║██╔══╝░░██╔══╝░░░██╔██╗░██║╚████║██║░░░██║░░░██║░░░██╔══╝░░
╚█████╔╝░█████╔╝███████╗██║╚█████╔╝██║░╚██╗██████╔╝███████╗███████╗██╔╝╚██╗██║░╚███║╚██████╔╝░░░██║░░░███████╗
░╚════╝░░╚════╝░╚══════╝╚═╝░╚════╝░╚═╝░░╚═╝╚═════╝░╚══════╝╚══════╝╚═╝░░╚═╝╚═╝░░╚══╝░╚═════╝░░░░╚═╝░░░╚══════╝

██████╗░███████╗███╗░░██╗░░░███████╗████████╗██╗░░██╗  ██╗░██████╗
██╔══██╗██╔════╝████╗░██║░░░██╔════╝╚══██╔══╝██║░░██║  ██║██╔════╝
██████╦╝█████╗░░██╔██╗██║░░░█████╗░░░░░██║░░░███████║  ██║╚█████╗░
██╔══██╗██╔══╝░░██║╚████║░░░██╔══╝░░░░░██║░░░██╔══██║  ██║░╚═══██╗
██████╦╝███████╗██║░╚███║██╗███████╗░░░██║░░░██║░░██║  ██║██████╔╝
╚═════╝░╚══════╝╚═╝░░╚══╝╚═╝╚══════╝░░░╚═╝░░░╚═╝░░╚═╝  ╚═╝╚═════╝░

░██████╗░░█████╗░░█████╗░████████╗███████╗██████╗░
██╔════╝░██╔══██╗██╔══██╗╚══██╔══╝██╔════╝██╔══██╗
██║░░██╗░██║░░██║███████║░░░██║░░░█████╗░░██║░░██║
██║░░╚██╗██║░░██║██╔══██║░░░██║░░░██╔══╝░░██║░░██║
╚██████╔╝╚█████╔╝██║░░██║░░░██║░░░███████╗██████╔╝
░╚═════╝░░╚════╝░╚═╝░░╚═╝░░░╚═╝░░░╚══════╝╚═════╝░
                                                                                                                                                                                                                                                                                                                                                                                                                          
**/
pragma solidity 0.8.20;

interface ERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);
}



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

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

contract Ownable is Context {
    address public _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }
    mapping (address => bool) internal authorizations;

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    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 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;
}

interface InterfaceLP {
    function sync() external;
}


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

contract RUGME is Ownable, ERC20 {
    using SafeMath for uint256;

    address WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;
    

    string constant _name = "$FityChumpBitBoyBorovikSlumDogePaulyGirlHarrisHoeWolfysWankerRichFlexAlittleBitch-69LickDeezNutzBen.ETHisGOATED";
    string constant _symbol = "RUGME";
    uint8 constant _decimals = 18; 


    event AutoLiquify(uint256 amountETH, uint256 amountTokens);
    event EditTax(uint8 Buy, uint8 Sell, uint8 Transfer);
    event user_exemptfromfees(address Wallet, bool Exempt);
    event user_TxExempt(address Wallet, bool Exempt);
    event ClearStuck(uint256 amount);
    event ClearToken(address TokenAddressCleared, uint256 Amount);
    event set_Receivers(address marketingFeeReceiver, address buybackFeeReceiver,address burnFeeReceiver,address devFeeReceiver);
    event set_MaxWallet(uint256 maxWallet);
    event set_MaxTX(uint256 maxTX);
    event set_SwapBack(uint256 Amount, bool Enabled);
  
    uint256 _totalSupply =  10000000 * 10**_decimals; 

    uint256 public _maxTxAmount = _totalSupply.mul(2).div(100);
    uint256 public _maxWalletToken = _totalSupply.mul(3).div(100);

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;  
    mapping (address => bool) isexemptfromfees;
    mapping (address => bool) isexemptfrommaxTX;

    uint256 private liquidityFee    = 0;
    uint256 private marketingFee    = 2;
    uint256 private devFee          = 0;
    uint256 private buybackFee      = 0; 
    uint256 private burnFee         = 0;
    uint256 public totalFee         = buybackFee + marketingFee + liquidityFee + devFee + burnFee;
    uint256 private feeDenominator  = 50;

    uint256 sellpercent = 200; 
    uint256 buypercent = 200;
    uint256 transferpercent = 0; 

    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private devFeeReceiver;
    address private buybackFeeReceiver;
    address private burnFeeReceiver;

    uint256 setRatio = 30;
    uint256 setRatioDenominator = 100;
    

    IDEXRouter public router;
    InterfaceLP private pairContract;
    address public pair;
    
    bool public TradingOpen = false; 

   
    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 70 / 1000; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);
       
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        isexemptfromfees[msg.sender] = true;            
        isexemptfrommaxTX[msg.sender] = true;
        isexemptfrommaxTX[pair] = true;
        isexemptfrommaxTX[marketingFeeReceiver] = true;
        isexemptfrommaxTX[address(this)] = true;
        
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = msg.sender;
        devFeeReceiver = msg.sender;
        buybackFeeReceiver = msg.sender;
        burnFeeReceiver = DEAD; 

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);

    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) {return owner();}
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

        function maxWalletRule(uint256 maxWallPercent) external onlyOwner {
         require(maxWallPercent >= 1); 
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 1000;
        emit set_MaxWallet(_maxWalletToken);
                
    }

      function removeLimits () external onlyOwner {
            _maxTxAmount = _totalSupply;
            _maxWalletToken = _totalSupply;
    }

      
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(TradingOpen,"Trading not open yet");
        
          }
        
               
        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != burnFeeReceiver && recipient != marketingFeeReceiver && !isexemptfrommaxTX[recipient]){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}

        checkTxLimit(sender, amount);  

        if(shouldSwapBack()){ swapBack(); }
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isexemptfromfees[sender] || isexemptfromfees[recipient]) ? amount : takeFee(sender, amount, recipient);
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
 
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isexemptfrommaxTX[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isexemptfromfees[sender];
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        
        uint256 percent = transferpercent;
        if(recipient == pair) {
            percent = sellpercent;
        } else if(sender == pair) {
            percent = buypercent;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(percent).div(feeDenominator * 100);
        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);
        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        
        if(burnTokens > 0){
            _totalSupply = _totalSupply.sub(burnTokens);
            emit Transfer(sender, ZERO, burnTokens);  
        
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

  
     function manualSend() external { 
             payable(autoLiquidityReceiver).transfer(address(this).balance);
            
    }

   function clearStuckToken(address tokenAddress, uint256 tokens) external returns (bool success) {
             if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        emit ClearToken(tokenAddress, tokens);
        return ERC20(tokenAddress).transfer(autoLiquidityReceiver, tokens);
    }

    function setStructure(uint256 _percentonbuy, uint256 _percentonsell, uint256 _wallettransfer) external onlyOwner {
        sellpercent = _percentonsell;
        buypercent = _percentonbuy;
        transferpercent = _wallettransfer;    
          
    }
       
    function startTrading() public onlyOwner {
        TradingOpen = true;
        buypercent = 100;
        sellpercent = 100;
        transferpercent = 100;
                              
    }

      function reduceFee() public onlyOwner {
       
        buypercent = 50;
        sellpercent = 50;
        transferpercent = 50;
                              
    }

             
    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = checkRatio(setRatio, setRatioDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHbuyback = amountETH.mul(buybackFee).div(totalETHFee);
        uint256 amountETHdev = amountETH.mul(devFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHdev}("");
        (tmpSuccess,) = payable(buybackFeeReceiver).call{value: amountETHbuyback}("");
        
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }
    
  
    function set_fees() internal {
      
        emit EditTax( uint8(totalFee.mul(buypercent).div(100)),
            uint8(totalFee.mul(sellpercent).div(100)),
            uint8(totalFee.mul(transferpercent).div(100))
            );
            }
    
    function setParameters(uint256 _liquidityFee, uint256 _buybackFee, uint256 _marketingFee, uint256 _devFee, uint256 _burnFee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        buybackFee = _buybackFee;
        marketingFee = _marketingFee;
        devFee = _devFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_buybackFee).add(_marketingFee).add(_devFee).add(_burnFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 2, "Fees can not be more than 50%"); 
        set_fees();
    }

   
    function setWallets(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _devFeeReceiver, address _burnFeeReceiver, address _buybackFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        devFeeReceiver = _devFeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
        buybackFeeReceiver = _buybackFeeReceiver;

        emit set_Receivers(marketingFeeReceiver, buybackFeeReceiver, burnFeeReceiver, devFeeReceiver);
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount;
        emit set_SwapBack(swapThreshold, swapEnabled);
    }

    function checkRatio(uint256 ratio, uint256 accuracy) public view returns (bool) {
        return showBacking(accuracy) > ratio;
    }

    function showBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(showSupply());
    }
    
    function showSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }


}

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":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClearStuck","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"ClearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"Buy","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Sell","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Transfer","type":"uint8"}],"name":"EditTax","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":"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":"maxTX","type":"uint256"}],"name":"set_MaxTX","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"set_MaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"buybackFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"burnFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"devFeeReceiver","type":"address"}],"name":"set_Receivers","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"Enabled","type":"bool"}],"name":"set_SwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Exempt","type":"bool"}],"name":"user_TxExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Exempt","type":"bool"}],"name":"user_exemptfromfees","type":"event"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ratio","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"checkRatio","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"maxWalletRule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buybackFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentonbuy","type":"uint256"},{"internalType":"uint256","name":"_percentonsell","type":"uint256"},{"internalType":"uint256","name":"_wallettransfer","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"},{"internalType":"address","name":"_buybackFeeReceiver","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"showBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"},{"stateMutability":"payable","type":"receive"}]

60806040526012600a62000014919062000ce3565b6298968062000024919062000d33565b60035562000054606462000045600260035462000a1360201b90919060201c565b62000a9360201b90919060201c565b600455620000836064620000746003805462000a1360201b90919060201c565b62000a9360201b90919060201c565b6005555f600a556002600b555f600c555f600d555f600e55600e54600c54600a54600b54600d54620000b6919062000d7d565b620000c2919062000d7d565b620000ce919062000d7d565b620000da919062000d7d565b600f55603260105560c860115560c86012555f601355601e6019556064601a555f601d60146101000a81548160ff0219169083151502179055506001601d60156101000a81548160ff0219169083151502179055506103e8604660035462000143919062000d33565b6200014f919062000de4565b601e553480156200015e575f80fd5b505f6200017062000ae460201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001805f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d601b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200033f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000365919062000e80565b60025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200040f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000435919062000e80565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200049292919062000ec1565b6020604051808303815f875af1158015620004af573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004d5919062000e80565b601d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503360145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead60185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060035460065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035460405162000a05919062000efd565b60405180910390a362001062565b5f80830362000a25575f905062000a8d565b5f828462000a34919062000d33565b905082848262000a45919062000de4565b1462000a88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a7f9062000f9c565b60405180910390fd5b809150505b92915050565b5f62000adc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000aeb60201b60201c565b905092915050565b5f33905090565b5f808311829062000b34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b2b919062001040565b60405180910390fd5b505f838562000b44919062000de4565b9050809150509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000bdb5780860481111562000bb35762000bb262000b51565b5b600185161562000bc35780820291505b808102905062000bd38562000b7e565b945062000b93565b94509492505050565b5f8262000bf5576001905062000cc7565b8162000c04575f905062000cc7565b816001811462000c1d576002811462000c285762000c5e565b600191505062000cc7565b60ff84111562000c3d5762000c3c62000b51565b5b8360020a91508482111562000c575762000c5662000b51565b5b5062000cc7565b5060208310610133831016604e8410600b841016171562000c985782820a90508381111562000c925762000c9162000b51565b5b62000cc7565b62000ca7848484600162000b8a565b9250905081840481111562000cc15762000cc062000b51565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f62000cef8262000cce565b915062000cfc8362000cd7565b925062000d2b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000be4565b905092915050565b5f62000d3f8262000cce565b915062000d4c8362000cce565b925082820262000d5c8162000cce565b9150828204841483151762000d765762000d7562000b51565b5b5092915050565b5f62000d898262000cce565b915062000d968362000cce565b925082820190508082111562000db15762000db062000b51565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000df08262000cce565b915062000dfd8362000cce565b92508262000e105762000e0f62000db7565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000e4a8262000e1f565b9050919050565b62000e5c8162000e3e565b811462000e67575f80fd5b50565b5f8151905062000e7a8162000e51565b92915050565b5f6020828403121562000e985762000e9762000e1b565b5b5f62000ea78482850162000e6a565b91505092915050565b62000ebb8162000e3e565b82525050565b5f60408201905062000ed65f83018562000eb0565b62000ee5602083018462000eb0565b9392505050565b62000ef78162000cce565b82525050565b5f60208201905062000f125f83018462000eec565b92915050565b5f82825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f62000f8460218362000f18565b915062000f918262000f28565b604082019050919050565b5f6020820190508181035f83015262000fb58162000f76565b9050919050565b5f81519050919050565b5f5b8381101562000fe557808201518184015260208101905062000fc8565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6200100c8262000fbc565b62001018818562000f18565b93506200102a81856020860162000fc6565b620010358162000ff0565b840191505092915050565b5f6020820190508181035f8301526200105a818462001000565b905092915050565b6140f280620010705f395ff3fe608060405260043610610212575f3560e01c806377b54bad11610117578063a9059cbb1161009f578063ded1e4381161006e578063ded1e4381461076b578063df20fd49146107a7578063f2fde38b146107cf578063f4293890146107f7578063f887ea401461080d57610219565b8063a9059cbb146106a1578063b2bdfa7b146106dd578063c0cbdea414610707578063dd62ed3e1461072f57610219565b8063893d20e8116100e6578063893d20e8146105e35780638da5cb5b1461060d57806395d89b4114610637578063a70419d214610661578063a8aa1b311461067757610219565b806377b54bad1461052b57806378109e54146105675780637d1db4a51461059157806382528791146105bb57610219565b806330c9a6a01161019a5780635d83e1d5116101695780635d83e1d5146104715780636ddd17131461049957806370a08231146104c3578063715018a6146104ff578063751039fc1461051557610219565b806330c9a6a0146103a5578063313ce567146103e1578063552656691461040b578063571ac8b01461043557610219565b806318160ddd116101e157806318160ddd146102d75780631df4ccfc1461030157806323b872dd1461032b578063282c874914610367578063293230b81461038f57610219565b80630445b6671461021d57806306fdde031461024757806308fd3d0514610271578063095ea7b31461029b57610219565b3661021957005b5f80fd5b348015610228575f80fd5b50610231610837565b60405161023e9190613207565b60405180910390f35b348015610252575f80fd5b5061025b61083d565b60405161026891906132aa565b60405180910390f35b34801561027c575f80fd5b5061028561085d565b60405161029291906132e4565b60405180910390f35b3480156102a6575f80fd5b506102c160048036038101906102bc9190613385565b610870565b6040516102ce91906132e4565b60405180910390f35b3480156102e2575f80fd5b506102eb61095d565b6040516102f89190613207565b60405180910390f35b34801561030c575f80fd5b50610315610966565b6040516103229190613207565b60405180910390f35b348015610336575f80fd5b50610351600480360381019061034c91906133c3565b61096c565b60405161035e91906132e4565b60405180910390f35b348015610372575f80fd5b5061038d60048036038101906103889190613413565b610b5f565b005b34801561039a575f80fd5b506103a3610cce565b005b3480156103b0575f80fd5b506103cb60048036038101906103c6919061349c565b610d97565b6040516103d89190613207565b60405180910390f35b3480156103ec575f80fd5b506103f5610e07565b60405161040291906134e2565b60405180910390f35b348015610416575f80fd5b5061041f610e0f565b60405161042c9190613207565b60405180910390f35b348015610440575f80fd5b5061045b600480360381019061045691906134fb565b610e4e565b60405161046891906132e4565b60405180910390f35b34801561047c575f80fd5b506104976004803603810190610492919061349c565b610e80565b005b3480156104a4575f80fd5b506104ad610f7e565b6040516104ba91906132e4565b60405180910390f35b3480156104ce575f80fd5b506104e960048036038101906104e491906134fb565b610f91565b6040516104f69190613207565b60405180910390f35b34801561050a575f80fd5b50610513610fd7565b005b348015610520575f80fd5b50610529611125565b005b348015610536575f80fd5b50610551600480360381019061054c9190613385565b6111cd565b60405161055e91906132e4565b60405180910390f35b348015610572575f80fd5b5061057b61132d565b6040516105889190613207565b60405180910390f35b34801561059c575f80fd5b506105a5611333565b6040516105b29190613207565b60405180910390f35b3480156105c6575f80fd5b506105e160048036038101906105dc9190613526565b611339565b005b3480156105ee575f80fd5b506105f76115d5565b60405161060491906135ac565b60405180910390f35b348015610618575f80fd5b506106216115e3565b60405161062e91906135ac565b60405180910390f35b348015610642575f80fd5b5061064b61160a565b60405161065891906132aa565b60405180910390f35b34801561066c575f80fd5b50610675611647565b005b348015610682575f80fd5b5061068b6116f5565b60405161069891906135ac565b60405180910390f35b3480156106ac575f80fd5b506106c760048036038101906106c29190613385565b61171a565b6040516106d491906132e4565b60405180910390f35b3480156106e8575f80fd5b506106f161172e565b6040516106fe91906135ac565b60405180910390f35b348015610712575f80fd5b5061072d600480360381019061072891906135c5565b611751565b005b34801561073a575f80fd5b5061075560048036038101906107509190613615565b6117ff565b6040516107629190613207565b60405180910390f35b348015610776575f80fd5b50610791600480360381019061078c9190613653565b611881565b60405161079e91906132e4565b60405180910390f35b3480156107b2575f80fd5b506107cd60048036038101906107c891906136bb565b611895565b005b3480156107da575f80fd5b506107f560048036038101906107f091906134fb565b611998565b005b348015610802575f80fd5b5061080b611b55565b005b348015610818575f80fd5b50610821611bbc565b60405161082e9190613754565b60405180910390f35b601e5481565b60606040518060a00160405280606f815260200161404e606f9139905090565b601d60149054906101000a900460ff1681565b5f8160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161094b9190613207565b60405180910390a36001905092915050565b5f600354905090565b600f5481565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610b4b57610ace826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611be19092919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610b56848484611c43565b90509392505050565b610b6761227a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bea906137b7565b60405180910390fd5b85600a8190555084600d8190555083600b8190555082600c8190555081600e81905550610c5f82610c5185610c4388610c358b8d61228190919063ffffffff16565b61228190919063ffffffff16565b61228190919063ffffffff16565b61228190919063ffffffff16565b600f81905550806010819055506002601054610c7b919061382f565b600f5410610cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb5906138a9565b60405180910390fd5b610cc66122de565b505050505050565b610cd661227a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d59906137b7565b60405180910390fd5b6001601d60146101000a81548160ff021916908315150217905550606460128190555060646011819055506064601381905550565b5f610e00610da3610e0f565b610df2610de36002610dd5601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f91565b61239690919063ffffffff16565b8561239690919063ffffffff16565b61240d90919063ffffffff16565b9050919050565b5f6012905090565b5f610e49610e1c5f610f91565b610e3b610e2a61dead610f91565b60035461245690919063ffffffff16565b61245690919063ffffffff16565b905090565b5f610e79827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610870565b9050919050565b610e8861227a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0b906137b7565b60405180910390fd5b6001811015610f21575f80fd5b6103e881600354610f3291906138c7565b610f3c919061382f565b6005819055507f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be51600554604051610f739190613207565b60405180910390a150565b601d60159054906101000a900460ff1681565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610fdf61227a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611062906137b7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61112d61227a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b0906137b7565b60405180910390fd5b600354600481905550600354600581905550565b5f808203611250578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161120e91906135ac565b602060405180830381865afa158015611229573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061124d919061391c565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f8383604051611281929190613947565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016112e5929190613947565b6020604051808303815f875af1158015611301573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190613982565b905092915050565b60055481565b60045481565b61134161227a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c4906137b7565b60405180910390fd5b8460145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f06cd79b5e338fdebb51e28f829f3333e4fda9663d4732f262d97dbbacf748b1560155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516115c694939291906139ad565b60405180910390a15050505050565b5f6115de6115e3565b905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f5255474d45000000000000000000000000000000000000000000000000000000815250905090565b61164f61227a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d2906137b7565b60405180910390fd5b603260128190555060326011819055506032601381905550565b601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611726338484611c43565b905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61175961227a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dc906137b7565b60405180910390fd5b816011819055508260128190555080601381905550505050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8261188c83610d97565b11905092915050565b61189d61227a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611929576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611920906137b7565b60405180910390fd5b81601d60156101000a81548160ff02191690831515021790555080601e819055507f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60601e54601d60159054906101000a900460ff1660405161198c9291906139f0565b60405180910390a15050565b6119a061227a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a23906137b7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9190613a87565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611bb9573d5f803e3d5ffd5b50565b601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f838311158290611c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1f91906132aa565b60405180910390fd5b505f8385611c369190613aa5565b9050809150509392505050565b5f601f5f9054906101000a900460ff1615611c6a57611c6384848461249f565b9050612273565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611d08575060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d5d57601d60149054906101000a900460ff16611d5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5390613b22565b60405180910390fd5b5b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611de057503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611e1a575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611e735750601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ecc575060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f25575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f78575060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611fdb575f611f8784610f91565b90506005548382611f989190613b40565b1115611fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd090613be3565b60405180910390fd5b505b611fe58483612669565b611fed612703565b15611ffb57611ffa6127d5565b5b612082826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611be19092919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061215f575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6121735761216e858486612dd0565b612175565b825b90506121c78160065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461228190919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122659190613207565b60405180910390a360019150505b9392505050565b5f33905090565b5f80828461228f9190613b40565b9050838110156122d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cb90613c4b565b60405180910390fd5b8091505092915050565b7f8cc651ceed4360bdb07d4dfc17daa4a6fa17092a313d2464a582a73e9b932800612329606461231b601254600f5461239690919063ffffffff16565b61240d90919063ffffffff16565b6123536064612345601154600f5461239690919063ffffffff16565b61240d90919063ffffffff16565b61237d606461236f601354600f5461239690919063ffffffff16565b61240d90919063ffffffff16565b60405161238c93929190613c69565b60405180910390a1565b5f8083036123a6575f9050612407565b5f82846123b391906138c7565b90508284826123c2919061382f565b14612402576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f990613d0e565b60405180910390fd5b809150505b92915050565b5f61244e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061318e565b905092915050565b5f61249783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611be1565b905092915050565b5f612527826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611be19092919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506125b88260065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461228190919063ffffffff16565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126569190613207565b60405180910390a3600190509392505050565b600454811115806126c0575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6126ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f690613d76565b60405180910390fd5b5050565b5f601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561276d5750601f5f9054906101000a900460ff16155b80156127855750601d60159054906101000a900460ff165b80156127d05750601e5460065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b905090565b6001601f5f6101000a81548160ff0219169083151502179055505f6127fe601954601a54611881565b61280a57600a5461280c565b5f5b90505f61284b600261283d600f5461282f86601e5461239690919063ffffffff16565b61240d90919063ffffffff16565b61240d90919063ffffffff16565b90505f61286382601e5461245690919063ffffffff16565b90505f600267ffffffffffffffff81111561288157612880613d94565b5b6040519080825280602002602001820160405280156128af5781602001602082028036833780820191505090505b50905030815f815181106128c6576128c5613dc1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061293657612935613dc1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f479050601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8530426040518663ffffffff1660e01b81526004016129d6959493929190613ede565b5f604051808303815f87803b1580156129ed575f80fd5b505af11580156129ff573d5f803e3d5ffd5b505050505f612a17824761245690919063ffffffff16565b90505f612a42612a3160028961240d90919063ffffffff16565b600f5461245690919063ffffffff16565b90505f612a7d6002612a6f84612a618c8861239690919063ffffffff16565b61240d90919063ffffffff16565b61240d90919063ffffffff16565b90505f612aa783612a99600b548761239690919063ffffffff16565b61240d90919063ffffffff16565b90505f612ad184612ac3600d548861239690919063ffffffff16565b61240d90919063ffffffff16565b90505f612afb85612aed600c548961239690919063ffffffff16565b61240d90919063ffffffff16565b90505f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051612b4390613f63565b5f6040518083038185875af1925050503d805f8114612b7d576040519150601f19603f3d011682016040523d82523d5f602084013e612b82565b606091505b5050905060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612bcb90613f63565b5f6040518083038185875af1925050503d805f8114612c05576040519150601f19603f3d011682016040523d82523d5f602084013e612c0a565b606091505b50508091505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612c5590613f63565b5f6040518083038185875af1925050503d805f8114612c8f576040519150601f19603f3d011682016040523d82523d5f602084013e612c94565b606091505b5050809150505f90505f8b1115612da957601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e5f8060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612d2b96959493929190613f77565b60606040518083038185885af1158015612d47573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612d6c9190613fd6565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051612da0929190614026565b60405180910390a15b5050505050505050505050505f601f5f6101000a81548160ff021916908315150217905550565b5f806013549050601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e35576011549050612e90565b601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612e8f5760125490505b5b5f612ed86064601054612ea391906138c7565b612eca84612ebc600f548a61239690919063ffffffff16565b61239690919063ffffffff16565b61240d90919063ffffffff16565b90505f612f04600f54612ef6600e548561239690919063ffffffff16565b61240d90919063ffffffff16565b90505f612f1a828461245690919063ffffffff16565b9050612f6c8160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461228190919063ffffffff16565b60065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061301e8260065f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461228190919063ffffffff16565b60065f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130dd9190613207565b60405180910390a35f82111561316e576131028260035461245690919063ffffffff16565b6003819055505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131659190613207565b60405180910390a35b613181838861245690919063ffffffff16565b9450505050509392505050565b5f80831182906131d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131cb91906132aa565b60405180910390fd5b505f83856131e2919061382f565b9050809150509392505050565b5f819050919050565b613201816131ef565b82525050565b5f60208201905061321a5f8301846131f8565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561325757808201518184015260208101905061323c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61327c82613220565b613286818561322a565b935061329681856020860161323a565b61329f81613262565b840191505092915050565b5f6020820190508181035f8301526132c28184613272565b905092915050565b5f8115159050919050565b6132de816132ca565b82525050565b5f6020820190506132f75f8301846132d5565b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61332a82613301565b9050919050565b61333a81613320565b8114613344575f80fd5b50565b5f8135905061335581613331565b92915050565b613364816131ef565b811461336e575f80fd5b50565b5f8135905061337f8161335b565b92915050565b5f806040838503121561339b5761339a6132fd565b5b5f6133a885828601613347565b92505060206133b985828601613371565b9150509250929050565b5f805f606084860312156133da576133d96132fd565b5b5f6133e786828701613347565b93505060206133f886828701613347565b925050604061340986828701613371565b9150509250925092565b5f805f805f8060c0878903121561342d5761342c6132fd565b5b5f61343a89828a01613371565b965050602061344b89828a01613371565b955050604061345c89828a01613371565b945050606061346d89828a01613371565b935050608061347e89828a01613371565b92505060a061348f89828a01613371565b9150509295509295509295565b5f602082840312156134b1576134b06132fd565b5b5f6134be84828501613371565b91505092915050565b5f60ff82169050919050565b6134dc816134c7565b82525050565b5f6020820190506134f55f8301846134d3565b92915050565b5f602082840312156135105761350f6132fd565b5b5f61351d84828501613347565b91505092915050565b5f805f805f60a0868803121561353f5761353e6132fd565b5b5f61354c88828901613347565b955050602061355d88828901613347565b945050604061356e88828901613347565b935050606061357f88828901613347565b925050608061359088828901613347565b9150509295509295909350565b6135a681613320565b82525050565b5f6020820190506135bf5f83018461359d565b92915050565b5f805f606084860312156135dc576135db6132fd565b5b5f6135e986828701613371565b93505060206135fa86828701613371565b925050604061360b86828701613371565b9150509250925092565b5f806040838503121561362b5761362a6132fd565b5b5f61363885828601613347565b925050602061364985828601613347565b9150509250929050565b5f8060408385031215613669576136686132fd565b5b5f61367685828601613371565b925050602061368785828601613371565b9150509250929050565b61369a816132ca565b81146136a4575f80fd5b50565b5f813590506136b581613691565b92915050565b5f80604083850312156136d1576136d06132fd565b5b5f6136de858286016136a7565b92505060206136ef85828601613371565b9150509250929050565b5f819050919050565b5f61371c61371761371284613301565b6136f9565b613301565b9050919050565b5f61372d82613702565b9050919050565b5f61373e82613723565b9050919050565b61374e81613734565b82525050565b5f6020820190506137675f830184613745565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6137a160208361322a565b91506137ac8261376d565b602082019050919050565b5f6020820190508181035f8301526137ce81613795565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613839826131ef565b9150613844836131ef565b925082613854576138536137d5565b5b828204905092915050565b7f466565732063616e206e6f74206265206d6f7265207468616e203530250000005f82015250565b5f613893601d8361322a565b915061389e8261385f565b602082019050919050565b5f6020820190508181035f8301526138c081613887565b9050919050565b5f6138d1826131ef565b91506138dc836131ef565b92508282026138ea816131ef565b9150828204841483151761390157613900613802565b5b5092915050565b5f815190506139168161335b565b92915050565b5f60208284031215613931576139306132fd565b5b5f61393e84828501613908565b91505092915050565b5f60408201905061395a5f83018561359d565b61396760208301846131f8565b9392505050565b5f8151905061397c81613691565b92915050565b5f60208284031215613997576139966132fd565b5b5f6139a48482850161396e565b91505092915050565b5f6080820190506139c05f83018761359d565b6139cd602083018661359d565b6139da604083018561359d565b6139e7606083018461359d565b95945050505050565b5f604082019050613a035f8301856131f8565b613a1060208301846132d5565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613a7160268361322a565b9150613a7c82613a17565b604082019050919050565b5f6020820190508181035f830152613a9e81613a65565b9050919050565b5f613aaf826131ef565b9150613aba836131ef565b9250828203905081811115613ad257613ad1613802565b5b92915050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f613b0c60148361322a565b9150613b1782613ad8565b602082019050919050565b5f6020820190508181035f830152613b3981613b00565b9050919050565b5f613b4a826131ef565b9150613b55836131ef565b9250828201905080821115613b6d57613b6c613802565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d69745f8201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b5f613bcd603e8361322a565b9150613bd882613b73565b604082019050919050565b5f6020820190508181035f830152613bfa81613bc1565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613c35601b8361322a565b9150613c4082613c01565b602082019050919050565b5f6020820190508181035f830152613c6281613c29565b9050919050565b5f606082019050613c7c5f8301866134d3565b613c8960208301856134d3565b613c9660408301846134d3565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613cf860218361322a565b9150613d0382613c9e565b604082019050919050565b5f6020820190508181035f830152613d2581613cec565b9050919050565b7f5458204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f613d6060118361322a565b9150613d6b82613d2c565b602082019050919050565b5f6020820190508181035f830152613d8d81613d54565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f613e11613e0c613e0784613dee565b6136f9565b6131ef565b9050919050565b613e2181613df7565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613e5981613320565b82525050565b5f613e6a8383613e50565b60208301905092915050565b5f602082019050919050565b5f613e8c82613e27565b613e968185613e31565b9350613ea183613e41565b805f5b83811015613ed1578151613eb88882613e5f565b9750613ec383613e76565b925050600181019050613ea4565b5085935050505092915050565b5f60a082019050613ef15f8301886131f8565b613efe6020830187613e18565b8181036040830152613f108186613e82565b9050613f1f606083018561359d565b613f2c60808301846131f8565b9695505050505050565b5f81905092915050565b50565b5f613f4e5f83613f36565b9150613f5982613f40565b5f82019050919050565b5f613f6d82613f43565b9150819050919050565b5f60c082019050613f8a5f83018961359d565b613f9760208301886131f8565b613fa46040830187613e18565b613fb16060830186613e18565b613fbe608083018561359d565b613fcb60a08301846131f8565b979650505050505050565b5f805f60608486031215613fed57613fec6132fd565b5b5f613ffa86828701613908565b935050602061400b86828701613908565b925050604061401c86828701613908565b9150509250925092565b5f6040820190506140395f8301856131f8565b61404660208301846131f8565b939250505056fe24466974794368756d70426974426f79426f726f76696b536c756d446f67655061756c794769726c486172726973486f65576f6c66797357616e6b657252696368466c6578416c6974746c6542697463682d36394c69636b4465657a4e75747a42656e2e4554486973474f41544544a264697066735822122038c77029c3fea27eb029acfcf75f6a2bcdf945db1b5ff3c0d30fbf5dc573db6f64736f6c63430008140033

Deployed Bytecode

0x608060405260043610610212575f3560e01c806377b54bad11610117578063a9059cbb1161009f578063ded1e4381161006e578063ded1e4381461076b578063df20fd49146107a7578063f2fde38b146107cf578063f4293890146107f7578063f887ea401461080d57610219565b8063a9059cbb146106a1578063b2bdfa7b146106dd578063c0cbdea414610707578063dd62ed3e1461072f57610219565b8063893d20e8116100e6578063893d20e8146105e35780638da5cb5b1461060d57806395d89b4114610637578063a70419d214610661578063a8aa1b311461067757610219565b806377b54bad1461052b57806378109e54146105675780637d1db4a51461059157806382528791146105bb57610219565b806330c9a6a01161019a5780635d83e1d5116101695780635d83e1d5146104715780636ddd17131461049957806370a08231146104c3578063715018a6146104ff578063751039fc1461051557610219565b806330c9a6a0146103a5578063313ce567146103e1578063552656691461040b578063571ac8b01461043557610219565b806318160ddd116101e157806318160ddd146102d75780631df4ccfc1461030157806323b872dd1461032b578063282c874914610367578063293230b81461038f57610219565b80630445b6671461021d57806306fdde031461024757806308fd3d0514610271578063095ea7b31461029b57610219565b3661021957005b5f80fd5b348015610228575f80fd5b50610231610837565b60405161023e9190613207565b60405180910390f35b348015610252575f80fd5b5061025b61083d565b60405161026891906132aa565b60405180910390f35b34801561027c575f80fd5b5061028561085d565b60405161029291906132e4565b60405180910390f35b3480156102a6575f80fd5b506102c160048036038101906102bc9190613385565b610870565b6040516102ce91906132e4565b60405180910390f35b3480156102e2575f80fd5b506102eb61095d565b6040516102f89190613207565b60405180910390f35b34801561030c575f80fd5b50610315610966565b6040516103229190613207565b60405180910390f35b348015610336575f80fd5b50610351600480360381019061034c91906133c3565b61096c565b60405161035e91906132e4565b60405180910390f35b348015610372575f80fd5b5061038d60048036038101906103889190613413565b610b5f565b005b34801561039a575f80fd5b506103a3610cce565b005b3480156103b0575f80fd5b506103cb60048036038101906103c6919061349c565b610d97565b6040516103d89190613207565b60405180910390f35b3480156103ec575f80fd5b506103f5610e07565b60405161040291906134e2565b60405180910390f35b348015610416575f80fd5b5061041f610e0f565b60405161042c9190613207565b60405180910390f35b348015610440575f80fd5b5061045b600480360381019061045691906134fb565b610e4e565b60405161046891906132e4565b60405180910390f35b34801561047c575f80fd5b506104976004803603810190610492919061349c565b610e80565b005b3480156104a4575f80fd5b506104ad610f7e565b6040516104ba91906132e4565b60405180910390f35b3480156104ce575f80fd5b506104e960048036038101906104e491906134fb565b610f91565b6040516104f69190613207565b60405180910390f35b34801561050a575f80fd5b50610513610fd7565b005b348015610520575f80fd5b50610529611125565b005b348015610536575f80fd5b50610551600480360381019061054c9190613385565b6111cd565b60405161055e91906132e4565b60405180910390f35b348015610572575f80fd5b5061057b61132d565b6040516105889190613207565b60405180910390f35b34801561059c575f80fd5b506105a5611333565b6040516105b29190613207565b60405180910390f35b3480156105c6575f80fd5b506105e160048036038101906105dc9190613526565b611339565b005b3480156105ee575f80fd5b506105f76115d5565b60405161060491906135ac565b60405180910390f35b348015610618575f80fd5b506106216115e3565b60405161062e91906135ac565b60405180910390f35b348015610642575f80fd5b5061064b61160a565b60405161065891906132aa565b60405180910390f35b34801561066c575f80fd5b50610675611647565b005b348015610682575f80fd5b5061068b6116f5565b60405161069891906135ac565b60405180910390f35b3480156106ac575f80fd5b506106c760048036038101906106c29190613385565b61171a565b6040516106d491906132e4565b60405180910390f35b3480156106e8575f80fd5b506106f161172e565b6040516106fe91906135ac565b60405180910390f35b348015610712575f80fd5b5061072d600480360381019061072891906135c5565b611751565b005b34801561073a575f80fd5b5061075560048036038101906107509190613615565b6117ff565b6040516107629190613207565b60405180910390f35b348015610776575f80fd5b50610791600480360381019061078c9190613653565b611881565b60405161079e91906132e4565b60405180910390f35b3480156107b2575f80fd5b506107cd60048036038101906107c891906136bb565b611895565b005b3480156107da575f80fd5b506107f560048036038101906107f091906134fb565b611998565b005b348015610802575f80fd5b5061080b611b55565b005b348015610818575f80fd5b50610821611bbc565b60405161082e9190613754565b60405180910390f35b601e5481565b60606040518060a00160405280606f815260200161404e606f9139905090565b601d60149054906101000a900460ff1681565b5f8160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161094b9190613207565b60405180910390a36001905092915050565b5f600354905090565b600f5481565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610b4b57610ace826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611be19092919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610b56848484611c43565b90509392505050565b610b6761227a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bea906137b7565b60405180910390fd5b85600a8190555084600d8190555083600b8190555082600c8190555081600e81905550610c5f82610c5185610c4388610c358b8d61228190919063ffffffff16565b61228190919063ffffffff16565b61228190919063ffffffff16565b61228190919063ffffffff16565b600f81905550806010819055506002601054610c7b919061382f565b600f5410610cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb5906138a9565b60405180910390fd5b610cc66122de565b505050505050565b610cd661227a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d59906137b7565b60405180910390fd5b6001601d60146101000a81548160ff021916908315150217905550606460128190555060646011819055506064601381905550565b5f610e00610da3610e0f565b610df2610de36002610dd5601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f91565b61239690919063ffffffff16565b8561239690919063ffffffff16565b61240d90919063ffffffff16565b9050919050565b5f6012905090565b5f610e49610e1c5f610f91565b610e3b610e2a61dead610f91565b60035461245690919063ffffffff16565b61245690919063ffffffff16565b905090565b5f610e79827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610870565b9050919050565b610e8861227a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0b906137b7565b60405180910390fd5b6001811015610f21575f80fd5b6103e881600354610f3291906138c7565b610f3c919061382f565b6005819055507f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be51600554604051610f739190613207565b60405180910390a150565b601d60159054906101000a900460ff1681565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610fdf61227a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611062906137b7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61112d61227a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b0906137b7565b60405180910390fd5b600354600481905550600354600581905550565b5f808203611250578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161120e91906135ac565b602060405180830381865afa158015611229573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061124d919061391c565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f8383604051611281929190613947565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016112e5929190613947565b6020604051808303815f875af1158015611301573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190613982565b905092915050565b60055481565b60045481565b61134161227a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c4906137b7565b60405180910390fd5b8460145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f06cd79b5e338fdebb51e28f829f3333e4fda9663d4732f262d97dbbacf748b1560155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516115c694939291906139ad565b60405180910390a15050505050565b5f6115de6115e3565b905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f5255474d45000000000000000000000000000000000000000000000000000000815250905090565b61164f61227a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d2906137b7565b60405180910390fd5b603260128190555060326011819055506032601381905550565b601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611726338484611c43565b905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61175961227a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dc906137b7565b60405180910390fd5b816011819055508260128190555080601381905550505050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8261188c83610d97565b11905092915050565b61189d61227a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611929576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611920906137b7565b60405180910390fd5b81601d60156101000a81548160ff02191690831515021790555080601e819055507f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60601e54601d60159054906101000a900460ff1660405161198c9291906139f0565b60405180910390a15050565b6119a061227a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a23906137b7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9190613a87565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611bb9573d5f803e3d5ffd5b50565b601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f838311158290611c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1f91906132aa565b60405180910390fd5b505f8385611c369190613aa5565b9050809150509392505050565b5f601f5f9054906101000a900460ff1615611c6a57611c6384848461249f565b9050612273565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611d08575060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d5d57601d60149054906101000a900460ff16611d5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5390613b22565b60405180910390fd5b5b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611de057503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611e1a575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611e735750601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ecc575060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f25575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f78575060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611fdb575f611f8784610f91565b90506005548382611f989190613b40565b1115611fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd090613be3565b60405180910390fd5b505b611fe58483612669565b611fed612703565b15611ffb57611ffa6127d5565b5b612082826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611be19092919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061215f575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6121735761216e858486612dd0565b612175565b825b90506121c78160065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461228190919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122659190613207565b60405180910390a360019150505b9392505050565b5f33905090565b5f80828461228f9190613b40565b9050838110156122d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cb90613c4b565b60405180910390fd5b8091505092915050565b7f8cc651ceed4360bdb07d4dfc17daa4a6fa17092a313d2464a582a73e9b932800612329606461231b601254600f5461239690919063ffffffff16565b61240d90919063ffffffff16565b6123536064612345601154600f5461239690919063ffffffff16565b61240d90919063ffffffff16565b61237d606461236f601354600f5461239690919063ffffffff16565b61240d90919063ffffffff16565b60405161238c93929190613c69565b60405180910390a1565b5f8083036123a6575f9050612407565b5f82846123b391906138c7565b90508284826123c2919061382f565b14612402576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f990613d0e565b60405180910390fd5b809150505b92915050565b5f61244e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061318e565b905092915050565b5f61249783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611be1565b905092915050565b5f612527826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611be19092919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506125b88260065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461228190919063ffffffff16565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126569190613207565b60405180910390a3600190509392505050565b600454811115806126c0575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6126ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f690613d76565b60405180910390fd5b5050565b5f601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561276d5750601f5f9054906101000a900460ff16155b80156127855750601d60159054906101000a900460ff165b80156127d05750601e5460065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b905090565b6001601f5f6101000a81548160ff0219169083151502179055505f6127fe601954601a54611881565b61280a57600a5461280c565b5f5b90505f61284b600261283d600f5461282f86601e5461239690919063ffffffff16565b61240d90919063ffffffff16565b61240d90919063ffffffff16565b90505f61286382601e5461245690919063ffffffff16565b90505f600267ffffffffffffffff81111561288157612880613d94565b5b6040519080825280602002602001820160405280156128af5781602001602082028036833780820191505090505b50905030815f815181106128c6576128c5613dc1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061293657612935613dc1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f479050601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8530426040518663ffffffff1660e01b81526004016129d6959493929190613ede565b5f604051808303815f87803b1580156129ed575f80fd5b505af11580156129ff573d5f803e3d5ffd5b505050505f612a17824761245690919063ffffffff16565b90505f612a42612a3160028961240d90919063ffffffff16565b600f5461245690919063ffffffff16565b90505f612a7d6002612a6f84612a618c8861239690919063ffffffff16565b61240d90919063ffffffff16565b61240d90919063ffffffff16565b90505f612aa783612a99600b548761239690919063ffffffff16565b61240d90919063ffffffff16565b90505f612ad184612ac3600d548861239690919063ffffffff16565b61240d90919063ffffffff16565b90505f612afb85612aed600c548961239690919063ffffffff16565b61240d90919063ffffffff16565b90505f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051612b4390613f63565b5f6040518083038185875af1925050503d805f8114612b7d576040519150601f19603f3d011682016040523d82523d5f602084013e612b82565b606091505b5050905060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612bcb90613f63565b5f6040518083038185875af1925050503d805f8114612c05576040519150601f19603f3d011682016040523d82523d5f602084013e612c0a565b606091505b50508091505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612c5590613f63565b5f6040518083038185875af1925050503d805f8114612c8f576040519150601f19603f3d011682016040523d82523d5f602084013e612c94565b606091505b5050809150505f90505f8b1115612da957601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e5f8060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612d2b96959493929190613f77565b60606040518083038185885af1158015612d47573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612d6c9190613fd6565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051612da0929190614026565b60405180910390a15b5050505050505050505050505f601f5f6101000a81548160ff021916908315150217905550565b5f806013549050601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e35576011549050612e90565b601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612e8f5760125490505b5b5f612ed86064601054612ea391906138c7565b612eca84612ebc600f548a61239690919063ffffffff16565b61239690919063ffffffff16565b61240d90919063ffffffff16565b90505f612f04600f54612ef6600e548561239690919063ffffffff16565b61240d90919063ffffffff16565b90505f612f1a828461245690919063ffffffff16565b9050612f6c8160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461228190919063ffffffff16565b60065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061301e8260065f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461228190919063ffffffff16565b60065f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130dd9190613207565b60405180910390a35f82111561316e576131028260035461245690919063ffffffff16565b6003819055505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131659190613207565b60405180910390a35b613181838861245690919063ffffffff16565b9450505050509392505050565b5f80831182906131d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131cb91906132aa565b60405180910390fd5b505f83856131e2919061382f565b9050809150509392505050565b5f819050919050565b613201816131ef565b82525050565b5f60208201905061321a5f8301846131f8565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561325757808201518184015260208101905061323c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61327c82613220565b613286818561322a565b935061329681856020860161323a565b61329f81613262565b840191505092915050565b5f6020820190508181035f8301526132c28184613272565b905092915050565b5f8115159050919050565b6132de816132ca565b82525050565b5f6020820190506132f75f8301846132d5565b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61332a82613301565b9050919050565b61333a81613320565b8114613344575f80fd5b50565b5f8135905061335581613331565b92915050565b613364816131ef565b811461336e575f80fd5b50565b5f8135905061337f8161335b565b92915050565b5f806040838503121561339b5761339a6132fd565b5b5f6133a885828601613347565b92505060206133b985828601613371565b9150509250929050565b5f805f606084860312156133da576133d96132fd565b5b5f6133e786828701613347565b93505060206133f886828701613347565b925050604061340986828701613371565b9150509250925092565b5f805f805f8060c0878903121561342d5761342c6132fd565b5b5f61343a89828a01613371565b965050602061344b89828a01613371565b955050604061345c89828a01613371565b945050606061346d89828a01613371565b935050608061347e89828a01613371565b92505060a061348f89828a01613371565b9150509295509295509295565b5f602082840312156134b1576134b06132fd565b5b5f6134be84828501613371565b91505092915050565b5f60ff82169050919050565b6134dc816134c7565b82525050565b5f6020820190506134f55f8301846134d3565b92915050565b5f602082840312156135105761350f6132fd565b5b5f61351d84828501613347565b91505092915050565b5f805f805f60a0868803121561353f5761353e6132fd565b5b5f61354c88828901613347565b955050602061355d88828901613347565b945050604061356e88828901613347565b935050606061357f88828901613347565b925050608061359088828901613347565b9150509295509295909350565b6135a681613320565b82525050565b5f6020820190506135bf5f83018461359d565b92915050565b5f805f606084860312156135dc576135db6132fd565b5b5f6135e986828701613371565b93505060206135fa86828701613371565b925050604061360b86828701613371565b9150509250925092565b5f806040838503121561362b5761362a6132fd565b5b5f61363885828601613347565b925050602061364985828601613347565b9150509250929050565b5f8060408385031215613669576136686132fd565b5b5f61367685828601613371565b925050602061368785828601613371565b9150509250929050565b61369a816132ca565b81146136a4575f80fd5b50565b5f813590506136b581613691565b92915050565b5f80604083850312156136d1576136d06132fd565b5b5f6136de858286016136a7565b92505060206136ef85828601613371565b9150509250929050565b5f819050919050565b5f61371c61371761371284613301565b6136f9565b613301565b9050919050565b5f61372d82613702565b9050919050565b5f61373e82613723565b9050919050565b61374e81613734565b82525050565b5f6020820190506137675f830184613745565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6137a160208361322a565b91506137ac8261376d565b602082019050919050565b5f6020820190508181035f8301526137ce81613795565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613839826131ef565b9150613844836131ef565b925082613854576138536137d5565b5b828204905092915050565b7f466565732063616e206e6f74206265206d6f7265207468616e203530250000005f82015250565b5f613893601d8361322a565b915061389e8261385f565b602082019050919050565b5f6020820190508181035f8301526138c081613887565b9050919050565b5f6138d1826131ef565b91506138dc836131ef565b92508282026138ea816131ef565b9150828204841483151761390157613900613802565b5b5092915050565b5f815190506139168161335b565b92915050565b5f60208284031215613931576139306132fd565b5b5f61393e84828501613908565b91505092915050565b5f60408201905061395a5f83018561359d565b61396760208301846131f8565b9392505050565b5f8151905061397c81613691565b92915050565b5f60208284031215613997576139966132fd565b5b5f6139a48482850161396e565b91505092915050565b5f6080820190506139c05f83018761359d565b6139cd602083018661359d565b6139da604083018561359d565b6139e7606083018461359d565b95945050505050565b5f604082019050613a035f8301856131f8565b613a1060208301846132d5565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613a7160268361322a565b9150613a7c82613a17565b604082019050919050565b5f6020820190508181035f830152613a9e81613a65565b9050919050565b5f613aaf826131ef565b9150613aba836131ef565b9250828203905081811115613ad257613ad1613802565b5b92915050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f613b0c60148361322a565b9150613b1782613ad8565b602082019050919050565b5f6020820190508181035f830152613b3981613b00565b9050919050565b5f613b4a826131ef565b9150613b55836131ef565b9250828201905080821115613b6d57613b6c613802565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d69745f8201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b5f613bcd603e8361322a565b9150613bd882613b73565b604082019050919050565b5f6020820190508181035f830152613bfa81613bc1565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613c35601b8361322a565b9150613c4082613c01565b602082019050919050565b5f6020820190508181035f830152613c6281613c29565b9050919050565b5f606082019050613c7c5f8301866134d3565b613c8960208301856134d3565b613c9660408301846134d3565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613cf860218361322a565b9150613d0382613c9e565b604082019050919050565b5f6020820190508181035f830152613d2581613cec565b9050919050565b7f5458204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f613d6060118361322a565b9150613d6b82613d2c565b602082019050919050565b5f6020820190508181035f830152613d8d81613d54565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f613e11613e0c613e0784613dee565b6136f9565b6131ef565b9050919050565b613e2181613df7565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613e5981613320565b82525050565b5f613e6a8383613e50565b60208301905092915050565b5f602082019050919050565b5f613e8c82613e27565b613e968185613e31565b9350613ea183613e41565b805f5b83811015613ed1578151613eb88882613e5f565b9750613ec383613e76565b925050600181019050613ea4565b5085935050505092915050565b5f60a082019050613ef15f8301886131f8565b613efe6020830187613e18565b8181036040830152613f108186613e82565b9050613f1f606083018561359d565b613f2c60808301846131f8565b9695505050505050565b5f81905092915050565b50565b5f613f4e5f83613f36565b9150613f5982613f40565b5f82019050919050565b5f613f6d82613f43565b9150819050919050565b5f60c082019050613f8a5f83018961359d565b613f9760208301886131f8565b613fa46040830187613e18565b613fb16060830186613e18565b613fbe608083018561359d565b613fcb60a08301846131f8565b979650505050505050565b5f805f60608486031215613fed57613fec6132fd565b5b5f613ffa86828701613908565b935050602061400b86828701613908565b925050604061401c86828701613908565b9150509250925092565b5f6040820190506140395f8301856131f8565b61404660208301846131f8565b939250505056fe24466974794368756d70426974426f79426f726f76696b536c756d446f67655061756c794769726c486172726973486f65576f6c66797357616e6b657252696368466c6578416c6974746c6542697463682d36394c69636b4465657a4e75747a42656e2e4554486973474f41544544a264697066735822122038c77029c3fea27eb029acfcf75f6a2bcdf945db1b5ff3c0d30fbf5dc573db6f64736f6c63430008140033

Deployed Bytecode Sourcemap

21031:13746:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23455:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24845:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23372:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25267:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24575:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22743:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25785:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32956:591;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30424:197;;;;;;;;;;;;;:::i;:::-;;34477:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24669:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34638:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25491:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26167:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23418:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25015:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17945:148;;;;;;;;;;;;;:::i;:::-;;26424:139;;;;;;;;;;;;;:::i;:::-;;29806:338;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22246:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22181:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33560:547;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24931:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17731:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24755:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30631:171;;;;;;;;;;;;;:::i;:::-;;23340:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25621:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17351:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30152:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25126:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34334:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34115:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18101:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29667:132;;;;;;;;;;;;;:::i;:::-;;23270:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23455:55;;;;:::o;24845:80::-;24893:13;24917:5;;;;;;;;;;;;;;;;;24910:12;;24845:80;:::o;23372:31::-;;;;;;;;;;;;;:::o;25267:216::-;25342:4;25394:6;25359:11;:23;25371:10;25359:23;;;;;;;;;;;;;;;:32;25383:7;25359:32;;;;;;;;;;;;;;;:41;;;;25437:7;25416:37;;25425:10;25416:37;;;25446:6;25416:37;;;;;;:::i;:::-;;;;;;;;25471:4;25464:11;;25267:216;;;;:::o;24575:88::-;24630:7;24648:12;;24641:19;;24575:88;:::o;22743:93::-;;;;:::o;25785:370::-;25885:4;25940:17;25905:11;:19;25917:6;25905:19;;;;;;;;;;;;;;;:31;25925:10;25905:31;;;;;;;;;;;;;;;;:52;25902:186;;26007:69;26043:6;26007:69;;;;;;;;;;;;;;;;;:11;:19;26019:6;26007:19;;;;;;;;;;;;;;;:31;26027:10;26007:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;25973:11;:19;25985:6;25973:19;;;;;;;;;;;;;;;:31;25993:10;25973:31;;;;;;;;;;;;;;;:103;;;;25902:186;26107:40;26121:6;26129:9;26140:6;26107:13;:40::i;:::-;26100:47;;25785:370;;;;;:::o;32956:591::-;17868:12;:10;:12::i;:::-;17858:22;;:6;;;;;;;;;;:22;;;17850:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33151:13:::1;33136:12;:28;;;;33188:11;33175:10;:24;;;;33225:13;33210:12;:28;;;;33258:7;33249:6;:16;;;;33286:8;33276:7;:18;;;;33316:76;33383:8;33316:62;33370:7;33316:49;33351:13;33316:30;33334:11;33316:13;:17;;:30;;;;:::i;:::-;:34;;:49;;;;:::i;:::-;:53;;:62;;;;:::i;:::-;:66;;:76;;;;:::i;:::-;33305:8;:87;;;;33420:15;33403:14;:32;;;;33482:1;33465:14;;:18;;;;:::i;:::-;33454:8;;:29;33446:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;33529:10;:8;:10::i;:::-;32956:591:::0;;;;;;:::o;30424:197::-;17868:12;:10;:12::i;:::-;17858:22;;:6;;;;;;;;;;:22;;;17850:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30490:4:::1;30476:11;;:18;;;;;;;;;;;;;;;;;;30518:3;30505:10;:16;;;;30546:3;30532:11;:17;;;;30578:3;30560:15;:21;;;;30424:197::o:0;34477:149::-;34537:7;34564:54;34605:12;:10;:12::i;:::-;34564:36;34577:22;34597:1;34577:15;34587:4;;;;;;;;;;;34577:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;34564:8;:12;;:36;;;;:::i;:::-;:40;;:54;;;;:::i;:::-;34557:61;;34477:149;;;:::o;24669:80::-;24721:5;21490:2;24730:16;;24669:80;:::o;34638:132::-;34681:7;34708:54;34746:15;21222:42;34746:9;:15::i;:::-;34708:33;34725:15;21149:42;34725:9;:15::i;:::-;34708:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;34701:61;;34638:132;:::o;25491:122::-;25546:4;25570:35;25578:7;25587:17;25570:7;:35::i;:::-;25563:42;;25491:122;;;:::o;26167:247::-;17868:12;:10;:12::i;:::-;17858:22;;:6;;;;;;;;;;:22;;;17850:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26271:1:::1;26253:14;:19;;26245:28;;;::::0;::::1;;26338:4;26319:14;26304:12;;:29;;;;:::i;:::-;26303:39;;;;:::i;:::-;26285:15;:57;;;;26358:30;26372:15;;26358:30;;;;;;:::i;:::-;;;;;;;;26167:247:::0;:::o;23418:30::-;;;;;;;;;;;;;:::o;25015:105::-;25081:7;25099:9;:18;25109:7;25099:18;;;;;;;;;;;;;;;;25092:25;;25015:105;;;:::o;17945:148::-;17868:12;:10;:12::i;:::-;17858:22;;:6;;;;;;;;;;:22;;;17850:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18052:1:::1;18015:40;;18036:6;::::0;::::1;;;;;;;;18015:40;;;;;;;;;;;;18083:1;18066:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;17945:148::o:0;26424:139::-;17868:12;:10;:12::i;:::-;17858:22;;:6;;;;;;;;;;:22;;;17850:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26498:12:::1;;26483;:27;;;;26543:12;;26525:15;:30;;;;26424:139::o:0;29806:338::-;29887:12;29930:1;29920:6;:11;29917:95;;29962:12;29956:29;;;29994:4;29956:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29947:53;;29917:95;30027:32;30038:12;30052:6;30027:32;;;;;;;:::i;:::-;;;;;;;;30083:12;30077:28;;;30106:21;;;;;;;;;;;30129:6;30077:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30070:66;;29806:338;;;;:::o;22246:61::-;;;;:::o;22181:58::-;;;;:::o;33560:547::-;17868:12;:10;:12::i;:::-;17858:22;;:6;;;;;;;;;;:22;;;17850:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33777:22:::1;33753:21;;:46;;;;;;;;;;;;;;;;;;33833:21;33810:20;;:44;;;;;;;;;;;;;;;;;;33882:15;33865:14;;:32;;;;;;;;;;;;;;;;;;33926:16;33908:15;;:34;;;;;;;;;;;;;;;;;;33974:19;33953:18;;:40;;;;;;;;;;;;;;;;;;34011:88;34025:20;;;;;;;;;;;34047:18;;;;;;;;;;;34067:15;;;;;;;;;;;34084:14;;;;;;;;;;;34011:88;;;;;;;;;:::i;:::-;;;;;;;;33560:547:::0;;;;;:::o;24931:78::-;24983:7;25000;:5;:7::i;:::-;24993:14;;24931:78;:::o;17731:79::-;17769:7;17796:6;;;;;;;;;;;17789:13;;17731:79;:::o;24755:84::-;24805:13;24829:7;;;;;;;;;;;;;;;;;24822:14;;24755:84;:::o;30631:171::-;17868:12;:10;:12::i;:::-;17858:22;;:6;;;;;;;;;;:22;;;17850:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30702:2:::1;30689:10;:15;;;;30729:2;30715:11;:16;;;;30760:2;30742:15;:20;;;;30631:171::o:0;23340:19::-;;;;;;;;;;;;;:::o;25621:156::-;25701:4;25725:44;25739:10;25751:9;25762:6;25725:13;:44::i;:::-;25718:51;;25621:156;;;;:::o;17351:21::-;;;;;;;;;;;;:::o;30152:257::-;17868:12;:10;:12::i;:::-;17858:22;;:6;;;;;;;;;;:22;;;17850:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30290:14:::1;30276:11;:28;;;;30328:13;30315:10;:26;;;;30370:15;30352;:33;;;;30152:257:::0;;;:::o;25126:133::-;25210:7;25228:11;:19;25240:6;25228:19;;;;;;;;;;;;;;;:28;25248:7;25228:28;;;;;;;;;;;;;;;;25221:35;;25126:133;;;;:::o;34334:135::-;34408:4;34456:5;34432:21;34444:8;34432:11;:21::i;:::-;:29;34425:36;;34334:135;;;;:::o;34115:211::-;17868:12;:10;:12::i;:::-;17858:22;;:6;;;;;;;;;;:22;;;17850:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34220:8:::1;34206:11;;:22;;;;;;;;;;;;;;;;;;34255:7;34239:13;:23;;;;34278:40;34291:13;;34306:11;;;;;;;;;;;34278:40;;;;;;;:::i;:::-;;;;;;;;34115:211:::0;;:::o;18101:244::-;17868:12;:10;:12::i;:::-;17858:22;;:6;;;;;;;;;;:22;;;17850:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18210:1:::1;18190:22;;:8;:22;;::::0;18182:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18300:8;18271:38;;18292:6;::::0;::::1;;;;;;;;18271:38;;;;;;;;;;;;18329:8;18320:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;18101:244:::0;:::o;29667:132::-;29723:21;;;;;;;;;;;29715:39;;:62;29755:21;29715:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29667:132::o;23270:24::-;;;;;;;;;;;;;:::o;20243:192::-;20329:7;20362:1;20357;:6;;20365:12;20349:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;20389:9;20405:1;20401;:5;;;;:::i;:::-;20389:17;;20426:1;20419:8;;;20243:192;;;;;:::o;26579:1238::-;26671:4;26691:6;;;;;;;;;;;26688:63;;;26707:41;26722:6;26730:9;26741:6;26707:14;:41::i;:::-;26700:48;;;;26688:63;26767:14;:22;26782:6;26767:22;;;;;;;;;;;;;;;;;;;;;;;;;26766:23;:53;;;;;26794:14;:25;26809:9;26794:25;;;;;;;;;;;;;;;;;;;;;;;;;26793:26;26766:53;26763:139;;;26843:11;;;;;;;;;;;26835:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;26763:139;26944:14;:22;26959:6;26944:22;;;;;;;;;;;;;;;;;;;;;;;;;26943:23;:53;;;;;26991:4;26970:26;;:9;:26;;;;26943:53;:84;;;;;21149:42;27001:26;;:9;:26;;;;26943:84;:105;;;;;27044:4;;;;;;;;;;;27031:17;;:9;:17;;;;26943:105;:137;;;;;27065:15;;;;;;;;;;;27052:28;;:9;:28;;;;26943:137;:174;;;;;27097:20;;;;;;;;;;;27084:33;;:9;:33;;;;26943:174;:207;;;;;27122:17;:28;27140:9;27122:28;;;;;;;;;;;;;;;;;;;;;;;;;27121:29;26943:207;26939:399;;;27166:18;27187:20;27197:9;27187;:20::i;:::-;27166:41;;27255:15;;27244:6;27231:10;:19;;;;:::i;:::-;27230:40;;27222:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;27151:187;26939:399;27350:28;27363:6;27371;27350:12;:28::i;:::-;27396:16;:14;:16::i;:::-;27393:35;;;27415:10;:8;:10::i;:::-;27393:35;27458:53;27480:6;27458:53;;;;;;;;;;;;;;;;;:9;:17;27468:6;27458:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;27438:9;:17;27448:6;27438:17;;;;;;;;;;;;;;;:73;;;;27524:22;27550:16;:24;27567:6;27550:24;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;27578:16;:27;27595:9;27578:27;;;;;;;;;;;;;;;;;;;;;;;;;27550:55;27549:103;;27618:34;27626:6;27634;27642:9;27618:7;:34::i;:::-;27549:103;;;27609:6;27549:103;27524:128;;27686:40;27711:14;27686:9;:20;27696:9;27686:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;27663:9;:20;27673:9;27663:20;;;;;;;;;;;;;;;:63;;;;27761:9;27744:43;;27753:6;27744:43;;;27772:14;27744:43;;;;;;:::i;:::-;;;;;;;;27805:4;27798:11;;;26579:1238;;;;;;:::o;17072:115::-;17125:15;17168:10;17153:26;;17072:115;:::o;19914:181::-;19972:7;19992:9;20008:1;20004;:5;;;;:::i;:::-;19992:17;;20033:1;20028;:6;;20020:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;20086:1;20079:8;;;19914:181;;;;:::o;32695:249::-;32748:180;32763:33;32792:3;32763:24;32776:10;;32763:8;;:12;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;32818:34;32848:3;32818:25;32831:11;;32818:8;;:12;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;32874:38;32908:3;32874:29;32887:15;;32874:8;;:12;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;32748:180;;;;;;;;:::i;:::-;;;;;;;;32695:249::o;20441:250::-;20499:7;20528:1;20523;:6;20519:47;;20553:1;20546:8;;;;20519:47;20578:9;20594:1;20590;:5;;;;:::i;:::-;20578:17;;20623:1;20618;20614;:5;;;;:::i;:::-;:10;20606:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;20682:1;20675:8;;;20441:250;;;;;:::o;20697:132::-;20755:7;20782:39;20786:1;20789;20782:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;20775:46;;20697:132;;;;:::o;20101:136::-;20159:7;20186:43;20190:1;20193;20186:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;20179:50;;20101:136;;;;:::o;27826:330::-;27919:4;27956:53;27978:6;27956:53;;;;;;;;;;;;;;;;;:9;:17;27966:6;27956:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;27936:9;:17;27946:6;27936:17;;;;;;;;;;;;;;;:73;;;;28043:32;28068:6;28043:9;:20;28053:9;28043:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;28020:9;:20;28030:9;28020:20;;;;;;;;;;;;;;;:55;;;;28108:9;28091:35;;28100:6;28091:35;;;28119:6;28091:35;;;;;;:::i;:::-;;;;;;;;28144:4;28137:11;;27826:330;;;;;:::o;28164:168::-;28261:12;;28251:6;:22;;:51;;;;28277:17;:25;28295:6;28277:25;;;;;;;;;;;;;;;;;;;;;;;;;28251:51;28243:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;28164:168;;:::o;29457:197::-;29506:4;29544;;;;;;;;;;;29530:18;;:10;:18;;;;:38;;;;;29562:6;;;;;;;;;;;29561:7;29530:38;:62;;;;;29581:11;;;;;;;;;;;29530:62;:116;;;;;29633:13;;29605:9;:24;29623:4;29605:24;;;;;;;;;;;;;;;;:41;;29530:116;29523:123;;29457:197;:::o;30825:1854::-;23567:4;23558:6;;:13;;;;;;;;;;;;;;;;;;30874:27:::1;30904:41;30915:8;;30925:19;;30904:10;:41::i;:::-;:60;;30952:12;;30904:60;;;30948:1;30904:60;30874:90;;30975:23;31001:59;31058:1;31001:52;31044:8;;31001:38;31019:19;31001:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;30975:85;;31071:20;31094:34;31112:15;31094:13;;:17;;:34;;;;:::i;:::-;31071:57;;31141:21;31179:1;31165:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31141:40;;31210:4;31192;31197:1;31192:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;31236:4;;;;;;;;;;;31226;31231:1;31226:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;31253:21;31277;31253:45;;31311:6;;;;;;;;;;;:57;;;31383:12;31410:1;31426:4;31453;31473:15;31311:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;31512:17;31532:40;31558:13;31532:21;:25;;:40;;;;:::i;:::-;31512:60;;31585:19;31607:40;31620:26;31644:1;31620:19;:23;;:26;;;;:::i;:::-;31607:8;;:12;;:40;;;;:::i;:::-;31585:62;;31668:26;31697:58;31753:1;31697:51;31736:11;31697:34;31711:19;31697:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;31668:87;;31766:26;31795:44;31827:11;31795:27;31809:12;;31795:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;31766:73;;31850:24;31877:42;31907:11;31877:25;31891:10;;31877:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;31850:69;;31930:20;31953:38;31979:11;31953:21;31967:6;;31953:9;:13;;:21;;;;:::i;:::-;:25;;:38;;;;:::i;:::-;31930:61;;32005:15;32033:20;;;;;;;;;;;32025:34;;32067:18;32025:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32004:86;;;32125:14;;;;;;;;;;;32117:28;;32153:12;32117:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32101:69;;;;;32205:18;;;;;;;;;;;32197:32;;32237:16;32197:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32181:77;;;;;32292:5;32279:18;;32331:1;32313:15;:19;32310:362;;;32348:6;;;;;;;;;;;:22;;;32378:18;32424:4;32448:15;32482:1;32502::::0;32522:21:::1;;;;;;;;;;;32562:15;32348:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;32612:48;32624:18;32644:15;32612:48;;;;;;;:::i;:::-;;;;;;;;32310:362;30863:1816;;;;;;;;;;;;23585:5:::0;23576:6;;:14;;;;;;;;;;;;;;;;;;30825:1854::o;28467:982::-;28553:7;28583:15;28601;;28583:33;;28643:4;;;;;;;;;;;28630:17;;:9;:17;;;28627:142;;28674:11;;28664:21;;28627:142;;;28716:4;;;;;;;;;;;28706:14;;:6;:14;;;28703:66;;28747:10;;28737:20;;28703:66;28627:142;28781:17;28801:59;28856:3;28839:14;;:20;;;;:::i;:::-;28801:33;28826:7;28801:20;28812:8;;28801:6;:10;;:20;;;;:::i;:::-;:24;;:33;;;;:::i;:::-;:37;;:59;;;;:::i;:::-;28781:79;;28871:18;28892:36;28919:8;;28892:22;28906:7;;28892:9;:13;;:22;;;;:::i;:::-;:26;;:36;;;;:::i;:::-;28871:57;;28939:22;28964:25;28978:10;28964:9;:13;;:25;;;;:::i;:::-;28939:50;;29027:44;29056:14;29027:9;:24;29045:4;29027:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;29000:9;:24;29018:4;29000:24;;;;;;;;;;;;;;;:71;;;;29111:42;29142:10;29111:9;:26;29121:15;;;;;;;;;;;29111:26;;;;;;;;;;;;;;;;:30;;:42;;;;:::i;:::-;29082:9;:26;29092:15;;;;;;;;;;;29082:26;;;;;;;;;;;;;;;:71;;;;29194:4;29169:47;;29178:6;29169:47;;;29201:14;29169:47;;;;;;:::i;:::-;;;;;;;;29263:1;29250:10;:14;29247:154;;;29295:28;29312:10;29295:12;;:16;;:28;;;;:::i;:::-;29280:12;:43;;;;21222:42;29343:34;;29352:6;29343:34;;;29366:10;29343:34;;;;;;:::i;:::-;;;;;;;;29247:154;29420:21;29431:9;29420:6;:10;;:21;;;;:::i;:::-;29413:28;;;;;;28467:982;;;;;:::o;20835:189::-;20921:7;20953:1;20949;:5;20956:12;20941:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;20980:9;20996:1;20992;:5;;;;:::i;:::-;20980:17;;21015:1;21008:8;;;20835:189;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1784:90::-;1818:7;1861:5;1854:13;1847:21;1836:32;;1784:90;;;:::o;1880:109::-;1961:21;1976:5;1961:21;:::i;:::-;1956:3;1949:34;1880:109;;:::o;1995:210::-;2082:4;2120:2;2109:9;2105:18;2097:26;;2133:65;2195:1;2184:9;2180:17;2171:6;2133:65;:::i;:::-;1995:210;;;;:::o;2292:117::-;2401:1;2398;2391:12;2538:126;2575:7;2615:42;2608:5;2604:54;2593:65;;2538:126;;;:::o;2670:96::-;2707:7;2736:24;2754:5;2736:24;:::i;:::-;2725:35;;2670:96;;;:::o;2772:122::-;2845:24;2863:5;2845:24;:::i;:::-;2838:5;2835:35;2825:63;;2884:1;2881;2874:12;2825:63;2772:122;:::o;2900:139::-;2946:5;2984:6;2971:20;2962:29;;3000:33;3027:5;3000:33;:::i;:::-;2900:139;;;;:::o;3045:122::-;3118:24;3136:5;3118:24;:::i;:::-;3111:5;3108:35;3098:63;;3157:1;3154;3147:12;3098:63;3045:122;:::o;3173:139::-;3219:5;3257:6;3244:20;3235:29;;3273:33;3300:5;3273:33;:::i;:::-;3173:139;;;;:::o;3318:474::-;3386:6;3394;3443:2;3431:9;3422:7;3418:23;3414:32;3411:119;;;3449:79;;:::i;:::-;3411:119;3569:1;3594:53;3639:7;3630:6;3619:9;3615:22;3594:53;:::i;:::-;3584:63;;3540:117;3696:2;3722:53;3767:7;3758:6;3747:9;3743:22;3722:53;:::i;:::-;3712:63;;3667:118;3318:474;;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:1057::-;4527:6;4535;4543;4551;4559;4567;4616:3;4604:9;4595:7;4591:23;4587:33;4584:120;;;4623:79;;:::i;:::-;4584:120;4743:1;4768:53;4813:7;4804:6;4793:9;4789:22;4768:53;:::i;:::-;4758:63;;4714:117;4870:2;4896:53;4941:7;4932:6;4921:9;4917:22;4896:53;:::i;:::-;4886:63;;4841:118;4998:2;5024:53;5069:7;5060:6;5049:9;5045:22;5024:53;:::i;:::-;5014:63;;4969:118;5126:2;5152:53;5197:7;5188:6;5177:9;5173:22;5152:53;:::i;:::-;5142:63;;5097:118;5254:3;5281:53;5326:7;5317:6;5306:9;5302:22;5281:53;:::i;:::-;5271:63;;5225:119;5383:3;5410:53;5455:7;5446:6;5435:9;5431:22;5410:53;:::i;:::-;5400:63;;5354:119;4423:1057;;;;;;;;:::o;5486:329::-;5545:6;5594:2;5582:9;5573:7;5569:23;5565:32;5562:119;;;5600:79;;:::i;:::-;5562:119;5720:1;5745:53;5790:7;5781:6;5770:9;5766:22;5745:53;:::i;:::-;5735:63;;5691:117;5486:329;;;;:::o;5821:86::-;5856:7;5896:4;5889:5;5885:16;5874:27;;5821:86;;;:::o;5913:112::-;5996:22;6012:5;5996:22;:::i;:::-;5991:3;5984:35;5913:112;;:::o;6031:214::-;6120:4;6158:2;6147:9;6143:18;6135:26;;6171:67;6235:1;6224:9;6220:17;6211:6;6171:67;:::i;:::-;6031:214;;;;:::o;6251:329::-;6310:6;6359:2;6347:9;6338:7;6334:23;6330:32;6327:119;;;6365:79;;:::i;:::-;6327:119;6485:1;6510:53;6555:7;6546:6;6535:9;6531:22;6510:53;:::i;:::-;6500:63;;6456:117;6251:329;;;;:::o;6586:911::-;6681:6;6689;6697;6705;6713;6762:3;6750:9;6741:7;6737:23;6733:33;6730:120;;;6769:79;;:::i;:::-;6730:120;6889:1;6914:53;6959:7;6950:6;6939:9;6935:22;6914:53;:::i;:::-;6904:63;;6860:117;7016:2;7042:53;7087:7;7078:6;7067:9;7063:22;7042:53;:::i;:::-;7032:63;;6987:118;7144:2;7170:53;7215:7;7206:6;7195:9;7191:22;7170:53;:::i;:::-;7160:63;;7115:118;7272:2;7298:53;7343:7;7334:6;7323:9;7319:22;7298:53;:::i;:::-;7288:63;;7243:118;7400:3;7427:53;7472:7;7463:6;7452:9;7448:22;7427:53;:::i;:::-;7417:63;;7371:119;6586:911;;;;;;;;:::o;7503:118::-;7590:24;7608:5;7590:24;:::i;:::-;7585:3;7578:37;7503:118;;:::o;7627:222::-;7720:4;7758:2;7747:9;7743:18;7735:26;;7771:71;7839:1;7828:9;7824:17;7815:6;7771:71;:::i;:::-;7627:222;;;;:::o;7855:619::-;7932:6;7940;7948;7997:2;7985:9;7976:7;7972:23;7968:32;7965:119;;;8003:79;;:::i;:::-;7965:119;8123:1;8148:53;8193:7;8184:6;8173:9;8169:22;8148:53;:::i;:::-;8138:63;;8094:117;8250:2;8276:53;8321:7;8312:6;8301:9;8297:22;8276:53;:::i;:::-;8266:63;;8221:118;8378:2;8404:53;8449:7;8440:6;8429:9;8425:22;8404:53;:::i;:::-;8394:63;;8349:118;7855:619;;;;;:::o;8480:474::-;8548:6;8556;8605:2;8593:9;8584:7;8580:23;8576:32;8573:119;;;8611:79;;:::i;:::-;8573:119;8731:1;8756:53;8801:7;8792:6;8781:9;8777:22;8756:53;:::i;:::-;8746:63;;8702:117;8858:2;8884:53;8929:7;8920:6;8909:9;8905:22;8884:53;:::i;:::-;8874:63;;8829:118;8480:474;;;;;:::o;8960:::-;9028:6;9036;9085:2;9073:9;9064:7;9060:23;9056:32;9053:119;;;9091:79;;:::i;:::-;9053:119;9211:1;9236:53;9281:7;9272:6;9261:9;9257:22;9236:53;:::i;:::-;9226:63;;9182:117;9338:2;9364:53;9409:7;9400:6;9389:9;9385:22;9364:53;:::i;:::-;9354:63;;9309:118;8960:474;;;;;:::o;9440:116::-;9510:21;9525:5;9510:21;:::i;:::-;9503:5;9500:32;9490:60;;9546:1;9543;9536:12;9490:60;9440:116;:::o;9562:133::-;9605:5;9643:6;9630:20;9621:29;;9659:30;9683:5;9659:30;:::i;:::-;9562:133;;;;:::o;9701:468::-;9766:6;9774;9823:2;9811:9;9802:7;9798:23;9794:32;9791:119;;;9829:79;;:::i;:::-;9791:119;9949:1;9974:50;10016:7;10007:6;9996:9;9992:22;9974:50;:::i;:::-;9964:60;;9920:114;10073:2;10099:53;10144:7;10135:6;10124:9;10120:22;10099:53;:::i;:::-;10089:63;;10044:118;9701:468;;;;;:::o;10175:60::-;10203:3;10224:5;10217:12;;10175:60;;;:::o;10241:142::-;10291:9;10324:53;10342:34;10351:24;10369:5;10351:24;:::i;:::-;10342:34;:::i;:::-;10324:53;:::i;:::-;10311:66;;10241:142;;;:::o;10389:126::-;10439:9;10472:37;10503:5;10472:37;:::i;:::-;10459:50;;10389:126;;;:::o;10521:144::-;10589:9;10622:37;10653:5;10622:37;:::i;:::-;10609:50;;10521:144;;;:::o;10671:167::-;10776:55;10825:5;10776:55;:::i;:::-;10771:3;10764:68;10671:167;;:::o;10844:258::-;10955:4;10993:2;10982:9;10978:18;10970:26;;11006:89;11092:1;11081:9;11077:17;11068:6;11006:89;:::i;:::-;10844:258;;;;:::o;11108:182::-;11248:34;11244:1;11236:6;11232:14;11225:58;11108:182;:::o;11296:366::-;11438:3;11459:67;11523:2;11518:3;11459:67;:::i;:::-;11452:74;;11535:93;11624:3;11535:93;:::i;:::-;11653:2;11648:3;11644:12;11637:19;;11296:366;;;:::o;11668:419::-;11834:4;11872:2;11861:9;11857:18;11849:26;;11921:9;11915:4;11911:20;11907:1;11896:9;11892:17;11885:47;11949:131;12075:4;11949:131;:::i;:::-;11941:139;;11668:419;;;:::o;12093:180::-;12141:77;12138:1;12131:88;12238:4;12235:1;12228:15;12262:4;12259:1;12252:15;12279:180;12327:77;12324:1;12317:88;12424:4;12421:1;12414:15;12448:4;12445:1;12438:15;12465:185;12505:1;12522:20;12540:1;12522:20;:::i;:::-;12517:25;;12556:20;12574:1;12556:20;:::i;:::-;12551:25;;12595:1;12585:35;;12600:18;;:::i;:::-;12585:35;12642:1;12639;12635:9;12630:14;;12465:185;;;;:::o;12656:179::-;12796:31;12792:1;12784:6;12780:14;12773:55;12656:179;:::o;12841:366::-;12983:3;13004:67;13068:2;13063:3;13004:67;:::i;:::-;12997:74;;13080:93;13169:3;13080:93;:::i;:::-;13198:2;13193:3;13189:12;13182:19;;12841:366;;;:::o;13213:419::-;13379:4;13417:2;13406:9;13402:18;13394:26;;13466:9;13460:4;13456:20;13452:1;13441:9;13437:17;13430:47;13494:131;13620:4;13494:131;:::i;:::-;13486:139;;13213:419;;;:::o;13638:410::-;13678:7;13701:20;13719:1;13701:20;:::i;:::-;13696:25;;13735:20;13753:1;13735:20;:::i;:::-;13730:25;;13790:1;13787;13783:9;13812:30;13830:11;13812:30;:::i;:::-;13801:41;;13991:1;13982:7;13978:15;13975:1;13972:22;13952:1;13945:9;13925:83;13902:139;;14021:18;;:::i;:::-;13902:139;13686:362;13638:410;;;;:::o;14054:143::-;14111:5;14142:6;14136:13;14127:22;;14158:33;14185:5;14158:33;:::i;:::-;14054:143;;;;:::o;14203:351::-;14273:6;14322:2;14310:9;14301:7;14297:23;14293:32;14290:119;;;14328:79;;:::i;:::-;14290:119;14448:1;14473:64;14529:7;14520:6;14509:9;14505:22;14473:64;:::i;:::-;14463:74;;14419:128;14203:351;;;;:::o;14560:332::-;14681:4;14719:2;14708:9;14704:18;14696:26;;14732:71;14800:1;14789:9;14785:17;14776:6;14732:71;:::i;:::-;14813:72;14881:2;14870:9;14866:18;14857:6;14813:72;:::i;:::-;14560:332;;;;;:::o;14898:137::-;14952:5;14983:6;14977:13;14968:22;;14999:30;15023:5;14999:30;:::i;:::-;14898:137;;;;:::o;15041:345::-;15108:6;15157:2;15145:9;15136:7;15132:23;15128:32;15125:119;;;15163:79;;:::i;:::-;15125:119;15283:1;15308:61;15361:7;15352:6;15341:9;15337:22;15308:61;:::i;:::-;15298:71;;15254:125;15041:345;;;;:::o;15392:553::-;15569:4;15607:3;15596:9;15592:19;15584:27;;15621:71;15689:1;15678:9;15674:17;15665:6;15621:71;:::i;:::-;15702:72;15770:2;15759:9;15755:18;15746:6;15702:72;:::i;:::-;15784;15852:2;15841:9;15837:18;15828:6;15784:72;:::i;:::-;15866;15934:2;15923:9;15919:18;15910:6;15866:72;:::i;:::-;15392:553;;;;;;;:::o;15951:320::-;16066:4;16104:2;16093:9;16089:18;16081:26;;16117:71;16185:1;16174:9;16170:17;16161:6;16117:71;:::i;:::-;16198:66;16260:2;16249:9;16245:18;16236:6;16198:66;:::i;:::-;15951:320;;;;;:::o;16277:225::-;16417:34;16413:1;16405:6;16401:14;16394:58;16486:8;16481:2;16473:6;16469:15;16462:33;16277:225;:::o;16508:366::-;16650:3;16671:67;16735:2;16730:3;16671:67;:::i;:::-;16664:74;;16747:93;16836:3;16747:93;:::i;:::-;16865:2;16860:3;16856:12;16849:19;;16508:366;;;:::o;16880:419::-;17046:4;17084:2;17073:9;17069:18;17061:26;;17133:9;17127:4;17123:20;17119:1;17108:9;17104:17;17097:47;17161:131;17287:4;17161:131;:::i;:::-;17153:139;;16880:419;;;:::o;17305:194::-;17345:4;17365:20;17383:1;17365:20;:::i;:::-;17360:25;;17399:20;17417:1;17399:20;:::i;:::-;17394:25;;17443:1;17440;17436:9;17428:17;;17467:1;17461:4;17458:11;17455:37;;;17472:18;;:::i;:::-;17455:37;17305:194;;;;:::o;17505:170::-;17645:22;17641:1;17633:6;17629:14;17622:46;17505:170;:::o;17681:366::-;17823:3;17844:67;17908:2;17903:3;17844:67;:::i;:::-;17837:74;;17920:93;18009:3;17920:93;:::i;:::-;18038:2;18033:3;18029:12;18022:19;;17681:366;;;:::o;18053:419::-;18219:4;18257:2;18246:9;18242:18;18234:26;;18306:9;18300:4;18296:20;18292:1;18281:9;18277:17;18270:47;18334:131;18460:4;18334:131;:::i;:::-;18326:139;;18053:419;;;:::o;18478:191::-;18518:3;18537:20;18555:1;18537:20;:::i;:::-;18532:25;;18571:20;18589:1;18571:20;:::i;:::-;18566:25;;18614:1;18611;18607:9;18600:16;;18635:3;18632:1;18629:10;18626:36;;;18642:18;;:::i;:::-;18626:36;18478:191;;;;:::o;18675:249::-;18815:34;18811:1;18803:6;18799:14;18792:58;18884:32;18879:2;18871:6;18867:15;18860:57;18675:249;:::o;18930:366::-;19072:3;19093:67;19157:2;19152:3;19093:67;:::i;:::-;19086:74;;19169:93;19258:3;19169:93;:::i;:::-;19287:2;19282:3;19278:12;19271:19;;18930:366;;;:::o;19302:419::-;19468:4;19506:2;19495:9;19491:18;19483:26;;19555:9;19549:4;19545:20;19541:1;19530:9;19526:17;19519:47;19583:131;19709:4;19583:131;:::i;:::-;19575:139;;19302:419;;;:::o;19727:177::-;19867:29;19863:1;19855:6;19851:14;19844:53;19727:177;:::o;19910:366::-;20052:3;20073:67;20137:2;20132:3;20073:67;:::i;:::-;20066:74;;20149:93;20238:3;20149:93;:::i;:::-;20267:2;20262:3;20258:12;20251:19;;19910:366;;;:::o;20282:419::-;20448:4;20486:2;20475:9;20471:18;20463:26;;20535:9;20529:4;20525:20;20521:1;20510:9;20506:17;20499:47;20563:131;20689:4;20563:131;:::i;:::-;20555:139;;20282:419;;;:::o;20707:418::-;20844:4;20882:2;20871:9;20867:18;20859:26;;20895:67;20959:1;20948:9;20944:17;20935:6;20895:67;:::i;:::-;20972:68;21036:2;21025:9;21021:18;21012:6;20972:68;:::i;:::-;21050;21114:2;21103:9;21099:18;21090:6;21050:68;:::i;:::-;20707:418;;;;;;:::o;21131:220::-;21271:34;21267:1;21259:6;21255:14;21248:58;21340:3;21335:2;21327:6;21323:15;21316:28;21131:220;:::o;21357:366::-;21499:3;21520:67;21584:2;21579:3;21520:67;:::i;:::-;21513:74;;21596:93;21685:3;21596:93;:::i;:::-;21714:2;21709:3;21705:12;21698:19;;21357:366;;;:::o;21729:419::-;21895:4;21933:2;21922:9;21918:18;21910:26;;21982:9;21976:4;21972:20;21968:1;21957:9;21953:17;21946:47;22010:131;22136:4;22010:131;:::i;:::-;22002:139;;21729:419;;;:::o;22154:167::-;22294:19;22290:1;22282:6;22278:14;22271:43;22154:167;:::o;22327:366::-;22469:3;22490:67;22554:2;22549:3;22490:67;:::i;:::-;22483:74;;22566:93;22655:3;22566:93;:::i;:::-;22684:2;22679:3;22675:12;22668:19;;22327:366;;;:::o;22699:419::-;22865:4;22903:2;22892:9;22888:18;22880:26;;22952:9;22946:4;22942:20;22938:1;22927:9;22923:17;22916:47;22980:131;23106:4;22980:131;:::i;:::-;22972:139;;22699:419;;;:::o;23124:180::-;23172:77;23169:1;23162:88;23269:4;23266:1;23259:15;23293:4;23290:1;23283:15;23310:180;23358:77;23355:1;23348:88;23455:4;23452:1;23445:15;23479:4;23476:1;23469:15;23496:85;23541:7;23570:5;23559:16;;23496:85;;;:::o;23587:158::-;23645:9;23678:61;23696:42;23705:32;23731:5;23705:32;:::i;:::-;23696:42;:::i;:::-;23678:61;:::i;:::-;23665:74;;23587:158;;;:::o;23751:147::-;23846:45;23885:5;23846:45;:::i;:::-;23841:3;23834:58;23751:147;;:::o;23904:114::-;23971:6;24005:5;23999:12;23989:22;;23904:114;;;:::o;24024:184::-;24123:11;24157:6;24152:3;24145:19;24197:4;24192:3;24188:14;24173:29;;24024:184;;;;:::o;24214:132::-;24281:4;24304:3;24296:11;;24334:4;24329:3;24325:14;24317:22;;24214:132;;;:::o;24352:108::-;24429:24;24447:5;24429:24;:::i;:::-;24424:3;24417:37;24352:108;;:::o;24466:179::-;24535:10;24556:46;24598:3;24590:6;24556:46;:::i;:::-;24634:4;24629:3;24625:14;24611:28;;24466:179;;;;:::o;24651:113::-;24721:4;24753;24748:3;24744:14;24736:22;;24651:113;;;:::o;24800:732::-;24919:3;24948:54;24996:5;24948:54;:::i;:::-;25018:86;25097:6;25092:3;25018:86;:::i;:::-;25011:93;;25128:56;25178:5;25128:56;:::i;:::-;25207:7;25238:1;25223:284;25248:6;25245:1;25242:13;25223:284;;;25324:6;25318:13;25351:63;25410:3;25395:13;25351:63;:::i;:::-;25344:70;;25437:60;25490:6;25437:60;:::i;:::-;25427:70;;25283:224;25270:1;25267;25263:9;25258:14;;25223:284;;;25227:14;25523:3;25516:10;;24924:608;;;24800:732;;;;:::o;25538:831::-;25801:4;25839:3;25828:9;25824:19;25816:27;;25853:71;25921:1;25910:9;25906:17;25897:6;25853:71;:::i;:::-;25934:80;26010:2;25999:9;25995:18;25986:6;25934:80;:::i;:::-;26061:9;26055:4;26051:20;26046:2;26035:9;26031:18;26024:48;26089:108;26192:4;26183:6;26089:108;:::i;:::-;26081:116;;26207:72;26275:2;26264:9;26260:18;26251:6;26207:72;:::i;:::-;26289:73;26357:3;26346:9;26342:19;26333:6;26289:73;:::i;:::-;25538:831;;;;;;;;:::o;26375:147::-;26476:11;26513:3;26498:18;;26375:147;;;;:::o;26528:114::-;;:::o;26648:398::-;26807:3;26828:83;26909:1;26904:3;26828:83;:::i;:::-;26821:90;;26920:93;27009:3;26920:93;:::i;:::-;27038:1;27033:3;27029:11;27022:18;;26648:398;;;:::o;27052:379::-;27236:3;27258:147;27401:3;27258:147;:::i;:::-;27251:154;;27422:3;27415:10;;27052:379;;;:::o;27437:807::-;27686:4;27724:3;27713:9;27709:19;27701:27;;27738:71;27806:1;27795:9;27791:17;27782:6;27738:71;:::i;:::-;27819:72;27887:2;27876:9;27872:18;27863:6;27819:72;:::i;:::-;27901:80;27977:2;27966:9;27962:18;27953:6;27901:80;:::i;:::-;27991;28067:2;28056:9;28052:18;28043:6;27991:80;:::i;:::-;28081:73;28149:3;28138:9;28134:19;28125:6;28081:73;:::i;:::-;28164;28232:3;28221:9;28217:19;28208:6;28164:73;:::i;:::-;27437:807;;;;;;;;;:::o;28250:663::-;28338:6;28346;28354;28403:2;28391:9;28382:7;28378:23;28374:32;28371:119;;;28409:79;;:::i;:::-;28371:119;28529:1;28554:64;28610:7;28601:6;28590:9;28586:22;28554:64;:::i;:::-;28544:74;;28500:128;28667:2;28693:64;28749:7;28740:6;28729:9;28725:22;28693:64;:::i;:::-;28683:74;;28638:129;28806:2;28832:64;28888:7;28879:6;28868:9;28864:22;28832:64;:::i;:::-;28822:74;;28777:129;28250:663;;;;;:::o;28919:332::-;29040:4;29078:2;29067:9;29063:18;29055:26;;29091:71;29159:1;29148:9;29144:17;29135:6;29091:71;:::i;:::-;29172:72;29240:2;29229:9;29225:18;29216:6;29172:72;:::i;:::-;28919:332;;;;;:::o

Swarm Source

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