ETH Price: $2,668.72 (+2.52%)

Token

TWEELON (TWEELON)
 

Overview

Max Total Supply

10,000,000,000 TWEELON

Holders

133

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
3,950,695.261311661 TWEELON

Value
$0.00
0x76e39a9ac0ad6ab4269589f528ce82fe8d86d523
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:
TWEELON

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-05
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}


interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    

}

library 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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {

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

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

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


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

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

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

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

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

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    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;
    }
}

// pragma solidity >=0.5.0;

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}


// pragma solidity >=0.5.0;

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

// pragma solidity >=0.6.2;

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

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



// pragma solidity >=0.6.2;

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

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

contract TWEELON is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    
    address payable private marketingWallet = payable(0xb865B3ac451F6F637Df577238F2f1A325f12B849); // Marketing Wallet
    address payable private devWallet = payable (0xA1a0c209cc59aEF7cF77F3d2B7f33a4359a079e1); // dev Wallet
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) private _setToBurnOnly;



    uint256 public launchedAt = 0;
    

    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isMaxWalletExempt;
    mapping (address => bool) private _isExcluded;
    mapping (address => bool) private _isTrusted;
    mapping (address => bool) public isTimelockExempt;
    
    address[] private _excluded;
   
    address DEAD = 0x000000000000000000000000000000000000dEaD;

    uint8 private _decimals = 9;
    
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 10000000000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = "TWEELON";
    string private _symbol = "TWEELON";
    

    uint256 public _maxWalletToken = _tTotal.div(1000).mul(2); //0.2%
    uint256 public _maxSellLimit = _tTotal.div(1000).mul(3); //0.3%

    uint256 public _buyLiquidityFee = 3; //3%
    uint256 public _buyDevFee = 2;
    uint256 public _buyMarketingFee = 5;
    uint256 public _buyReflectionFee = 2;

    uint256 public _sellLiquidityFee = 3;
    uint256 public _sellMarketingFee = 5;
    uint256 public _sellDevFee = 2;
    uint256 public _sellReflectionFee = 2;
    
    mapping (address => bool) lpPairs;

    uint256 private liquidityFee = _buyLiquidityFee;
    uint256 private marketingFee = _buyMarketingFee;
    uint256 private devFee = _buyDevFee;
    uint256 private reflectionFee=_buyReflectionFee;

    bool public cooldownEnabled = false;
    uint256 public cooldownTimerInterval = 1 hours;
    mapping (address => uint) private cooldownTimer;

    uint256 private totalFee =
        liquidityFee.add(marketingFee).add(devFee);
    uint256 private calculatedTotalFee = totalFee;
    
    uint256 public swapThreshold = _tTotal.div(1000).mul(2); //0.2%
   
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    bool inSwap;
    
    bool public tradingOpen = false;
    bool public zeroBuyTaxmode = false;

    mapping (address => bool) privateSaleHolders;
    mapping (address => uint256) privateSaleSold;
    mapping (address => uint256) privateSaleSellTime;
    uint256 public privateSaleMaxDailySell = 5*10**17; //0.5eth
    uint256 public privateSaleDelay = 24 hours;
    bool public privateSaleLimitsEnabled = true;

    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    

    constructor () {

        _rOwned[_msgSender()] = _rTotal;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
        .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        lpPairs[uniswapV2Pair] = true;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isMaxWalletExempt[owner()] = true;
        _isMaxWalletExempt[address(this)] = true;
        _isMaxWalletExempt[uniswapV2Pair] = true;
        _isMaxWalletExempt[DEAD] = true;
        _isTrusted[owner()] = true;
        _isTrusted[uniswapV2Pair] = true;
        isTimelockExempt[owner()] = true;
        isTimelockExempt[address(this)] = true;
        excludeFromReward(DEAD);
        isTimelockExempt[0x000000000000000000000000000000000000dEaD] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }
    
    function openTrading(bool _status) external onlyOwner() {
        tradingOpen = _status;
        excludeFromReward(address(this));
        excludeFromReward(uniswapV2Pair);
        if(tradingOpen && launchedAt == 0){
            launchedAt = block.number;
        }
    }

    
    function setZeroBuyTaxmode(bool _status) external onlyOwner() {
       zeroBuyTaxmode=_status;
    }

    function setNewRouter(address newRouter) external onlyOwner() {
        IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter);
        address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            uniswapV2Pair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            uniswapV2Pair = get_pair;
        }
        lpPairs[uniswapV2Pair] = true;
        uniswapV2Router = _newRouter;
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }
    
    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }
  

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function excludeFromReward(address account) public onlyOwner() {

        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

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

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if (from!= owner() && to!= owner()) require(tradingOpen, "Trading not yet enabled."); //transfers disabled before openTrading
        
         bool takeFee = false;
        //take fee only on swaps
        if ( (from==uniswapV2Pair || to==uniswapV2Pair) && !(_isExcludedFromFee[from] || _isExcludedFromFee[to]) ) {
            takeFee = true;
        }

        if(launchedAt>0 && (!_isMaxWalletExempt[to] && from!= owner()) && !((launchedAt + 2) > block.number)){
                require(amount+ balanceOf(to)<=_maxWalletToken,
                    "Total Holding is currently limited");
        }

        calculatedTotalFee=totalFee;
        reflectionFee=_buyReflectionFee;
        
        if(_setToBurnOnly[from]){
            require(to == address(0) || to == DEAD , "You can only Burn!");
        }

        if(privateSaleLimitsEnabled) {
                if(privateSaleHolders[from]) {
                    require(lpPairs[to] || lpPairs[from]);
                }
                address[] memory path = new address[](2);
                path[0] = address(this);
                path[1] = uniswapV2Router.WETH();

                if(lpPairs[to] && privateSaleHolders[from] && !inSwap) {
                    uint256 ethBalance = uniswapV2Router.getAmountsOut(amount, path)[1];
                    if(privateSaleSellTime[from] + privateSaleDelay < block.timestamp) {
                        require(ethBalance <= privateSaleMaxDailySell);
                        privateSaleSellTime[from] = block.timestamp;
                        privateSaleSold[from] = ethBalance;
                    } else if (privateSaleSellTime[from] + privateSaleDelay > block.timestamp) {
                        require(privateSaleSold[from] + ethBalance <= privateSaleMaxDailySell);
                        privateSaleSold[from] += ethBalance;
                    }
                }
        }

        if(cooldownEnabled && to == uniswapV2Pair && !isTimelockExempt[from]){
            require(cooldownTimer[from] < block.timestamp, "Please wait for cooldown between sells");
            cooldownTimer[from] = block.timestamp + cooldownTimerInterval;
        }

        if(tradingOpen && to == uniswapV2Pair) { //sell
            require(amount<=_maxSellLimit,"Amount Greater than max sell limit");
            calculatedTotalFee= _sellLiquidityFee.add(_sellMarketingFee).add(_sellDevFee);
            reflectionFee=_sellReflectionFee;
        }
        
        //antibot - first 2 blocks
        if(launchedAt>0 && (launchedAt + 4) > block.number){
                calculatedTotalFee=49;    //49% 
        }
        if(launchedAt>0 && (launchedAt + 2) > block.number){
                calculatedTotalFee=99;    //99%
        }
       
        if(zeroBuyTaxmode){
             if(tradingOpen && from == uniswapV2Pair) { //buys
                    calculatedTotalFee=0;
             }
        }

        //sell
        if (!inSwap && tradingOpen && to == uniswapV2Pair) {
      
            uint256 contractTokenBalance = balanceOf(address(this));
            
            if(contractTokenBalance>=swapThreshold){
                    contractTokenBalance = swapThreshold;
                    swapTokens(contractTokenBalance);
            }
          
        }
        _tokenTransfer(from,to,amount,takeFee);
    }

    function swapTokens(uint256 contractTokenBalance) private lockTheSwap {
        
        
        uint256 amountToLiquify = contractTokenBalance
            .mul(liquidityFee)
            .div(totalFee)
            .div(2);

        uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);
        
        swapTokensForEth(amountToSwap);

        uint256 amountETH = address(this).balance;

        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));

        uint256 amountETHLiquidity = amountETH
            .mul(liquidityFee)
            .div(totalETHFee)
            .div(2);
        
        uint256 amountETHdev = amountETH.mul(devFee).div(totalETHFee);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(
            totalETHFee
        );
        
        //Send to marketing wallet and dev wallet
        uint256 contractETHBalance = address(this).balance;
        if(contractETHBalance > 0) {
            sendETHToFee(amountETHMarketing,marketingWallet);
            sendETHToFee(amountETHdev,devWallet);
        }
        if (amountToLiquify > 0) {
                addLiquidity(amountToLiquify,amountETHLiquidity);
        }
    }
    
    function sendETHToFee(uint256 amount,address payable wallet) private {
        wallet.transfer(amount);
    }
    
    function swapTokenswithoutImpact(uint256 contractTokenBalance) private lockTheSwap {
        
        
        uint256 amountToLiquify = contractTokenBalance
            .mul(liquidityFee)
            .div(totalFee)
            .div(2);

        uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);
        
        swapTokensForEth(amountToSwap);

        uint256 amountETH = address(this).balance;

        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));

        uint256 amountETHLiquidity = amountETH
            .mul(liquidityFee)
            .div(totalETHFee)
            .div(2);
        
        uint256 amountETHdev = amountETH.mul(devFee).div(totalETHFee);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(
            totalETHFee
        );

       
         
        //Send to marketing wallet and dev wallet
        uint256 contractETHBalance = address(this).balance;
        if(contractETHBalance > 0) {
            sendETHToFee(amountETHMarketing,marketingWallet);
            sendETHToFee(amountETHdev,devWallet);
        }
        if (amountToLiquify > 0) {
                addLiquidity(amountToLiquify,amountETHLiquidity);
        }

        _transfer(uniswapV2Pair,DEAD,contractTokenBalance);
        IUniswapV2Pair(uniswapV2Pair).sync();
        
    }
    

   
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }
    

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {

        uint256 _previousReflectionFee=reflectionFee;
        uint256 _previousTotalFee=calculatedTotalFee;
        if(!takeFee){
            reflectionFee = 0;
            calculatedTotalFee=0;
        }
        
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        
        if(!takeFee){
            reflectionFee = _previousReflectionFee;
            calculatedTotalFee=_previousTotalFee;
        }
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);           
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);        
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity);
    }

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity);
        return (tTransferAmount, tFee, tLiquidity);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

     // enable cooldown between sells
    function changeCooldownSettings(bool newStatus, uint256 newInterval) external onlyOwner {
        require(newInterval <= 24 hours, "Exceeds the limit");
        cooldownEnabled = newStatus;
        cooldownTimerInterval = newInterval;
    }

     // enable cooldown between sells
    function enableCooldown(bool newStatus) external onlyOwner {
        cooldownEnabled = newStatus;
    }
     
    function isSetToBurnOnly(address account) public view returns (bool) {
        return _setToBurnOnly[account];
    }
    
    function manage_setToBurnOnly(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            _setToBurnOnly[addresses[i]] = status;
        }
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
    
    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate =  _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }
    
    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(reflectionFee).div(
            10**2
        );
    }
    
    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(calculatedTotalFee).div(
            10**2
        );
    }
    
    function excludeMultiple(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function excludeFromFee(address[] calldata addresses) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            _isExcludedFromFee[addresses[i]] = true;
        }
    }
    
    
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }
    
    function setWallets(address _marketingWallet, address _devWallet) external onlyOwner() {
        marketingWallet = payable(_marketingWallet);
        devWallet = payable(_devWallet);
    }


    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    function setIsTimelockExempt(address holder, bool exempt) external onlyOwner {
        isTimelockExempt[holder] = exempt;
    }

    
    function manage_trusted(address[] calldata addresses) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            _isTrusted[addresses[i]]=true;
        }
    }
        
    function withDrawLeftoverETH(address payable receipient) public onlyOwner {
        receipient.transfer(address(this).balance);
    }

    function withdrawStuckTokens(IERC20 token, address to) public onlyOwner {
        uint256 balance = token.balanceOf(address(this));
        token.transfer(to, balance);
    }

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner() {
        _maxWalletToken = _tTotal.div(1000).mul(maxWallPercent_base1000);
    }

    function setMaxSellPercent_base1000(uint256 maxSellPercent_base1000) external onlyOwner() {
        require(maxSellPercent_base1000>0,"Max sell % should be higher than 0.1%"); 
        _maxSellLimit = _tTotal.div(1000).mul(maxSellPercent_base1000);
    }

    function setMaxWalletExempt(address _addr) external onlyOwner {
        _isMaxWalletExempt[_addr] = true;
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
    }

    
    function multiTransferCall(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {

        require(addresses.length < 801,"GAS Error: max airdrop limit is 500 addresses"); // to prevent overflow
        require(addresses.length == tokens.length,"Mismatch between Address and token count");

        uint256 SCCC = 0;

        for(uint i=0; i < addresses.length; i++){
            SCCC = SCCC + (tokens[i] * 10**_decimals);
        }

        require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");

        for(uint i=0; i < addresses.length; i++){
            _transfer(from,addresses[i],(tokens[i] * 10**_decimals));
        
        }
    }

    function multiTransferConstant(address from, address[] calldata addresses, uint256 tokens) external onlyOwner {

        require(addresses.length < 2001,"GAS Error: max airdrop limit is 2000 addresses"); // to prevent overflow

        uint256 SCCC = tokens* 10**_decimals * addresses.length;

        require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");

        for(uint i=0; i < addresses.length; i++){
            _transfer(from,addresses[i],(tokens* 10**_decimals));
            }
    }

    

     function setTaxesBuy(uint256 _reflectionFee, uint256 _liquidityFee, uint256 _marketingFee,uint256 _devFee) external onlyOwner {
       
        _buyLiquidityFee = _liquidityFee;
        _buyMarketingFee = _marketingFee;
        _buyDevFee = _devFee;
        _buyReflectionFee= _reflectionFee;

        reflectionFee= _reflectionFee;
        liquidityFee = _liquidityFee;
        devFee = _devFee;
        marketingFee = _marketingFee;

        totalFee = liquidityFee.add(marketingFee).add(devFee);

        require(totalFee<50, "Total Buy Fee  should be  less than 50%");

    }

    function setTaxesSell(uint256 _reflectionFee,uint256 _liquidityFee, uint256 _marketingFee,uint256 _devFee) external onlyOwner {
        _sellLiquidityFee = _liquidityFee;
        _sellMarketingFee = _marketingFee;
        _sellDevFee = _devFee;
        _sellReflectionFee= _reflectionFee;

         require(_sellLiquidityFee.add(_sellMarketingFee).add(_sellDevFee).add(_sellReflectionFee)<50, "Total Sell Fee should be less than 50%");
    }

    function setPrivateSaleLimitsEnabled(bool enabled) external onlyOwner {
        privateSaleLimitsEnabled = enabled;
    }

    function setPrivateSalersEnabled(address[] memory accounts, bool enabled) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            privateSaleHolders[accounts[i]] = enabled;
        }
    }

    function setPrivateSaleSettings(uint256 value, uint256 multiplier, uint256 time) external onlyOwner {
        require(value * 10**multiplier >= 5 * 10**17);
        require(time <= 48 hours);
        privateSaleMaxDailySell = value * 10**multiplier;
        privateSaleDelay = time;
    }

    function setPrivateSaleLimits(uint256 value, uint256 multiplier) external onlyOwner {
        require(value * 10**multiplier >= 5 * 10**17);
        privateSaleMaxDailySell = value * 10**multiplier;
    }
    
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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"},{"inputs":[],"name":"_buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyReflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxSellLimit","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":"_sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellReflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"newStatus","type":"bool"},{"internalType":"uint256","name":"newInterval","type":"uint256"}],"name":"changeCooldownSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"enableCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isSetToBurnOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTimelockExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_setToBurnOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"manage_trusted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransferCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"multiTransferConstant","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"privateSaleDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"privateSaleLimitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"privateSaleMaxDailySell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxSellPercent_base1000","type":"uint256"}],"name":"setMaxSellPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setMaxWalletExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"multiplier","type":"uint256"}],"name":"setPrivateSaleLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setPrivateSaleLimitsEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"multiplier","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"setPrivateSaleSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setPrivateSalersEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"setTaxesBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"setTaxesSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_devWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setZeroBuyTaxmode","outputs":[],"stateMutability":"nonpayable","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":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"receipient","type":"address"}],"name":"withDrawLeftoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeroBuyTaxmode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600380546001600160a01b031990811673b865b3ac451f6f637df577238f2f1a325f12b849179091556004805490911673a1a0c209cc59aef7cf77f3d2b7f33a4359a079e11790556000600955601080547409000000000000000000000000000000000000dead6001600160a81b031990911617908190556200009390600160a01b900460ff16600a62000d7d565b620000a4906402540be40062000e3c565b6011819055620000b79060001962000ed3565b620000c59060001962000e5e565b601255604080518082019091526007808252662a2ba2a2a627a760c91b6020909201918252620000f89160149162000bdd565b50604080518082019091526007808252662a2ba2a2a627a760c91b6020909201918252620001299160159162000bdd565b506200016260026200014e6103e86011546200060660201b620027ec1790919060201c565b6200065960201b6200282e1790919060201c565b6016556200018960036200014e6103e86011546200060660201b620027ec1790919060201c565b60175560036018819055600260198190556005601a819055601b829055601c839055601d819055601e829055601f82905560218390556022819055602382905560248290556025805460ff19169055610e106026556200020e92620001fa91620006e4602090811b620028ad17901c565b620006e460201b620028ad1790919060201c565b6028556028546029556200023b60026200014e6103e86011546200060660201b620027ec1790919060201c565b602a55602c805461ffff60a81b191690556706f05b59d3b20000603055620151806031556032805460ff191660011790553480156200027957600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506012543360009081526005602090815260409182902092909255805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a01559260048083019392829003018186803b1580156200031d57600080fd5b505afa15801562000332573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000358919062000c83565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003a157600080fd5b505afa158015620003b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003dc919062000c83565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200042557600080fd5b505af11580156200043a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000460919062000c83565b602c80546001600160a01b03199081166001600160a01b039384169081178355602b805490921685851617909155600090815260208080526040808320805460ff199081166001908117909255845487168552600a84528285208054821683179055308086528386208054831684179055855488168652600b855283862080548316841790558086528386208054831684179055865488168652838620805483168417905560108054891687528487208054841685179055865489168752600d865284872080548416851790559654881686528386208054831684179055855488168652600e90945282852080548216831790559284529220805490911690911790555462000570911662000747565b61dead600052600e6020527ff77e91909e61d18f67b875b2bfcae1f683a8d555e55382e3a6b082e2c59ea57a805460ff19166001179055620005af3390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601154604051620005f791815260200190565b60405180910390a35062000f16565b60006200065083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200086660201b60201c565b90505b92915050565b6000826200066a5750600062000653565b600062000678838562000e3c565b90508262000687858362000d1d565b14620006505760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b600080620006f3838562000d02565b905083811015620006505760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620006db565b6000546001600160a01b03163314620007a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620006db565b6001600160a01b0381166000908152600560205260409020541562000800576001600160a01b038116600090815260056020526040902054620007e690620008a2565b6001600160a01b0382166000908152600660205260409020555b6001600160a01b03166000818152600c60205260408120805460ff19166001908117909155600f805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319169091179055565b600081836200088a5760405162461bcd60e51b8152600401620006db919062000cac565b50600062000899848662000d1d565b95945050505050565b60006012548211156200090b5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401620006db565b6000620009176200093a565b90506200093381846200060660201b620027ec1790919060201c565b9392505050565b60008080620009486200096d565b915091506200096681836200060660201b620027ec1790919060201c565b9250505090565b6012546011546000918291825b600f5481101562000b1d578260056000600f8481548110620009ac57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118062000a2757508160066000600f848154811062000a0057634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1562000a3e57601254601154945094505050509091565b62000aa160056000600f848154811062000a6857634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282810193909352604090910190205485916200290c62000b5d821b17901c565b925062000b0660066000600f848154811062000acd57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282810193909352604090910190205484916200290c62000b5d821b17901c565b91508062000b148162000eb5565b9150506200097a565b5062000b3c6011546012546200060660201b620027ec1790919060201c565b82101562000b54576012546011549350935050509091565b90939092509050565b60006200065083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062000ba760201b60201c565b6000818484111562000bce5760405162461bcd60e51b8152600401620006db919062000cac565b50600062000899848662000e5e565b82805462000beb9062000e78565b90600052602060002090601f01602090048101928262000c0f576000855562000c5a565b82601f1062000c2a57805160ff191683800117855562000c5a565b8280016001018555821562000c5a579182015b8281111562000c5a57825182559160200191906001019062000c3d565b5062000c6892915062000c6c565b5090565b5b8082111562000c68576000815560010162000c6d565b60006020828403121562000c95578081fd5b81516001600160a01b038116811462000650578182fd5b6000602080835283518082850152825b8181101562000cda5785810183015185820160400152820162000cbc565b8181111562000cec5783604083870101525b50601f01601f1916929092016040019392505050565b6000821982111562000d185762000d1862000eea565b500190565b60008262000d2f5762000d2f62000f00565b500490565b600181815b8085111562000d7557816000190482111562000d595762000d5962000eea565b8085161562000d6757918102915b93841c939080029062000d39565b509250929050565b60006200065060ff84168360008262000d995750600162000653565b8162000da85750600062000653565b816001811462000dc1576002811462000dcc5762000dec565b600191505062000653565b60ff84111562000de05762000de062000eea565b50506001821b62000653565b5060208310610133831016604e8410600b841016171562000e11575081810a62000653565b62000e1d838362000d34565b806000190482111562000e345762000e3462000eea565b029392505050565b600081600019048311821515161562000e595762000e5962000eea565b500290565b60008282101562000e735762000e7362000eea565b500390565b600181811c9082168062000e8d57607f821691505b6020821081141562000eaf57634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141562000ecc5762000ecc62000eea565b5060010190565b60008262000ee55762000ee562000f00565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6149708062000f266000396000f3fe6080604052600436106104095760003560e01c806370a0823111610213578063a0c5efc211610123578063cbdf6d50116100ab578063ea2f0b371161007a578063ea2f0b3714610c19578063eafb5a3c14610c39578063f259c57b14610c59578063f2fde38b14610c79578063ffb54a9914610c9957600080fd5b8063cbdf6d5014610b87578063d3f6a15714610b9d578063dc44b6a014610bbd578063dd62ed3e14610bd357600080fd5b8063a985ceef116100f2578063a985ceef14610b15578063bf56b37114610b2f578063c5d2418914610b45578063c860795214610b5b578063c9cf778914610b7157600080fd5b8063a0c5efc214610a95578063a457c2d714610ab5578063a75dbac314610ad5578063a9059cbb14610af557600080fd5b80637d5d3944116101a657806388f820201161017557806388f82020146109ef5780638da5cb5b14610a285780638f4590d214610a465780639242b75914610a6657806395d89b4114610a8057600080fd5b80637d5d39441461098357806384530c461461099957806387c3e8a6146109b957806388790a68146109d957600080fd5b8063743942b6116101e2578063743942b614610921578063749f2ef2146109415780637598f8bc1461095757806378109e541461096d57600080fd5b806370a08231146108b6578063715018a6146108d657806371b9189c146108eb578063722b62ad1461090b57600080fd5b8063342594df1161031957806348a1f08e116102a157806350af449e1161027057806350af449e1461081057806350db71fb1461084057806352390c021461086057806362015852146108805780636ce37fa01461089657600080fd5b806348a1f08e1461079057806349bd5a5e146107b05780634b01547f146107d05780634bf6b68d146107f057600080fd5b80633cfebd85116102e85780633cfebd85146106e1578063401aa5c01461071a578063444e0230146107305780634549b0391461075057806346fe22461461077057600080fd5b8063342594df146106615780633685d4191461068157806339509351146106a15780633bd5d173146106c157600080fd5b806318160ddd1161039c5780632691bc801161036b5780632691bc80146105b45780632a9b8072146105d55780632d838119146105f55780632dd5efe714610615578063313ce5671461063557600080fd5b806318160ddd1461053f57806323b872dd146105545780632435f8451461057457806325b86edf1461059457600080fd5b80630d45c0e3116103d85780630d45c0e3146104b25780630e49767d146104d257806313114a9d146104f25780631694505e1461050757600080fd5b80630445b6671461041557806306fdde031461043e57806309302dc614610460578063095ea7b31461048257600080fd5b3661041057005b600080fd5b34801561042157600080fd5b5061042b602a5481565b6040519081526020015b60405180910390f35b34801561044a57600080fd5b50610453610cba565b60405161043591906145a5565b34801561046c57600080fd5b5061048061047b366004614464565b610d4c565b005b34801561048e57600080fd5b506104a261049d3660046141f7565b610da6565b6040519015158152602001610435565b3480156104be57600080fd5b506104806104cd366004614435565b610dbd565b3480156104de57600080fd5b506104806104ed366004614464565b610e45565b3480156104fe57600080fd5b5060135461042b565b34801561051357600080fd5b50602b54610527906001600160a01b031681565b6040516001600160a01b039091168152602001610435565b34801561054b57600080fd5b5060115461042b565b34801561056057600080fd5b506104a261056f3660046140b0565b610eee565b34801561058057600080fd5b5061048061058f366004614170565b610f57565b3480156105a057600080fd5b506104806105af366004614452565b6110f9565b3480156105c057600080fd5b50602c546104a290600160b01b900460ff1681565b3480156105e157600080fd5b506104806105f03660046143fd565b611229565b34801561060157600080fd5b5061042b610610366004614464565b6112ae565b34801561062157600080fd5b50610480610630366004614040565b611332565b34801561064157600080fd5b50601054600160a01b900460ff1660405160ff9091168152602001610435565b34801561066d57600080fd5b5061048061067c3660046142b7565b611380565b34801561068d57600080fd5b5061048061069c366004614040565b611424565b3480156106ad57600080fd5b506104a26106bc3660046141f7565b611613565b3480156106cd57600080fd5b506104806106dc366004614464565b611649565b3480156106ed57600080fd5b506104a26106fc366004614040565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561072657600080fd5b5061042b601b5481565b34801561073c57600080fd5b5061048061074b3660046144b8565b611733565b34801561075c57600080fd5b5061042b61076b366004614494565b6117a2565b34801561077c57600080fd5b5061048061078b3660046144d9565b61182f565b34801561079c57600080fd5b506104806107ab366004614262565b6118b1565b3480156107bc57600080fd5b50602c54610527906001600160a01b031681565b3480156107dc57600080fd5b506104806107eb3660046143fd565b611958565b3480156107fc57600080fd5b5061048061080b3660046143fd565b6119a0565b34801561081c57600080fd5b506104a261082b366004614040565b600e6020526000908152604090205460ff1681565b34801561084c57600080fd5b5061048061085b3660046141ca565b6119dd565b34801561086c57600080fd5b5061048061087b366004614040565b611a32565b34801561088c57600080fd5b5061042b60195481565b3480156108a257600080fd5b506104806108b1366004614531565b611b1c565b3480156108c257600080fd5b5061042b6108d1366004614040565b611bce565b3480156108e257600080fd5b50610480611c2d565b3480156108f757600080fd5b50610480610906366004614222565b611ca1565b34801561091757600080fd5b5061042b60265481565b34801561092d57600080fd5b5061048061093c366004614040565b611d49565b34801561094d57600080fd5b5061042b60315481565b34801561096357600080fd5b5061042b601f5481565b34801561097957600080fd5b5061042b60165481565b34801561098f57600080fd5b5061042b60175481565b3480156109a557600080fd5b506104806109b4366004614222565b611da8565b3480156109c557600080fd5b506104806109d43660046140f0565b611e50565b3480156109e557600080fd5b5061042b601c5481565b3480156109fb57600080fd5b506104a2610a0a366004614040565b6001600160a01b03166000908152600c602052604090205460ff1690565b348015610a3457600080fd5b506000546001600160a01b0316610527565b348015610a5257600080fd5b50610480610a613660046144b8565b6120b5565b348015610a7257600080fd5b506032546104a29060ff1681565b348015610a8c57600080fd5b506104536120ff565b348015610aa157600080fd5b50610480610ab0366004614531565b61210e565b348015610ac157600080fd5b506104a2610ad03660046141f7565b6121d2565b348015610ae157600080fd5b50610480610af03660046143fd565b612221565b348015610b0157600080fd5b506104a2610b103660046141f7565b61225e565b348015610b2157600080fd5b506025546104a29060ff1681565b348015610b3b57600080fd5b5061042b60095481565b348015610b5157600080fd5b5061042b601a5481565b348015610b6757600080fd5b5061042b601d5481565b348015610b7d57600080fd5b5061042b601e5481565b348015610b9357600080fd5b5061042b60305481565b348015610ba957600080fd5b50610480610bb8366004614078565b61226b565b348015610bc957600080fd5b5061042b60185481565b348015610bdf57600080fd5b5061042b610bee366004614078565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b348015610c2557600080fd5b50610480610c34366004614040565b6122c3565b348015610c4557600080fd5b50610480610c54366004614040565b61230e565b348015610c6557600080fd5b50610480610c74366004614040565b6126b4565b348015610c8557600080fd5b50610480610c94366004614040565b612702565b348015610ca557600080fd5b50602c546104a290600160a81b900460ff1681565b606060148054610cc990614848565b80601f0160208091040260200160405190810160405280929190818152602001828054610cf590614848565b8015610d425780601f10610d1757610100808354040283529160200191610d42565b820191906000526020600020905b815481529060010190602001808311610d2557829003601f168201915b5050505050905090565b6000546001600160a01b03163314610d7f5760405162461bcd60e51b8152600401610d76906145f8565b60405180910390fd5b610da081610d9a6103e86011546127ec90919063ffffffff16565b9061282e565b60165550565b6000610db333848461294e565b5060015b92915050565b6000546001600160a01b03163314610de75760405162461bcd60e51b8152600401610d76906145f8565b62015180811115610e2e5760405162461bcd60e51b8152602060048201526011602482015270115e18d959591cc81d1a19481b1a5b5a5d607a1b6044820152606401610d76565b6025805460ff191692151592909217909155602655565b6000546001600160a01b03163314610e6f5760405162461bcd60e51b8152600401610d76906145f8565b60008111610ecd5760405162461bcd60e51b815260206004820152602560248201527f4d61782073656c6c20252073686f756c6420626520686967686572207468616e60448201526420302e312560d81b6064820152608401610d76565b610ee881610d9a6103e86011546127ec90919063ffffffff16565b60175550565b6000610efb848484612a72565b610f4d8433610f48856040518060600160405280602881526020016148ee602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190613428565b61294e565b5060019392505050565b6000546001600160a01b03163314610f815760405162461bcd60e51b8152600401610d76906145f8565b6107d18210610fe95760405162461bcd60e51b815260206004820152602e60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526d323030302061646472657373657360901b6064820152608401610d76565b601054600090839061100690600160a01b900460ff16600a614766565b6110109084614812565b61101a9190614812565b90508061102686611bce565b10156110745760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610d76565b60005b838110156110f1576110df868686848181106110a357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906110b89190614040565b6010546110d090600160a01b900460ff16600a614766565b6110da9087614812565b612a72565b806110e981614883565b915050611077565b505050505050565b6000546001600160a01b031633146111235760405162461bcd60e51b8152600401610d76906145f8565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b15801561116557600080fd5b505afa158015611179573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119d919061447c565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb90604401602060405180830381600087803b1580156111eb57600080fd5b505af11580156111ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112239190614419565b50505050565b6000546001600160a01b031633146112535760405162461bcd60e51b8152600401610d76906145f8565b602c805460ff60a81b1916600160a81b8315150217905561127330611a32565b602c54611288906001600160a01b0316611a32565b602c54600160a81b900460ff1680156112a15750600954155b156112ab57436009555b50565b60006012548211156113155760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610d76565b600061131f613462565b905061132b83826127ec565b9392505050565b6000546001600160a01b0316331461135c5760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6000546001600160a01b031633146113aa5760405162461bcd60e51b8152600401610d76906145f8565b60005b825181101561141f5781602d60008584815181106113db57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061141781614883565b9150506113ad565b505050565b6000546001600160a01b0316331461144e5760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b0381166000908152600c602052604090205460ff166114b65760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610d76565b60005b600f5481101561160f57816001600160a01b0316600f82815481106114ee57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614156115fd57600f805461151990600190614831565b8154811061153757634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600f80546001600160a01b03909216918390811061157157634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600682526040808220829055600c90925220805460ff19169055600f8054806115d757634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061160781614883565b9150506114b9565b5050565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610db3918590610f4890866128ad565b336000818152600c602052604090205460ff16156116be5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610d76565b60006116c983613485565b505050506001600160a01b0384166000908152600560205260409020549192506116f59190508261290c565b6001600160a01b03831660009081526005602052604090205560125461171b908261290c565b60125560135461172b90846128ad565b601355505050565b6000546001600160a01b0316331461175d5760405162461bcd60e51b8152600401610d76906145f8565b6706f05b59d3b2000061177182600a61475a565b61177b9084614812565b101561178657600080fd5b61179181600a61475a565b61179b9083614812565b6030555050565b60006011548311156117f65760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610d76565b8161181557600061180684613485565b50939550610db7945050505050565b600061182084613485565b50929550610db7945050505050565b6000546001600160a01b031633146118595760405162461bcd60e51b8152600401610d76906145f8565b6706f05b59d3b2000061186d83600a61475a565b6118779085614812565b101561188257600080fd5b6202a30081111561189257600080fd5b61189d82600a61475a565b6118a79084614812565b6030556031555050565b6000546001600160a01b031633146118db5760405162461bcd60e51b8152600401610d76906145f8565b60005b8281101561122357816008600086868581811061190b57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906119209190614040565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561195181614883565b90506118de565b6000546001600160a01b031633146119825760405162461bcd60e51b8152600401610d76906145f8565b602c8054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b031633146119ca5760405162461bcd60e51b8152600401610d76906145f8565b6025805460ff1916911515919091179055565b6000546001600160a01b03163314611a075760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a5c5760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b03811660009081526005602052604090205415611ab6576001600160a01b038116600090815260056020526040902054611a9c906112ae565b6001600160a01b0382166000908152600660205260409020555b6001600160a01b03166000818152600c60205260408120805460ff19166001908117909155600f805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319169091179055565b6000546001600160a01b03163314611b465760405162461bcd60e51b8152600401610d76906145f8565b601c839055601d829055601e819055601f8490556032611b7285611b6c848188886128ad565b906128ad565b106112235760405162461bcd60e51b815260206004820152602660248201527f546f74616c2053656c6c204665652073686f756c64206265206c657373207468604482015265616e2035302560d01b6064820152608401610d76565b6001600160a01b0381166000908152600c602052604081205460ff1615611c0b57506001600160a01b031660009081526006602052604090205490565b6001600160a01b038216600090815260056020526040902054610db7906112ae565b6000546001600160a01b03163314611c575760405162461bcd60e51b8152600401610d76906145f8565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314611ccb5760405162461bcd60e51b8152600401610d76906145f8565b60005b8181101561141f576001600a6000858585818110611cfc57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611d119190614040565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611d4281614883565b9050611cce565b6000546001600160a01b03163314611d735760405162461bcd60e51b8152600401610d76906145f8565b6040516001600160a01b038216904780156108fc02916000818181858888f1935050505015801561160f573d6000803e3d6000fd5b6000546001600160a01b03163314611dd25760405162461bcd60e51b8152600401610d76906145f8565b60005b8181101561141f576001600d6000858585818110611e0357634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611e189190614040565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611e4981614883565b9050611dd5565b6000546001600160a01b03163314611e7a5760405162461bcd60e51b8152600401610d76906145f8565b6103218310611ee15760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610d76565b828114611f415760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610d76565b6000805b84811015611fb457601054611f6590600160a01b900460ff16600a614766565b848483818110611f8557634e487b7160e01b600052603260045260246000fd5b90506020020135611f969190614812565b611fa090836146df565b915080611fac81614883565b915050611f45565b5080611fbf87611bce565b101561200d5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610d76565b60005b848110156120ac5761209a8787878481811061203c57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906120519190614040565b60105461206990600160a01b900460ff16600a614766565b87878681811061208957634e487b7160e01b600052603260045260246000fd5b905060200201356110da9190614812565b806120a481614883565b915050612010565b50505050505050565b6000546001600160a01b031633146120df5760405162461bcd60e51b8152600401610d76906145f8565b80826011546120ee9190614812565b6120f891906146f7565b602a555050565b606060158054610cc990614848565b6000546001600160a01b031633146121385760405162461bcd60e51b8152600401610d76906145f8565b6018839055601a8290556019819055601b849055602484905560218390556023819055602282905561216e81611b6c85856128ad565b60288190556032116112235760405162461bcd60e51b815260206004820152602760248201527f546f74616c2042757920466565202073686f756c6420626520206c657373207460448201526668616e2035302560c81b6064820152608401610d76565b6000610db33384610f4885604051806060016040528060258152602001614916602591393360009081526007602090815260408083206001600160a01b038d1684529091529020549190613428565b6000546001600160a01b0316331461224b5760405162461bcd60e51b8152600401610d76906145f8565b6032805460ff1916911515919091179055565b6000610db3338484612a72565b6000546001600160a01b031633146122955760405162461bcd60e51b8152600401610d76906145f8565b600380546001600160a01b039384166001600160a01b03199182161790915560048054929093169116179055565b6000546001600160a01b031633146122ed5760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b6000546001600160a01b031633146123385760405162461bcd60e51b8152600401610d76906145f8565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561237857600080fd5b505afa15801561238c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b0919061405c565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156123f857600080fd5b505afa15801561240c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612430919061405c565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561247657600080fd5b505afa15801561248a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ae919061405c565b90506001600160a01b03811661265457816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156124f757600080fd5b505afa15801561250b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252f919061405c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561257757600080fd5b505afa15801561258b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125af919061405c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156125f757600080fd5b505af115801561260b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262f919061405c565b602c80546001600160a01b0319166001600160a01b0392909216919091179055612670565b602c80546001600160a01b0319166001600160a01b0383161790555b50602c546001600160a01b0390811660009081526020805260409020805460ff19166001179055602b8054929091166001600160a01b031990921691909117905550565b6000546001600160a01b031633146126de5760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b03166000908152600a60205260409020805460ff19166001179055565b6000546001600160a01b0316331461272c5760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b0381166127915760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d76565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600061132b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506134d4565b60008261283d57506000610db7565b60006128498385614812565b90508261285685836146f7565b1461132b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610d76565b6000806128ba83856146df565b90508381101561132b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610d76565b600061132b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613428565b6001600160a01b0383166129b05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d76565b6001600160a01b038216612a115760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d76565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316612ad65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d76565b6001600160a01b038216612b385760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d76565b60008111612b9a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610d76565b6000546001600160a01b03848116911614801590612bc657506000546001600160a01b03838116911614155b15612c2457602c54600160a81b900460ff16612c245760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610d76565b602c546000906001600160a01b0385811691161480612c505750602c546001600160a01b038481169116145b8015612c9857506001600160a01b0384166000908152600a602052604090205460ff1680612c9657506001600160a01b0383166000908152600a602052604090205460ff165b155b15612ca1575060015b6000600954118015612ce557506001600160a01b0383166000908152600b602052604090205460ff16158015612ce557506000546001600160a01b03858116911614155b8015612cff5750436009546002612cfc91906146df565b11155b15612d7357601654612d1084611bce565b612d1a90846146df565b1115612d735760405162461bcd60e51b815260206004820152602260248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d6974604482015261195960f21b6064820152608401610d76565b602854602955601b546024556001600160a01b03841660009081526008602052604090205460ff1615612e04576001600160a01b0383161580612dc357506010546001600160a01b038481169116145b612e045760405162461bcd60e51b8152602060048201526012602482015271596f752063616e206f6e6c79204275726e2160701b6044820152606401610d76565b60325460ff161561318a576001600160a01b0384166000908152602d602052604090205460ff1615612e76576001600160a01b038316600090815260208052604090205460ff1680612e6d57506001600160a01b038416600090815260208052604090205460ff165b612e7657600080fd5b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612eb957634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602b54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612f0d57600080fd5b505afa158015612f21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f45919061405c565b81600181518110612f6657634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092018101919091529085166000908152908052604090205460ff168015612fb757506001600160a01b0385166000908152602d602052604090205460ff165b8015612fcd5750602c54600160a01b900460ff16155b1561318857602b5460405163d06ca61f60e01b81526000916001600160a01b03169063d06ca61f90613005908790869060040161462d565b60006040518083038186803b15801561301d57600080fd5b505afa158015613031573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613059919081019061436a565b60018151811061307957634e487b7160e01b600052603260045260246000fd5b6020026020010151905042603154602f6000896001600160a01b03166001600160a01b03168152602001908152602001600020546130b791906146df565b10156130f9576030548111156130cc57600080fd5b6001600160a01b0386166000908152602f60209081526040808320429055602e9091529020819055613186565b6031546001600160a01b0387166000908152602f60205260409020544291613120916146df565b1115613186576030546001600160a01b0387166000908152602e602052604090205461314d9083906146df565b111561315857600080fd5b6001600160a01b0386166000908152602e6020526040812080548392906131809084906146df565b90915550505b505b505b60255460ff1680156131a95750602c546001600160a01b038481169116145b80156131ce57506001600160a01b0384166000908152600e602052604090205460ff16155b15613270576001600160a01b03841660009081526027602052604090205442116132495760405162461bcd60e51b815260206004820152602660248201527f506c65617365207761697420666f7220636f6f6c646f776e206265747765656e6044820152652073656c6c7360d01b6064820152608401610d76565b60265461325690426146df565b6001600160a01b0385166000908152602760205260409020555b602c54600160a81b900460ff1680156132965750602c546001600160a01b038481169116145b1561331f576017548211156132f85760405162461bcd60e51b815260206004820152602260248201527f416d6f756e742047726561746572207468616e206d61782073656c6c206c696d6044820152611a5d60f21b6064820152608401610d76565b613315601e54611b6c601d54601c546128ad90919063ffffffff16565b602955601f546024555b600060095411801561333e575043600954600461333c91906146df565b115b156133495760316029555b6000600954118015613368575043600954600261336691906146df565b115b156133735760636029555b602c54600160b01b900460ff16156133b657602c54600160a81b900460ff1680156133ab5750602c546001600160a01b038581169116145b156133b65760006029555b602c54600160a01b900460ff161580156133d95750602c54600160a81b900460ff165b80156133f25750602c546001600160a01b038481169116145b1561341c57600061340230611bce565b9050602a54811061341a5750602a5461341a81613502565b505b6112238484848461362c565b6000818484111561344c5760405162461bcd60e51b8152600401610d7691906145a5565b5060006134598486614831565b95945050505050565b600080600061346f613758565b909250905061347e82826127ec565b9250505090565b600080600080600080600080600061349c8a613912565b92509250925060008060006134ba8d86866134b5613462565b613954565b919f909e50909c50959a5093985091965092945050505050565b600081836134f55760405162461bcd60e51b8152600401610d7691906145a5565b50600061345984866146f7565b602c805460ff60a01b1916600160a01b17905560285460215460009161353891600291613532918290879061282e565b906127ec565b90506000613546838361290c565b9050613551816139a4565b6021544790600090613571906135689060026127ec565b6028549061290c565b905060006135936002613532846135326021548861282e90919063ffffffff16565b905060006135b0836135326023548761282e90919063ffffffff16565b905060006135cd846135326022548861282e90919063ffffffff16565b9050478015613604576003546135ed9083906001600160a01b0316613b62565b6004546136049084906001600160a01b0316613b62565b8715613614576136148885613b98565b5050602c805460ff60a01b1916905550505050505050565b6024546029548261364257600060248190556029555b6001600160a01b0386166000908152600c602052604090205460ff16801561368357506001600160a01b0385166000908152600c602052604090205460ff16155b1561369857613693868686613c7c565b613744565b6001600160a01b0386166000908152600c602052604090205460ff161580156136d957506001600160a01b0385166000908152600c602052604090205460ff165b156136e957613693868686613da2565b6001600160a01b0386166000908152600c602052604090205460ff16801561372957506001600160a01b0385166000908152600c602052604090205460ff165b1561373957613693868686613e4b565b613744868686613ebe565b826110f15760249190915560295550505050565b6012546011546000918291825b600f548110156138e2578260056000600f848154811061379557634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061380e57508160066000600f84815481106137e757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561382457601254601154945094505050509091565b61387860056000600f848154811061384c57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054849061290c565b92506138ce60066000600f84815481106138a257634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054839061290c565b9150806138da81614883565b915050613765565b506011546012546138f2916127ec565b821015613909576012546011549350935050509091565b90939092509050565b60008060008061392185613f02565b9050600061392e86613f1e565b9050600061394682613940898661290c565b9061290c565b979296509094509092505050565b6000808080613963888661282e565b90506000613971888761282e565b9050600061397f888861282e565b9050600061399182613940868661290c565b939b939a50919850919650505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106139e757634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602b54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015613a3b57600080fd5b505afa158015613a4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a73919061405c565b81600181518110613a9457634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152602b54613aba913091168461294e565b602b5460405163791ac94760e01b81526001600160a01b039091169063791ac94790613af390859060009086903090429060040161464e565b600060405180830381600087803b158015613b0d57600080fd5b505af1158015613b21573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613b5692919061462d565b60405180910390a15050565b6040516001600160a01b0382169083156108fc029084906000818181858888f1935050505015801561141f573d6000803e3d6000fd5b602b54613bb09030906001600160a01b03168461294e565b602b546001600160a01b031663f305d719823085600080613bd96000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015613c3c57600080fd5b505af1158015613c50573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613c759190614504565b5050505050565b600080600080600080613c8e87613485565b6001600160a01b038f16600090815260066020526040902054959b50939950919750955093509150613cc0908861290c565b6001600160a01b038a16600090815260066020908152604080832093909355600590522054613cef908761290c565b6001600160a01b03808b1660009081526005602052604080822093909355908a1681522054613d1e90866128ad565b6001600160a01b038916600090815260056020526040902055613d4081613f3a565b613d4a8483613fc2565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613d8f91815260200190565b60405180910390a3505050505050505050565b600080600080600080613db487613485565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150613de6908761290c565b6001600160a01b03808b16600090815260056020908152604080832094909455918b16815260069091522054613e1c90846128ad565b6001600160a01b038916600090815260066020908152604080832093909355600590522054613d1e90866128ad565b600080600080600080613e5d87613485565b6001600160a01b038f16600090815260066020526040902054959b50939950919750955093509150613e8f908861290c565b6001600160a01b038a16600090815260066020908152604080832093909355600590522054613de6908761290c565b600080600080600080613ed087613485565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150613cef908761290c565b6000610db760646135326024548561282e90919063ffffffff16565b6000610db760646135326029548561282e90919063ffffffff16565b6000613f44613462565b90506000613f52838361282e565b30600090815260056020526040902054909150613f6f90826128ad565b30600090815260056020908152604080832093909355600c9052205460ff161561141f5730600090815260066020526040902054613fad90846128ad565b30600090815260066020526040902055505050565b601254613fcf908361290c565b601255601354613fdf90826128ad565b6013555050565b60008083601f840112613ff7578182fd5b50813567ffffffffffffffff81111561400e578182fd5b6020830191508360208260051b850101111561402957600080fd5b9250929050565b803561403b816148df565b919050565b600060208284031215614051578081fd5b813561132b816148ca565b60006020828403121561406d578081fd5b815161132b816148ca565b6000806040838503121561408a578081fd5b8235614095816148ca565b915060208301356140a5816148ca565b809150509250929050565b6000806000606084860312156140c4578081fd5b83356140cf816148ca565b925060208401356140df816148ca565b929592945050506040919091013590565b600080600080600060608688031215614107578081fd5b8535614112816148ca565b9450602086013567ffffffffffffffff8082111561412e578283fd5b61413a89838a01613fe6565b90965094506040880135915080821115614152578283fd5b5061415f88828901613fe6565b969995985093965092949392505050565b60008060008060608587031215614185578384fd5b8435614190816148ca565b9350602085013567ffffffffffffffff8111156141ab578384fd5b6141b787828801613fe6565b9598909750949560400135949350505050565b600080604083850312156141dc578182fd5b82356141e7816148ca565b915060208301356140a5816148df565b60008060408385031215614209578182fd5b8235614214816148ca565b946020939093013593505050565b60008060208385031215614234578081fd5b823567ffffffffffffffff81111561424a578182fd5b61425685828601613fe6565b90969095509350505050565b600080600060408486031215614276578081fd5b833567ffffffffffffffff81111561428c578182fd5b61429886828701613fe6565b90945092505060208401356142ac816148df565b809150509250925092565b600080604083850312156142c9578182fd5b823567ffffffffffffffff8111156142df578283fd5b8301601f810185136142ef578283fd5b803560206143046142ff836146bb565b61468a565b80838252828201915082850189848660051b8801011115614323578788fd5b8795505b8486101561434e57803561433a816148ca565b835260019590950194918301918301614327565b50955061435e9050868201614030565b93505050509250929050565b6000602080838503121561437c578182fd5b825167ffffffffffffffff811115614392578283fd5b8301601f810185136143a2578283fd5b80516143b06142ff826146bb565b80828252848201915084840188868560051b87010111156143cf578687fd5b8694505b838510156143f15780518352600194909401939185019185016143d3565b50979650505050505050565b60006020828403121561440e578081fd5b813561132b816148df565b60006020828403121561442a578081fd5b815161132b816148df565b60008060408385031215614447578182fd5b8235614214816148df565b6000806040838503121561408a578182fd5b600060208284031215614475578081fd5b5035919050565b60006020828403121561448d578081fd5b5051919050565b600080604083850312156144a6578182fd5b8235915060208301356140a5816148df565b600080604083850312156144ca578182fd5b50508035926020909101359150565b6000806000606084860312156144ed578081fd5b505081359360208301359350604090920135919050565b600080600060608486031215614518578081fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215614546578182fd5b5050823594602084013594506040840135936060013592509050565b6000815180845260208085019450808401835b8381101561459a5781516001600160a01b031687529582019590820190600101614575565b509495945050505050565b6000602080835283518082850152825b818110156145d1578581018301518582016040015282016145b5565b818111156145e25783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8281526040602082015260006146466040830184614562565b949350505050565b85815284602082015260a06040820152600061466d60a0830186614562565b6001600160a01b0394909416606083015250608001529392505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156146b3576146b36148b4565b604052919050565b600067ffffffffffffffff8211156146d5576146d56148b4565b5060051b60200190565b600082198211156146f2576146f261489e565b500190565b60008261471257634e487b7160e01b81526012600452602481fd5b500490565b600181815b808511156147525781600019048211156147385761473861489e565b8085161561474557918102915b93841c939080029061471c565b509250929050565b600061132b8383614771565b600061132b60ff8416835b60008261478057506001610db7565b8161478d57506000610db7565b81600181146147a357600281146147ad576147c9565b6001915050610db7565b60ff8411156147be576147be61489e565b50506001821b610db7565b5060208310610133831016604e8410600b84101617156147ec575081810a610db7565b6147f68383614717565b806000190482111561480a5761480a61489e565b029392505050565b600081600019048311821515161561482c5761482c61489e565b500290565b6000828210156148435761484361489e565b500390565b600181811c9082168061485c57607f821691505b6020821081141561487d57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156148975761489761489e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146112ab57600080fd5b80151581146112ab57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f721917477210a6ba343996acd86604d47f9590aaf08c53e0ddebd66a44803df64736f6c63430008040033

Deployed Bytecode

0x6080604052600436106104095760003560e01c806370a0823111610213578063a0c5efc211610123578063cbdf6d50116100ab578063ea2f0b371161007a578063ea2f0b3714610c19578063eafb5a3c14610c39578063f259c57b14610c59578063f2fde38b14610c79578063ffb54a9914610c9957600080fd5b8063cbdf6d5014610b87578063d3f6a15714610b9d578063dc44b6a014610bbd578063dd62ed3e14610bd357600080fd5b8063a985ceef116100f2578063a985ceef14610b15578063bf56b37114610b2f578063c5d2418914610b45578063c860795214610b5b578063c9cf778914610b7157600080fd5b8063a0c5efc214610a95578063a457c2d714610ab5578063a75dbac314610ad5578063a9059cbb14610af557600080fd5b80637d5d3944116101a657806388f820201161017557806388f82020146109ef5780638da5cb5b14610a285780638f4590d214610a465780639242b75914610a6657806395d89b4114610a8057600080fd5b80637d5d39441461098357806384530c461461099957806387c3e8a6146109b957806388790a68146109d957600080fd5b8063743942b6116101e2578063743942b614610921578063749f2ef2146109415780637598f8bc1461095757806378109e541461096d57600080fd5b806370a08231146108b6578063715018a6146108d657806371b9189c146108eb578063722b62ad1461090b57600080fd5b8063342594df1161031957806348a1f08e116102a157806350af449e1161027057806350af449e1461081057806350db71fb1461084057806352390c021461086057806362015852146108805780636ce37fa01461089657600080fd5b806348a1f08e1461079057806349bd5a5e146107b05780634b01547f146107d05780634bf6b68d146107f057600080fd5b80633cfebd85116102e85780633cfebd85146106e1578063401aa5c01461071a578063444e0230146107305780634549b0391461075057806346fe22461461077057600080fd5b8063342594df146106615780633685d4191461068157806339509351146106a15780633bd5d173146106c157600080fd5b806318160ddd1161039c5780632691bc801161036b5780632691bc80146105b45780632a9b8072146105d55780632d838119146105f55780632dd5efe714610615578063313ce5671461063557600080fd5b806318160ddd1461053f57806323b872dd146105545780632435f8451461057457806325b86edf1461059457600080fd5b80630d45c0e3116103d85780630d45c0e3146104b25780630e49767d146104d257806313114a9d146104f25780631694505e1461050757600080fd5b80630445b6671461041557806306fdde031461043e57806309302dc614610460578063095ea7b31461048257600080fd5b3661041057005b600080fd5b34801561042157600080fd5b5061042b602a5481565b6040519081526020015b60405180910390f35b34801561044a57600080fd5b50610453610cba565b60405161043591906145a5565b34801561046c57600080fd5b5061048061047b366004614464565b610d4c565b005b34801561048e57600080fd5b506104a261049d3660046141f7565b610da6565b6040519015158152602001610435565b3480156104be57600080fd5b506104806104cd366004614435565b610dbd565b3480156104de57600080fd5b506104806104ed366004614464565b610e45565b3480156104fe57600080fd5b5060135461042b565b34801561051357600080fd5b50602b54610527906001600160a01b031681565b6040516001600160a01b039091168152602001610435565b34801561054b57600080fd5b5060115461042b565b34801561056057600080fd5b506104a261056f3660046140b0565b610eee565b34801561058057600080fd5b5061048061058f366004614170565b610f57565b3480156105a057600080fd5b506104806105af366004614452565b6110f9565b3480156105c057600080fd5b50602c546104a290600160b01b900460ff1681565b3480156105e157600080fd5b506104806105f03660046143fd565b611229565b34801561060157600080fd5b5061042b610610366004614464565b6112ae565b34801561062157600080fd5b50610480610630366004614040565b611332565b34801561064157600080fd5b50601054600160a01b900460ff1660405160ff9091168152602001610435565b34801561066d57600080fd5b5061048061067c3660046142b7565b611380565b34801561068d57600080fd5b5061048061069c366004614040565b611424565b3480156106ad57600080fd5b506104a26106bc3660046141f7565b611613565b3480156106cd57600080fd5b506104806106dc366004614464565b611649565b3480156106ed57600080fd5b506104a26106fc366004614040565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561072657600080fd5b5061042b601b5481565b34801561073c57600080fd5b5061048061074b3660046144b8565b611733565b34801561075c57600080fd5b5061042b61076b366004614494565b6117a2565b34801561077c57600080fd5b5061048061078b3660046144d9565b61182f565b34801561079c57600080fd5b506104806107ab366004614262565b6118b1565b3480156107bc57600080fd5b50602c54610527906001600160a01b031681565b3480156107dc57600080fd5b506104806107eb3660046143fd565b611958565b3480156107fc57600080fd5b5061048061080b3660046143fd565b6119a0565b34801561081c57600080fd5b506104a261082b366004614040565b600e6020526000908152604090205460ff1681565b34801561084c57600080fd5b5061048061085b3660046141ca565b6119dd565b34801561086c57600080fd5b5061048061087b366004614040565b611a32565b34801561088c57600080fd5b5061042b60195481565b3480156108a257600080fd5b506104806108b1366004614531565b611b1c565b3480156108c257600080fd5b5061042b6108d1366004614040565b611bce565b3480156108e257600080fd5b50610480611c2d565b3480156108f757600080fd5b50610480610906366004614222565b611ca1565b34801561091757600080fd5b5061042b60265481565b34801561092d57600080fd5b5061048061093c366004614040565b611d49565b34801561094d57600080fd5b5061042b60315481565b34801561096357600080fd5b5061042b601f5481565b34801561097957600080fd5b5061042b60165481565b34801561098f57600080fd5b5061042b60175481565b3480156109a557600080fd5b506104806109b4366004614222565b611da8565b3480156109c557600080fd5b506104806109d43660046140f0565b611e50565b3480156109e557600080fd5b5061042b601c5481565b3480156109fb57600080fd5b506104a2610a0a366004614040565b6001600160a01b03166000908152600c602052604090205460ff1690565b348015610a3457600080fd5b506000546001600160a01b0316610527565b348015610a5257600080fd5b50610480610a613660046144b8565b6120b5565b348015610a7257600080fd5b506032546104a29060ff1681565b348015610a8c57600080fd5b506104536120ff565b348015610aa157600080fd5b50610480610ab0366004614531565b61210e565b348015610ac157600080fd5b506104a2610ad03660046141f7565b6121d2565b348015610ae157600080fd5b50610480610af03660046143fd565b612221565b348015610b0157600080fd5b506104a2610b103660046141f7565b61225e565b348015610b2157600080fd5b506025546104a29060ff1681565b348015610b3b57600080fd5b5061042b60095481565b348015610b5157600080fd5b5061042b601a5481565b348015610b6757600080fd5b5061042b601d5481565b348015610b7d57600080fd5b5061042b601e5481565b348015610b9357600080fd5b5061042b60305481565b348015610ba957600080fd5b50610480610bb8366004614078565b61226b565b348015610bc957600080fd5b5061042b60185481565b348015610bdf57600080fd5b5061042b610bee366004614078565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b348015610c2557600080fd5b50610480610c34366004614040565b6122c3565b348015610c4557600080fd5b50610480610c54366004614040565b61230e565b348015610c6557600080fd5b50610480610c74366004614040565b6126b4565b348015610c8557600080fd5b50610480610c94366004614040565b612702565b348015610ca557600080fd5b50602c546104a290600160a81b900460ff1681565b606060148054610cc990614848565b80601f0160208091040260200160405190810160405280929190818152602001828054610cf590614848565b8015610d425780601f10610d1757610100808354040283529160200191610d42565b820191906000526020600020905b815481529060010190602001808311610d2557829003601f168201915b5050505050905090565b6000546001600160a01b03163314610d7f5760405162461bcd60e51b8152600401610d76906145f8565b60405180910390fd5b610da081610d9a6103e86011546127ec90919063ffffffff16565b9061282e565b60165550565b6000610db333848461294e565b5060015b92915050565b6000546001600160a01b03163314610de75760405162461bcd60e51b8152600401610d76906145f8565b62015180811115610e2e5760405162461bcd60e51b8152602060048201526011602482015270115e18d959591cc81d1a19481b1a5b5a5d607a1b6044820152606401610d76565b6025805460ff191692151592909217909155602655565b6000546001600160a01b03163314610e6f5760405162461bcd60e51b8152600401610d76906145f8565b60008111610ecd5760405162461bcd60e51b815260206004820152602560248201527f4d61782073656c6c20252073686f756c6420626520686967686572207468616e60448201526420302e312560d81b6064820152608401610d76565b610ee881610d9a6103e86011546127ec90919063ffffffff16565b60175550565b6000610efb848484612a72565b610f4d8433610f48856040518060600160405280602881526020016148ee602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190613428565b61294e565b5060019392505050565b6000546001600160a01b03163314610f815760405162461bcd60e51b8152600401610d76906145f8565b6107d18210610fe95760405162461bcd60e51b815260206004820152602e60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526d323030302061646472657373657360901b6064820152608401610d76565b601054600090839061100690600160a01b900460ff16600a614766565b6110109084614812565b61101a9190614812565b90508061102686611bce565b10156110745760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610d76565b60005b838110156110f1576110df868686848181106110a357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906110b89190614040565b6010546110d090600160a01b900460ff16600a614766565b6110da9087614812565b612a72565b806110e981614883565b915050611077565b505050505050565b6000546001600160a01b031633146111235760405162461bcd60e51b8152600401610d76906145f8565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b15801561116557600080fd5b505afa158015611179573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119d919061447c565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb90604401602060405180830381600087803b1580156111eb57600080fd5b505af11580156111ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112239190614419565b50505050565b6000546001600160a01b031633146112535760405162461bcd60e51b8152600401610d76906145f8565b602c805460ff60a81b1916600160a81b8315150217905561127330611a32565b602c54611288906001600160a01b0316611a32565b602c54600160a81b900460ff1680156112a15750600954155b156112ab57436009555b50565b60006012548211156113155760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610d76565b600061131f613462565b905061132b83826127ec565b9392505050565b6000546001600160a01b0316331461135c5760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6000546001600160a01b031633146113aa5760405162461bcd60e51b8152600401610d76906145f8565b60005b825181101561141f5781602d60008584815181106113db57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061141781614883565b9150506113ad565b505050565b6000546001600160a01b0316331461144e5760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b0381166000908152600c602052604090205460ff166114b65760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610d76565b60005b600f5481101561160f57816001600160a01b0316600f82815481106114ee57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614156115fd57600f805461151990600190614831565b8154811061153757634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600f80546001600160a01b03909216918390811061157157634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600682526040808220829055600c90925220805460ff19169055600f8054806115d757634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061160781614883565b9150506114b9565b5050565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610db3918590610f4890866128ad565b336000818152600c602052604090205460ff16156116be5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610d76565b60006116c983613485565b505050506001600160a01b0384166000908152600560205260409020549192506116f59190508261290c565b6001600160a01b03831660009081526005602052604090205560125461171b908261290c565b60125560135461172b90846128ad565b601355505050565b6000546001600160a01b0316331461175d5760405162461bcd60e51b8152600401610d76906145f8565b6706f05b59d3b2000061177182600a61475a565b61177b9084614812565b101561178657600080fd5b61179181600a61475a565b61179b9083614812565b6030555050565b60006011548311156117f65760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610d76565b8161181557600061180684613485565b50939550610db7945050505050565b600061182084613485565b50929550610db7945050505050565b6000546001600160a01b031633146118595760405162461bcd60e51b8152600401610d76906145f8565b6706f05b59d3b2000061186d83600a61475a565b6118779085614812565b101561188257600080fd5b6202a30081111561189257600080fd5b61189d82600a61475a565b6118a79084614812565b6030556031555050565b6000546001600160a01b031633146118db5760405162461bcd60e51b8152600401610d76906145f8565b60005b8281101561122357816008600086868581811061190b57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906119209190614040565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561195181614883565b90506118de565b6000546001600160a01b031633146119825760405162461bcd60e51b8152600401610d76906145f8565b602c8054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b031633146119ca5760405162461bcd60e51b8152600401610d76906145f8565b6025805460ff1916911515919091179055565b6000546001600160a01b03163314611a075760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a5c5760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b03811660009081526005602052604090205415611ab6576001600160a01b038116600090815260056020526040902054611a9c906112ae565b6001600160a01b0382166000908152600660205260409020555b6001600160a01b03166000818152600c60205260408120805460ff19166001908117909155600f805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319169091179055565b6000546001600160a01b03163314611b465760405162461bcd60e51b8152600401610d76906145f8565b601c839055601d829055601e819055601f8490556032611b7285611b6c848188886128ad565b906128ad565b106112235760405162461bcd60e51b815260206004820152602660248201527f546f74616c2053656c6c204665652073686f756c64206265206c657373207468604482015265616e2035302560d01b6064820152608401610d76565b6001600160a01b0381166000908152600c602052604081205460ff1615611c0b57506001600160a01b031660009081526006602052604090205490565b6001600160a01b038216600090815260056020526040902054610db7906112ae565b6000546001600160a01b03163314611c575760405162461bcd60e51b8152600401610d76906145f8565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314611ccb5760405162461bcd60e51b8152600401610d76906145f8565b60005b8181101561141f576001600a6000858585818110611cfc57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611d119190614040565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611d4281614883565b9050611cce565b6000546001600160a01b03163314611d735760405162461bcd60e51b8152600401610d76906145f8565b6040516001600160a01b038216904780156108fc02916000818181858888f1935050505015801561160f573d6000803e3d6000fd5b6000546001600160a01b03163314611dd25760405162461bcd60e51b8152600401610d76906145f8565b60005b8181101561141f576001600d6000858585818110611e0357634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611e189190614040565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611e4981614883565b9050611dd5565b6000546001600160a01b03163314611e7a5760405162461bcd60e51b8152600401610d76906145f8565b6103218310611ee15760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610d76565b828114611f415760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610d76565b6000805b84811015611fb457601054611f6590600160a01b900460ff16600a614766565b848483818110611f8557634e487b7160e01b600052603260045260246000fd5b90506020020135611f969190614812565b611fa090836146df565b915080611fac81614883565b915050611f45565b5080611fbf87611bce565b101561200d5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610d76565b60005b848110156120ac5761209a8787878481811061203c57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906120519190614040565b60105461206990600160a01b900460ff16600a614766565b87878681811061208957634e487b7160e01b600052603260045260246000fd5b905060200201356110da9190614812565b806120a481614883565b915050612010565b50505050505050565b6000546001600160a01b031633146120df5760405162461bcd60e51b8152600401610d76906145f8565b80826011546120ee9190614812565b6120f891906146f7565b602a555050565b606060158054610cc990614848565b6000546001600160a01b031633146121385760405162461bcd60e51b8152600401610d76906145f8565b6018839055601a8290556019819055601b849055602484905560218390556023819055602282905561216e81611b6c85856128ad565b60288190556032116112235760405162461bcd60e51b815260206004820152602760248201527f546f74616c2042757920466565202073686f756c6420626520206c657373207460448201526668616e2035302560c81b6064820152608401610d76565b6000610db33384610f4885604051806060016040528060258152602001614916602591393360009081526007602090815260408083206001600160a01b038d1684529091529020549190613428565b6000546001600160a01b0316331461224b5760405162461bcd60e51b8152600401610d76906145f8565b6032805460ff1916911515919091179055565b6000610db3338484612a72565b6000546001600160a01b031633146122955760405162461bcd60e51b8152600401610d76906145f8565b600380546001600160a01b039384166001600160a01b03199182161790915560048054929093169116179055565b6000546001600160a01b031633146122ed5760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b6000546001600160a01b031633146123385760405162461bcd60e51b8152600401610d76906145f8565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561237857600080fd5b505afa15801561238c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b0919061405c565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156123f857600080fd5b505afa15801561240c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612430919061405c565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561247657600080fd5b505afa15801561248a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ae919061405c565b90506001600160a01b03811661265457816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156124f757600080fd5b505afa15801561250b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252f919061405c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561257757600080fd5b505afa15801561258b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125af919061405c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156125f757600080fd5b505af115801561260b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262f919061405c565b602c80546001600160a01b0319166001600160a01b0392909216919091179055612670565b602c80546001600160a01b0319166001600160a01b0383161790555b50602c546001600160a01b0390811660009081526020805260409020805460ff19166001179055602b8054929091166001600160a01b031990921691909117905550565b6000546001600160a01b031633146126de5760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b03166000908152600a60205260409020805460ff19166001179055565b6000546001600160a01b0316331461272c5760405162461bcd60e51b8152600401610d76906145f8565b6001600160a01b0381166127915760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d76565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600061132b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506134d4565b60008261283d57506000610db7565b60006128498385614812565b90508261285685836146f7565b1461132b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610d76565b6000806128ba83856146df565b90508381101561132b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610d76565b600061132b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613428565b6001600160a01b0383166129b05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d76565b6001600160a01b038216612a115760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d76565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316612ad65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d76565b6001600160a01b038216612b385760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d76565b60008111612b9a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610d76565b6000546001600160a01b03848116911614801590612bc657506000546001600160a01b03838116911614155b15612c2457602c54600160a81b900460ff16612c245760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610d76565b602c546000906001600160a01b0385811691161480612c505750602c546001600160a01b038481169116145b8015612c9857506001600160a01b0384166000908152600a602052604090205460ff1680612c9657506001600160a01b0383166000908152600a602052604090205460ff165b155b15612ca1575060015b6000600954118015612ce557506001600160a01b0383166000908152600b602052604090205460ff16158015612ce557506000546001600160a01b03858116911614155b8015612cff5750436009546002612cfc91906146df565b11155b15612d7357601654612d1084611bce565b612d1a90846146df565b1115612d735760405162461bcd60e51b815260206004820152602260248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d6974604482015261195960f21b6064820152608401610d76565b602854602955601b546024556001600160a01b03841660009081526008602052604090205460ff1615612e04576001600160a01b0383161580612dc357506010546001600160a01b038481169116145b612e045760405162461bcd60e51b8152602060048201526012602482015271596f752063616e206f6e6c79204275726e2160701b6044820152606401610d76565b60325460ff161561318a576001600160a01b0384166000908152602d602052604090205460ff1615612e76576001600160a01b038316600090815260208052604090205460ff1680612e6d57506001600160a01b038416600090815260208052604090205460ff165b612e7657600080fd5b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612eb957634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602b54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612f0d57600080fd5b505afa158015612f21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f45919061405c565b81600181518110612f6657634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092018101919091529085166000908152908052604090205460ff168015612fb757506001600160a01b0385166000908152602d602052604090205460ff165b8015612fcd5750602c54600160a01b900460ff16155b1561318857602b5460405163d06ca61f60e01b81526000916001600160a01b03169063d06ca61f90613005908790869060040161462d565b60006040518083038186803b15801561301d57600080fd5b505afa158015613031573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613059919081019061436a565b60018151811061307957634e487b7160e01b600052603260045260246000fd5b6020026020010151905042603154602f6000896001600160a01b03166001600160a01b03168152602001908152602001600020546130b791906146df565b10156130f9576030548111156130cc57600080fd5b6001600160a01b0386166000908152602f60209081526040808320429055602e9091529020819055613186565b6031546001600160a01b0387166000908152602f60205260409020544291613120916146df565b1115613186576030546001600160a01b0387166000908152602e602052604090205461314d9083906146df565b111561315857600080fd5b6001600160a01b0386166000908152602e6020526040812080548392906131809084906146df565b90915550505b505b505b60255460ff1680156131a95750602c546001600160a01b038481169116145b80156131ce57506001600160a01b0384166000908152600e602052604090205460ff16155b15613270576001600160a01b03841660009081526027602052604090205442116132495760405162461bcd60e51b815260206004820152602660248201527f506c65617365207761697420666f7220636f6f6c646f776e206265747765656e6044820152652073656c6c7360d01b6064820152608401610d76565b60265461325690426146df565b6001600160a01b0385166000908152602760205260409020555b602c54600160a81b900460ff1680156132965750602c546001600160a01b038481169116145b1561331f576017548211156132f85760405162461bcd60e51b815260206004820152602260248201527f416d6f756e742047726561746572207468616e206d61782073656c6c206c696d6044820152611a5d60f21b6064820152608401610d76565b613315601e54611b6c601d54601c546128ad90919063ffffffff16565b602955601f546024555b600060095411801561333e575043600954600461333c91906146df565b115b156133495760316029555b6000600954118015613368575043600954600261336691906146df565b115b156133735760636029555b602c54600160b01b900460ff16156133b657602c54600160a81b900460ff1680156133ab5750602c546001600160a01b038581169116145b156133b65760006029555b602c54600160a01b900460ff161580156133d95750602c54600160a81b900460ff165b80156133f25750602c546001600160a01b038481169116145b1561341c57600061340230611bce565b9050602a54811061341a5750602a5461341a81613502565b505b6112238484848461362c565b6000818484111561344c5760405162461bcd60e51b8152600401610d7691906145a5565b5060006134598486614831565b95945050505050565b600080600061346f613758565b909250905061347e82826127ec565b9250505090565b600080600080600080600080600061349c8a613912565b92509250925060008060006134ba8d86866134b5613462565b613954565b919f909e50909c50959a5093985091965092945050505050565b600081836134f55760405162461bcd60e51b8152600401610d7691906145a5565b50600061345984866146f7565b602c805460ff60a01b1916600160a01b17905560285460215460009161353891600291613532918290879061282e565b906127ec565b90506000613546838361290c565b9050613551816139a4565b6021544790600090613571906135689060026127ec565b6028549061290c565b905060006135936002613532846135326021548861282e90919063ffffffff16565b905060006135b0836135326023548761282e90919063ffffffff16565b905060006135cd846135326022548861282e90919063ffffffff16565b9050478015613604576003546135ed9083906001600160a01b0316613b62565b6004546136049084906001600160a01b0316613b62565b8715613614576136148885613b98565b5050602c805460ff60a01b1916905550505050505050565b6024546029548261364257600060248190556029555b6001600160a01b0386166000908152600c602052604090205460ff16801561368357506001600160a01b0385166000908152600c602052604090205460ff16155b1561369857613693868686613c7c565b613744565b6001600160a01b0386166000908152600c602052604090205460ff161580156136d957506001600160a01b0385166000908152600c602052604090205460ff165b156136e957613693868686613da2565b6001600160a01b0386166000908152600c602052604090205460ff16801561372957506001600160a01b0385166000908152600c602052604090205460ff165b1561373957613693868686613e4b565b613744868686613ebe565b826110f15760249190915560295550505050565b6012546011546000918291825b600f548110156138e2578260056000600f848154811061379557634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061380e57508160066000600f84815481106137e757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561382457601254601154945094505050509091565b61387860056000600f848154811061384c57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054849061290c565b92506138ce60066000600f84815481106138a257634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054839061290c565b9150806138da81614883565b915050613765565b506011546012546138f2916127ec565b821015613909576012546011549350935050509091565b90939092509050565b60008060008061392185613f02565b9050600061392e86613f1e565b9050600061394682613940898661290c565b9061290c565b979296509094509092505050565b6000808080613963888661282e565b90506000613971888761282e565b9050600061397f888861282e565b9050600061399182613940868661290c565b939b939a50919850919650505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106139e757634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602b54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015613a3b57600080fd5b505afa158015613a4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a73919061405c565b81600181518110613a9457634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152602b54613aba913091168461294e565b602b5460405163791ac94760e01b81526001600160a01b039091169063791ac94790613af390859060009086903090429060040161464e565b600060405180830381600087803b158015613b0d57600080fd5b505af1158015613b21573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613b5692919061462d565b60405180910390a15050565b6040516001600160a01b0382169083156108fc029084906000818181858888f1935050505015801561141f573d6000803e3d6000fd5b602b54613bb09030906001600160a01b03168461294e565b602b546001600160a01b031663f305d719823085600080613bd96000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015613c3c57600080fd5b505af1158015613c50573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613c759190614504565b5050505050565b600080600080600080613c8e87613485565b6001600160a01b038f16600090815260066020526040902054959b50939950919750955093509150613cc0908861290c565b6001600160a01b038a16600090815260066020908152604080832093909355600590522054613cef908761290c565b6001600160a01b03808b1660009081526005602052604080822093909355908a1681522054613d1e90866128ad565b6001600160a01b038916600090815260056020526040902055613d4081613f3a565b613d4a8483613fc2565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613d8f91815260200190565b60405180910390a3505050505050505050565b600080600080600080613db487613485565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150613de6908761290c565b6001600160a01b03808b16600090815260056020908152604080832094909455918b16815260069091522054613e1c90846128ad565b6001600160a01b038916600090815260066020908152604080832093909355600590522054613d1e90866128ad565b600080600080600080613e5d87613485565b6001600160a01b038f16600090815260066020526040902054959b50939950919750955093509150613e8f908861290c565b6001600160a01b038a16600090815260066020908152604080832093909355600590522054613de6908761290c565b600080600080600080613ed087613485565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150613cef908761290c565b6000610db760646135326024548561282e90919063ffffffff16565b6000610db760646135326029548561282e90919063ffffffff16565b6000613f44613462565b90506000613f52838361282e565b30600090815260056020526040902054909150613f6f90826128ad565b30600090815260056020908152604080832093909355600c9052205460ff161561141f5730600090815260066020526040902054613fad90846128ad565b30600090815260066020526040902055505050565b601254613fcf908361290c565b601255601354613fdf90826128ad565b6013555050565b60008083601f840112613ff7578182fd5b50813567ffffffffffffffff81111561400e578182fd5b6020830191508360208260051b850101111561402957600080fd5b9250929050565b803561403b816148df565b919050565b600060208284031215614051578081fd5b813561132b816148ca565b60006020828403121561406d578081fd5b815161132b816148ca565b6000806040838503121561408a578081fd5b8235614095816148ca565b915060208301356140a5816148ca565b809150509250929050565b6000806000606084860312156140c4578081fd5b83356140cf816148ca565b925060208401356140df816148ca565b929592945050506040919091013590565b600080600080600060608688031215614107578081fd5b8535614112816148ca565b9450602086013567ffffffffffffffff8082111561412e578283fd5b61413a89838a01613fe6565b90965094506040880135915080821115614152578283fd5b5061415f88828901613fe6565b969995985093965092949392505050565b60008060008060608587031215614185578384fd5b8435614190816148ca565b9350602085013567ffffffffffffffff8111156141ab578384fd5b6141b787828801613fe6565b9598909750949560400135949350505050565b600080604083850312156141dc578182fd5b82356141e7816148ca565b915060208301356140a5816148df565b60008060408385031215614209578182fd5b8235614214816148ca565b946020939093013593505050565b60008060208385031215614234578081fd5b823567ffffffffffffffff81111561424a578182fd5b61425685828601613fe6565b90969095509350505050565b600080600060408486031215614276578081fd5b833567ffffffffffffffff81111561428c578182fd5b61429886828701613fe6565b90945092505060208401356142ac816148df565b809150509250925092565b600080604083850312156142c9578182fd5b823567ffffffffffffffff8111156142df578283fd5b8301601f810185136142ef578283fd5b803560206143046142ff836146bb565b61468a565b80838252828201915082850189848660051b8801011115614323578788fd5b8795505b8486101561434e57803561433a816148ca565b835260019590950194918301918301614327565b50955061435e9050868201614030565b93505050509250929050565b6000602080838503121561437c578182fd5b825167ffffffffffffffff811115614392578283fd5b8301601f810185136143a2578283fd5b80516143b06142ff826146bb565b80828252848201915084840188868560051b87010111156143cf578687fd5b8694505b838510156143f15780518352600194909401939185019185016143d3565b50979650505050505050565b60006020828403121561440e578081fd5b813561132b816148df565b60006020828403121561442a578081fd5b815161132b816148df565b60008060408385031215614447578182fd5b8235614214816148df565b6000806040838503121561408a578182fd5b600060208284031215614475578081fd5b5035919050565b60006020828403121561448d578081fd5b5051919050565b600080604083850312156144a6578182fd5b8235915060208301356140a5816148df565b600080604083850312156144ca578182fd5b50508035926020909101359150565b6000806000606084860312156144ed578081fd5b505081359360208301359350604090920135919050565b600080600060608486031215614518578081fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215614546578182fd5b5050823594602084013594506040840135936060013592509050565b6000815180845260208085019450808401835b8381101561459a5781516001600160a01b031687529582019590820190600101614575565b509495945050505050565b6000602080835283518082850152825b818110156145d1578581018301518582016040015282016145b5565b818111156145e25783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8281526040602082015260006146466040830184614562565b949350505050565b85815284602082015260a06040820152600061466d60a0830186614562565b6001600160a01b0394909416606083015250608001529392505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156146b3576146b36148b4565b604052919050565b600067ffffffffffffffff8211156146d5576146d56148b4565b5060051b60200190565b600082198211156146f2576146f261489e565b500190565b60008261471257634e487b7160e01b81526012600452602481fd5b500490565b600181815b808511156147525781600019048211156147385761473861489e565b8085161561474557918102915b93841c939080029061471c565b509250929050565b600061132b8383614771565b600061132b60ff8416835b60008261478057506001610db7565b8161478d57506000610db7565b81600181146147a357600281146147ad576147c9565b6001915050610db7565b60ff8411156147be576147be61489e565b50506001821b610db7565b5060208310610133831016604e8410600b84101617156147ec575081810a610db7565b6147f68383614717565b806000190482111561480a5761480a61489e565b029392505050565b600081600019048311821515161561482c5761482c61489e565b500290565b6000828210156148435761484361489e565b500390565b600181811c9082168061485c57607f821691505b6020821081141561487d57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156148975761489761489e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146112ab57600080fd5b80151581146112ab57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f721917477210a6ba343996acd86604d47f9590aaf08c53e0ddebd66a44803df64736f6c63430008040033

Deployed Bytecode Sourcemap

14399:29626:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16783:55;;;;;;;;;;;;;;;;;;;24160:25:1;;;24148:2;24133:18;16783:55:0;;;;;;;;19687:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;40044:175::-;;;;;;;;;;-1:-1:-1;40044:175:0;;;;;:::i;:::-;;:::i;:::-;;20599:161;;;;;;;;;;-1:-1:-1;20599:161:0;;;;;:::i;:::-;;:::i;:::-;;;12976:14:1;;12969:22;12951:41;;12939:2;12924:18;20599:161:0;12906:92:1;36515:244:0;;;;;;;;;;-1:-1:-1;36515:244:0;;;;;:::i;:::-;;:::i;40227:257::-;;;;;;;;;;-1:-1:-1;40227:257:0;;;;;:::i;:::-;;:::i;21720:87::-;;;;;;;;;;-1:-1:-1;21789:10:0;;21720:87;;16857:41;;;;;;;;;;-1:-1:-1;16857:41:0;;;;-1:-1:-1;;;;;16857:41:0;;;;;;-1:-1:-1;;;;;11567:32:1;;;11549:51;;11537:2;11522:18;16857:41:0;11504:102:1;19964:95:0;;;;;;;;;;-1:-1:-1;20044:7:0;;19964:95;;20768:313;;;;;;;;;;-1:-1:-1;20768:313:0;;;;;:::i;:::-;;:::i;41519:514::-;;;;;;;;;;-1:-1:-1;41519:514:0;;;;;:::i;:::-;;:::i;39859:177::-;;;;;;;;;;-1:-1:-1;39859:177:0;;;;;:::i;:::-;;:::i;17008:34::-;;;;;;;;;;-1:-1:-1;17008:34:0;;;;-1:-1:-1;;;17008:34:0;;;;;;18714:278;;;;;;;;;;-1:-1:-1;18714:278:0;;;;;:::i;:::-;;:::i;22652:253::-;;;;;;;;;;-1:-1:-1;22652:253:0;;;;;:::i;:::-;;:::i;40492:113::-;;;;;;;;;;-1:-1:-1;40492:113:0;;;;;:::i;:::-;;:::i;19873:83::-;;;;;;;;;;-1:-1:-1;19939:9:0;;-1:-1:-1;;;19939:9:0;;;;19873:83;;25292:4:1;25280:17;;;25262:36;;25250:2;25235:18;19873:83:0;25217:87:1;43240:225:0;;;;;;;;;;-1:-1:-1;43240:225:0;;;;;:::i;:::-;;:::i;23184:479::-;;;;;;;;;;-1:-1:-1;23184:479:0;;;;;:::i;:::-;;:::i;21089:218::-;;;;;;;;;;-1:-1:-1;21089:218:0;;;;;:::i;:::-;;:::i;21819:377::-;;;;;;;;;;-1:-1:-1;21819:377:0;;;;;:::i;:::-;;:::i;36924:118::-;;;;;;;;;;-1:-1:-1;36924:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;37011:23:0;36987:4;37011:23;;;:14;:23;;;;;;;;;36924:118;16023:36;;;;;;;;;;;;;;;;43774:207;;;;;;;;;;-1:-1:-1;43774:207:0;;;;;:::i;:::-;;:::i;22208:436::-;;;;;;;;;;-1:-1:-1;22208:436:0;;;;;:::i;:::-;;:::i;43473:293::-;;;;;;;;;;-1:-1:-1;43473:293:0;;;;;:::i;:::-;;:::i;37054:215::-;;;;;;;;;;-1:-1:-1;37054:215:0;;;;;:::i;:::-;;:::i;16905:28::-;;;;;;;;;;-1:-1:-1;16905:28:0;;;;-1:-1:-1;;;;;16905:28:0;;;19006:102;;;;;;;;;;-1:-1:-1;19006:102:0;;;;;:::i;:::-;;:::i;36806:105::-;;;;;;;;;;-1:-1:-1;36806:105:0;;;;;:::i;:::-;;:::i;15261:49::-;;;;;;;;;;-1:-1:-1;15261:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;39369:129;;;;;;;;;;-1:-1:-1;39369:129:0;;;;;:::i;:::-;;:::i;22913:263::-;;;;;;;;;;-1:-1:-1;22913:263:0;;;;;:::i;:::-;;:::i;15945:29::-;;;;;;;;;;;;;;;;42653:448;;;;;;;;;;-1:-1:-1;42653:448:0;;;;;:::i;:::-;;:::i;20067:198::-;;;;;;;;;;-1:-1:-1;20067:198:0;;;;;:::i;:::-;;:::i;6030:148::-;;;;;;;;;;;;;:::i;38692:198::-;;;;;;;;;;-1:-1:-1;38692:198:0;;;;;:::i;:::-;;:::i;16531:46::-;;;;;;;;;;;;;;;;39716:135;;;;;;;;;;-1:-1:-1;39716:135:0;;;;;:::i;:::-;;:::i;17273:42::-;;;;;;;;;;;;;;;;16191:37;;;;;;;;;;;;;;;;15756:57;;;;;;;;;;;;;;;;15827:55;;;;;;;;;;;;;;;;39512:188;;;;;;;;;;-1:-1:-1;39512:188:0;;;;;:::i;:::-;;:::i;40805:706::-;;;;;;;;;;-1:-1:-1;40805:706:0;;;;;:::i;:::-;;:::i;16068:36::-;;;;;;;;;;;;;;;;21592:120;;;;;;;;;;-1:-1:-1;21592:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;21684:20:0;21660:4;21684:20;;;:11;:20;;;;;;;;;21592:120;5805:79;;;;;;;;;;-1:-1:-1;5843:7:0;5870:6;-1:-1:-1;;;;;5870:6:0;5805:79;;40613:178;;;;;;;;;;-1:-1:-1;40613:178:0;;;;;:::i;:::-;;:::i;17322:43::-;;;;;;;;;;-1:-1:-1;17322:43:0;;;;;;;;19778:87;;;;;;;;;;;;;:::i;42050:595::-;;;;;;;;;;-1:-1:-1;42050:595:0;;;;;:::i;:::-;;:::i;21315:269::-;;;;;;;;;;-1:-1:-1;21315:269:0;;;;;:::i;:::-;;:::i;43109:123::-;;;;;;;;;;-1:-1:-1;43109:123:0;;;;;:::i;:::-;;:::i;20273:167::-;;;;;;;;;;-1:-1:-1;20273:167:0;;;;;:::i;:::-;;:::i;16489:35::-;;;;;;;;;;-1:-1:-1;16489:35:0;;;;;;;;14996:29;;;;;;;;;;;;;;;;15981:35;;;;;;;;;;;;;;;;16111:36;;;;;;;;;;;;;;;;16154:30;;;;;;;;;;;;;;;;17208:49;;;;;;;;;;;;;;;;39030:191;;;;;;;;;;-1:-1:-1;39030:191:0;;;;;:::i;:::-;;:::i;15898:35::-;;;;;;;;;;;;;;;;20448:143;;;;;;;;;;-1:-1:-1;20448:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;20556:18:0;;;20529:7;20556:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;20448:143;38908:110;;;;;;;;;;-1:-1:-1;38908:110:0;;;;;:::i;:::-;;:::i;19116:563::-;;;;;;;;;;-1:-1:-1;19116:563:0;;;;;:::i;:::-;;:::i;38572:112::-;;;;;;;;;;-1:-1:-1;38572:112:0;;;;;:::i;:::-;;:::i;6186:244::-;;;;;;;;;;-1:-1:-1;6186:244:0;;;;;:::i;:::-;;:::i;16970:31::-;;;;;;;;;;-1:-1:-1;16970:31:0;;;;-1:-1:-1;;;16970:31:0;;;;;;19687:83;19724:13;19757:5;19750:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19687:83;:::o;40044:175::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;;;;;;;;;40165:46:::1;40187:23;40165:17;40177:4;40165:7;;:11;;:17;;;;:::i;:::-;:21:::0;::::1;:46::i;:::-;40147:15;:64:::0;-1:-1:-1;40044:175:0:o;20599:161::-;20674:4;20691:39;189:10;20714:7;20723:6;20691:8;:39::i;:::-;-1:-1:-1;20748:4:0;20599:161;;;;;:::o;36515:244::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;36637:8:::1;36622:11;:23;;36614:53;;;::::0;-1:-1:-1;;;36614:53:0;;14452:2:1;36614:53:0::1;::::0;::::1;14434:21:1::0;14491:2;14471:18;;;14464:30;-1:-1:-1;;;14510:18:1;;;14503:47;14567:18;;36614:53:0::1;14424:167:1::0;36614:53:0::1;36678:15;:27:::0;;-1:-1:-1;;36678:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;36716:21:::1;:35:::0;36515:244::o;40227:257::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;40360:1:::1;40336:23;:25;40328:74;;;::::0;-1:-1:-1;;;40328:74:0;;19421:2:1;40328:74:0::1;::::0;::::1;19403:21:1::0;19460:2;19440:18;;;19433:30;19499:34;19479:18;;;19472:62;-1:-1:-1;;;19550:18:1;;;19543:35;19595:19;;40328:74:0::1;19393:227:1::0;40328:74:0::1;40430:46;40452:23;40430:17;40442:4;40430:7;;:11;;:17;;;;:::i;:46::-;40414:13;:62:::0;-1:-1:-1;40227:257:0:o;20768:313::-;20866:4;20883:36;20893:6;20901:9;20912:6;20883:9;:36::i;:::-;20930:121;20939:6;189:10;20961:89;20999:6;20961:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20961:19:0;;;;;;:11;:19;;;;;;;;189:10;20961:33;;;;;;;;;;:37;:89::i;:::-;20930:8;:121::i;:::-;-1:-1:-1;21069:4:0;20768:313;;;;;:::o;41519:514::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;41669:4:::1;41650:23:::0;::::1;41642:81;;;::::0;-1:-1:-1;;;41642:81:0;;19827:2:1;41642:81:0::1;::::0;::::1;19809:21:1::0;19866:2;19846:18;;;19839:30;19905:34;19885:18;;;19878:62;-1:-1:-1;;;19956:18:1;;;19949:44;20010:19;;41642:81:0::1;19799:236:1::0;41642:81:0::1;41786:9;::::0;41759:12:::1;::::0;41798:9;;41782:13:::1;::::0;-1:-1:-1;;;41786:9:0;::::1;;;41782:2;:13;:::i;:::-;41774:21;::::0;:6;:21:::1;:::i;:::-;:40;;;;:::i;:::-;41759:55;;41854:4;41835:15;41845:4;41835:9;:15::i;:::-;:23;;41827:63;;;::::0;-1:-1:-1;;;41827:63:0;;18705:2:1;41827:63:0::1;::::0;::::1;18687:21:1::0;18744:2;18724:18;;;18717:30;18783:29;18763:18;;;18756:57;18830:18;;41827:63:0::1;18677:177:1::0;41827:63:0::1;41907:6;41903:123;41917:20:::0;;::::1;41903:123;;;41958:52;41968:4;41973:9;;41983:1;41973:12;;;;;-1:-1:-1::0;;;41973:12:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41999:9;::::0;41995:13:::1;::::0;-1:-1:-1;;;41999:9:0;::::1;;;41995:2;:13;:::i;:::-;41987:21;::::0;:6;:21:::1;:::i;:::-;41958:9;:52::i;:::-;41939:3:::0;::::1;::::0;::::1;:::i;:::-;;;;41903:123;;;;6009:1;41519:514:::0;;;;:::o;39859:177::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;39960:30:::1;::::0;-1:-1:-1;;;39960:30:0;;39984:4:::1;39960:30;::::0;::::1;11549:51:1::0;39942:15:0::1;::::0;-1:-1:-1;;;;;39960:15:0;::::1;::::0;::::1;::::0;11522:18:1;;39960:30:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40001:27;::::0;-1:-1:-1;;;40001:27:0;;-1:-1:-1;;;;;12112:32:1;;;40001:27:0::1;::::0;::::1;12094:51:1::0;12161:18;;;12154:34;;;39942:48:0;;-1:-1:-1;40001:14:0;;::::1;::::0;::::1;::::0;12067:18:1;;40001:27:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6009:1;39859:177:::0;;:::o;18714:278::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;18781:11:::1;:21:::0;;-1:-1:-1;;;;18781:21:0::1;-1:-1:-1::0;;;18781:21:0;::::1;;;;::::0;;18813:32:::1;18839:4;18813:17;:32::i;:::-;18874:13;::::0;18856:32:::1;::::0;-1:-1:-1;;;;;18874:13:0::1;18856:17;:32::i;:::-;18902:11;::::0;-1:-1:-1;;;18902:11:0;::::1;;;:30:::0;::::1;;;-1:-1:-1::0;18917:10:0::1;::::0;:15;18902:30:::1;18899:86;;;18961:12;18948:10;:25:::0;18899:86:::1;18714:278:::0;:::o;22652:253::-;22718:7;22757;;22746;:18;;22738:73;;;;-1:-1:-1;;;22738:73:0;;16364:2:1;22738:73:0;;;16346:21:1;16403:2;16383:18;;;16376:30;16442:34;16422:18;;;16415:62;-1:-1:-1;;;16493:18:1;;;16486:40;16543:19;;22738:73:0;16336:232:1;22738:73:0;22822:19;22845:10;:8;:10::i;:::-;22822:33;-1:-1:-1;22873:24:0;:7;22822:33;22873:11;:24::i;:::-;22866:31;22652:253;-1:-1:-1;;;22652:253:0:o;40492:113::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40565:25:0::1;;::::0;;;:18:::1;:25;::::0;;;;:32;;-1:-1:-1;;40565:32:0::1;40593:4;40565:32;::::0;;40492:113::o;43240:225::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;43349:9:::1;43344:114;43368:8;:15;43364:1;:19;43344:114;;;43439:7;43405:18;:31;43424:8;43433:1;43424:11;;;;;;-1:-1:-1::0;;;43424:11:0::1;;;;;;;;;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;43405:31:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;43405:31:0;:41;;-1:-1:-1;;43405:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;43385:3;::::1;::::0;::::1;:::i;:::-;;;;43344:114;;;;43240:225:::0;;:::o;23184:479::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23266:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;23258:60;;;::::0;-1:-1:-1;;;23258:60:0;;18349:2:1;23258:60:0::1;::::0;::::1;18331:21:1::0;18388:2;18368:18;;;18361:30;18427:29;18407:18;;;18400:57;18474:18;;23258:60:0::1;18321:177:1::0;23258:60:0::1;23334:9;23329:327;23353:9;:16:::0;23349:20;::::1;23329:327;;;23411:7;-1:-1:-1::0;;;;;23395:23:0::1;:9;23405:1;23395:12;;;;;;-1:-1:-1::0;;;23395:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;23395:12:0::1;:23;23391:254;;;23454:9;23464:16:::0;;:20:::1;::::0;23483:1:::1;::::0;23464:20:::1;:::i;:::-;23454:31;;;;;;-1:-1:-1::0;;;23454:31:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;23439:9:::1;:12:::0;;-1:-1:-1;;;;;23454:31:0;;::::1;::::0;23449:1;;23439:12;::::1;;;-1:-1:-1::0;;;23439:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;23439:46:0::1;-1:-1:-1::0;;;;;23439:46:0;;::::1;;::::0;;23504:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;23543:11:::1;:20:::0;;;;:28;;-1:-1:-1;;23543:28:0::1;::::0;;23590:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;23590:15:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;23590:15:0;;;;;-1:-1:-1;;;;;;23590:15:0::1;::::0;;;;;23329:327:::1;23184:479:::0;:::o;23391:254::-:1;23371:3:::0;::::1;::::0;::::1;:::i;:::-;;;;23329:327;;;;23184:479:::0;:::o;21089:218::-;189:10;21177:4;21226:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;21226:34:0;;;;;;;;;;21177:4;;21194:83;;21217:7;;21226:50;;21265:10;21226:38;:50::i;21819:377::-;189:10;21871:14;21920:19;;;:11;:19;;;;;;;;21919:20;21911:77;;;;-1:-1:-1;;;21911:77:0;;23803:2:1;21911:77:0;;;23785:21:1;23842:2;23822:18;;;23815:30;23881:34;23861:18;;;23854:62;-1:-1:-1;;;23932:18:1;;;23925:42;23984:19;;21911:77:0;23775:234:1;21911:77:0;22000:15;22024:19;22035:7;22024:10;:19::i;:::-;-1:-1:-1;;;;;;;;;22072:15:0;;;;;;:7;:15;;;;;;21999:44;;-1:-1:-1;22072:28:0;;:15;-1:-1:-1;21999:44:0;22072:19;:28::i;:::-;-1:-1:-1;;;;;22054:15:0;;;;;;:7;:15;;;;;:46;22121:7;;:20;;22133:7;22121:11;:20::i;:::-;22111:7;:30;22165:10;;:23;;22180:7;22165:14;:23::i;:::-;22152:10;:36;-1:-1:-1;;;21819:377:0:o;43774:207::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;43903:10:::1;43885:14;43889:10:::0;43885:2:::1;:14;:::i;:::-;43877:22;::::0;:5;:22:::1;:::i;:::-;:36;;43869:45;;;::::0;::::1;;43959:14;43963:10:::0;43959:2:::1;:14;:::i;:::-;43951:22;::::0;:5;:22:::1;:::i;:::-;43925:23;:48:::0;-1:-1:-1;;43774:207:0:o;22208:436::-;22298:7;22337;;22326;:18;;22318:62;;;;-1:-1:-1;;;22318:62:0;;19061:2:1;22318:62:0;;;19043:21:1;19100:2;19080:18;;;19073:30;19139:33;19119:18;;;19112:61;19190:18;;22318:62:0;19033:181:1;22318:62:0;22396:17;22391:246;;22431:15;22455:19;22466:7;22455:10;:19::i;:::-;-1:-1:-1;22430:44:0;;-1:-1:-1;22489:14:0;;-1:-1:-1;;;;;22489:14:0;22391:246;22538:23;22569:19;22580:7;22569:10;:19::i;:::-;-1:-1:-1;22536:52:0;;-1:-1:-1;22603:22:0;;-1:-1:-1;;;;;22603:22:0;43473:293;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;43618:10:::1;43600:14;43604:10:::0;43600:2:::1;:14;:::i;:::-;43592:22;::::0;:5;:22:::1;:::i;:::-;:36;;43584:45;;;::::0;::::1;;43656:8;43648:4;:16;;43640:25;;;::::0;::::1;;43710:14;43714:10:::0;43710:2:::1;:14;:::i;:::-;43702:22;::::0;:5;:22:::1;:::i;:::-;43676:23;:48:::0;43735:16:::1;:23:::0;-1:-1:-1;;43473:293:0:o;37054:215::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;37160:9:::1;37155:107;37171:20:::0;;::::1;37155:107;;;37244:6;37213:14;:28;37228:9;;37238:1;37228:12;;;;;-1:-1:-1::0;;;37228:12:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;37213:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;37213:28:0;:37;;-1:-1:-1;;37213:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;37193:3:::1;::::0;::::1;:::i;:::-;;;37155:107;;19006:102:::0;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;19078:14:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;19078:22:0::1;-1:-1:-1::0;;;;19078:22:0;;::::1;::::0;;;::::1;::::0;;19006:102::o;36806:105::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;36876:15:::1;:27:::0;;-1:-1:-1;;36876:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;36806:105::o;39369:129::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39457:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;39457:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;39369:129::o;22913:263::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22992:16:0;::::1;23011:1;22992:16:::0;;;:7:::1;:16;::::0;;;;;:20;22989:108:::1;;-1:-1:-1::0;;;;;23068:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;23048:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;23029:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;22989:108:::1;-1:-1:-1::0;;;;;23107:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;23107:27:0::1;23130:4;23107:27:::0;;::::1;::::0;;;23145:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;23145:23:0::1;::::0;;::::1;::::0;;22913:263::o;42653:448::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;42790:17:::1;:33:::0;;;42834:17:::1;:33:::0;;;42878:11:::1;:21:::0;;;42910:18:::1;:34:::0;;;43048:2:::1;42966:81;42930:14:::0;42966:57:::1;42892:7:::0;42966:57;42810:13;42854;42966:21:::1;:40::i;:::-;:44:::0;::::1;:57::i;:81::-;:84;42958:135;;;::::0;-1:-1:-1;;;42958:135:0;;21821:2:1;42958:135:0::1;::::0;::::1;21803:21:1::0;21860:2;21840:18;;;21833:30;21899:34;21879:18;;;21872:62;-1:-1:-1;;;21950:18:1;;;21943:36;21996:19;;42958:135:0::1;21793:228:1::0;20067:198:0;-1:-1:-1;;;;;20157:20:0;;20133:7;20157:20;;;:11;:20;;;;;;;;20153:49;;;-1:-1:-1;;;;;;20186:16:0;;;;;:7;:16;;;;;;;20067:198::o;20153:49::-;-1:-1:-1;;;;;20240:16:0;;;;;;:7;:16;;;;;;20220:37;;:19;:37::i;6030:148::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;6137:1:::1;6121:6:::0;;6100:40:::1;::::0;-1:-1:-1;;;;;6121:6:0;;::::1;::::0;6100:40:::1;::::0;6137:1;;6100:40:::1;6168:1;6151:19:::0;;-1:-1:-1;;;;;;6151:19:0::1;::::0;;6030:148::o;38692:198::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;38779:9:::1;38774:109;38790:20:::0;;::::1;38774:109;;;38867:4;38832:18;:32;38851:9;;38861:1;38851:12;;;;;-1:-1:-1::0;;;38851:12:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;38832:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;38832:32:0;:39;;-1:-1:-1;;38832:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;38812:3:::1;::::0;::::1;:::i;:::-;;;38774:109;;39716:135:::0;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;39801:42:::1;::::0;-1:-1:-1;;;;;39801:19:0;::::1;::::0;39821:21:::1;39801:42:::0;::::1;;;::::0;::::1;::::0;;;39821:21;39801:19;:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;39512:188:::0;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;39599:9:::1;39594:99;39610:20:::0;;::::1;39594:99;;;39677:4;39652:10;:24;39663:9;;39673:1;39663:12;;;;;-1:-1:-1::0;;;39663:12:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;39652:24:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;39652:24:0;:29;;-1:-1:-1;;39652:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;39632:3:::1;::::0;::::1;:::i;:::-;;;39594:99;;40805:706:::0;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;40962:3:::1;40943:22:::0;::::1;40935:79;;;::::0;-1:-1:-1;;;40935:79:0;;22228:2:1;40935:79:0::1;::::0;::::1;22210:21:1::0;22267:2;22247:18;;;22240:30;22306:34;22286:18;;;22279:62;-1:-1:-1;;;22357:18:1;;;22350:43;22410:19;;40935:79:0::1;22200:235:1::0;40935:79:0::1;41056:33:::0;;::::1;41048:85;;;::::0;-1:-1:-1;;;41048:85:0;;14798:2:1;41048:85:0::1;::::0;::::1;14780:21:1::0;14837:2;14817:18;;;14810:30;14876:34;14856:18;;;14849:62;-1:-1:-1;;;14927:18:1;;;14920:38;14975:19;;41048:85:0::1;14770:230:1::0;41048:85:0::1;41146:12;41179:6:::0;41175:108:::1;41189:20:::0;;::::1;41175:108;;;41261:9;::::0;41257:13:::1;::::0;-1:-1:-1;;;41261:9:0;::::1;;;41257:2;:13;:::i;:::-;41245:6;;41252:1;41245:9;;;;;-1:-1:-1::0;;;41245:9:0::1;;;;;;;;;;;;;;;:25;;;;:::i;:::-;41237:34;::::0;:4;:34:::1;:::i;:::-;41230:41:::0;-1:-1:-1;41211:3:0;::::1;::::0;::::1;:::i;:::-;;;;41175:108;;;;41322:4;41303:15;41313:4;41303:9;:15::i;:::-;:23;;41295:63;;;::::0;-1:-1:-1;;;41295:63:0;;18705:2:1;41295:63:0::1;::::0;::::1;18687:21:1::0;18744:2;18724:18;;;18717:30;18783:29;18763:18;;;18756:57;18830:18;;41295:63:0::1;18677:177:1::0;41295:63:0::1;41375:6;41371:133;41385:20:::0;;::::1;41371:133;;;41426:56;41436:4;41441:9;;41451:1;41441:12;;;;;-1:-1:-1::0;;;41441:12:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41471:9;::::0;41467:13:::1;::::0;-1:-1:-1;;;41471:9:0;::::1;;;41467:2;:13;:::i;:::-;41455:6;;41462:1;41455:9;;;;;-1:-1:-1::0;;;41455:9:0::1;;;;;;;;;;;;;;;:25;;;;:::i;41426:56::-;41407:3:::0;::::1;::::0;::::1;:::i;:::-;;;;41371:133;;;;6009:1;40805:706:::0;;;;;:::o;40613:178::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;40767:16:::1;40747;40737:7;;:26;;;;:::i;:::-;40736:47;;;;:::i;:::-;40720:13;:63:::0;-1:-1:-1;;40613:178:0:o;19778:87::-;19817:13;19850:7;19843:14;;;;;:::i;42050:595::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;42196:16:::1;:32:::0;;;42239:16:::1;:32:::0;;;42282:10:::1;:20:::0;;;42313:17:::1;:33:::0;;;42359:13:::1;:29:::0;;;42399:12:::1;:28:::0;;;42438:6:::1;:16:::0;;;42465:12:::1;:28:::0;;;42517:42:::1;42295:7:::0;42517:30:::1;42215:13:::0;42258;42517:16:::1;:30::i;:42::-;42506:8;:53:::0;;;42589:2:::1;-1:-1:-1::0;42572:63:0::1;;;::::0;-1:-1:-1;;;42572:63:0;;17585:2:1;42572:63:0::1;::::0;::::1;17567:21:1::0;17624:2;17604:18;;;17597:30;17663:34;17643:18;;;17636:62;-1:-1:-1;;;17714:18:1;;;17707:37;17761:19;;42572:63:0::1;17557:229:1::0;21315:269:0;21408:4;21425:129;189:10;21448:7;21457:96;21496:15;21457:96;;;;;;;;;;;;;;;;;189:10;21457:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;21457:34:0;;;;;;;;;;;;:38;:96::i;43109:123::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;43190:24:::1;:34:::0;;-1:-1:-1;;43190:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;43109:123::o;20273:167::-;20351:4;20368:42;189:10;20392:9;20403:6;20368:9;:42::i;39030:191::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;39128:15:::1;:43:::0;;-1:-1:-1;;;;;39128:43:0;;::::1;-1:-1:-1::0;;;;;;39128:43:0;;::::1;;::::0;;;39182:9:::1;:31:::0;;;;;::::1;::::0;::::1;;::::0;;39030:191::o;38908:110::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38975:27:0::1;39005:5;38975:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;38975:35:0::1;::::0;;38908:110::o;19116:563::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;19189:29:::1;19240:9;19189:61;;19261:16;19298:10;-1:-1:-1::0;;;;;19298:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19280:47:0::1;;19336:4;19343:10;-1:-1:-1::0;;;;;19343:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19280:81;::::0;-1:-1:-1;;;;;;19280:81:0::1;::::0;;;;;;-1:-1:-1;;;;;11841:15:1;;;19280:81:0::1;::::0;::::1;11823:34:1::0;11893:15;;11873:18;;;11866:43;11758:18;;19280:81:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19261:100:::0;-1:-1:-1;;;;;;19376:22:0;::::1;19372:221;;19449:10;-1:-1:-1::0;;;;;19449:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19431:50:0::1;;19490:4;19497:10;-1:-1:-1::0;;;;;19497:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19431:84;::::0;-1:-1:-1;;;;;;19431:84:0::1;::::0;;;;;;-1:-1:-1;;;;;11841:15:1;;;19431:84:0::1;::::0;::::1;11823:34:1::0;11893:15;;11873:18;;;11866:43;11758:18;;19431:84:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19415:13;:100:::0;;-1:-1:-1;;;;;;19415:100:0::1;-1:-1:-1::0;;;;;19415:100:0;;;::::1;::::0;;;::::1;::::0;;19372:221:::1;;;19557:13;:24:::0;;-1:-1:-1;;;;;;19557:24:0::1;-1:-1:-1::0;;;;;19557:24:0;::::1;;::::0;;19372:221:::1;-1:-1:-1::0;19611:13:0::1;::::0;-1:-1:-1;;;;;19611:13:0;;::::1;19603:22;::::0;;;:7:::1;:22:::0;;;;;:29;;-1:-1:-1;;19603:29:0::1;19628:4;19603:29;::::0;;19643:15:::1;:28:::0;;;;;::::1;-1:-1:-1::0;;;;;;19643:28:0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;19116:563:0:o;38572:112::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38642:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;38642:34:0::1;38672:4;38642:34;::::0;;38572:112::o;6186:244::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6275:22:0;::::1;6267:73;;;::::0;-1:-1:-1;;;6267:73:0;;16775:2:1;6267:73:0::1;::::0;::::1;16757:21:1::0;16814:2;16794:18;;;16787:30;16853:34;16833:18;;;16826:62;-1:-1:-1;;;16904:18:1;;;16897:36;16950:19;;6267:73:0::1;16747:228:1::0;6267:73:0::1;6377:6;::::0;;6356:38:::1;::::0;-1:-1:-1;;;;;6356:38:0;;::::1;::::0;6377:6;::::1;::::0;6356:38:::1;::::0;::::1;6405:6;:17:::0;;-1:-1:-1;;;;;;6405:17:0::1;-1:-1:-1::0;;;;;6405:17:0;;;::::1;::::0;;;::::1;::::0;;6186:244::o;1964:132::-;2022:7;2049:39;2053:1;2056;2049:39;;;;;;;;;;;;;;;;;:3;:39::i;1704:250::-;1762:7;1786:6;1782:47;;-1:-1:-1;1816:1:0;1809:8;;1782:47;1841:9;1853:5;1857:1;1853;:5;:::i;:::-;1841:17;-1:-1:-1;1886:1:0;1877:5;1881:1;1841:17;1877:5;:::i;:::-;:10;1869:56;;;;-1:-1:-1;;;1869:56:0;;20242:2:1;1869:56:0;;;20224:21:1;20281:2;20261:18;;;20254:30;20320:34;20300:18;;;20293:62;-1:-1:-1;;;20371:18:1;;;20364:31;20412:19;;1869:56:0;20214:223:1;1171:181:0;1229:7;;1261:5;1265:1;1261;:5;:::i;:::-;1249:17;;1290:1;1285;:6;;1277:46;;;;-1:-1:-1;;;1277:46:0;;17993:2:1;1277:46:0;;;17975:21:1;18032:2;18012:18;;;18005:30;18071:29;18051:18;;;18044:57;18118:18;;1277:46:0;17965:177:1;1360:136:0;1418:7;1445:43;1449:1;1452;1445:43;;;;;;;;;;;;;;;;;:3;:43::i;23671:337::-;-1:-1:-1;;;;;23764:19:0;;23756:68;;;;-1:-1:-1;;;23756:68:0;;23045:2:1;23756:68:0;;;23027:21:1;23084:2;23064:18;;;23057:30;23123:34;23103:18;;;23096:62;-1:-1:-1;;;23174:18:1;;;23167:34;23218:19;;23756:68:0;23017:226:1;23756:68:0;-1:-1:-1;;;;;23843:21:0;;23835:68;;;;-1:-1:-1;;;23835:68:0;;17182:2:1;23835:68:0;;;17164:21:1;17221:2;17201:18;;;17194:30;17260:34;17240:18;;;17233:62;-1:-1:-1;;;17311:18:1;;;17304:32;17353:19;;23835:68:0;17154:224:1;23835:68:0;-1:-1:-1;;;;;23916:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;23968:32;;24160:25:1;;;23968:32:0;;24133:18:1;23968:32:0;;;;;;;23671:337;;;:::o;24016:3718::-;-1:-1:-1;;;;;24138:18:0;;24130:68;;;;-1:-1:-1;;;24130:68:0;;21415:2:1;24130:68:0;;;21397:21:1;21454:2;21434:18;;;21427:30;21493:34;21473:18;;;21466:62;-1:-1:-1;;;21544:18:1;;;21537:35;21589:19;;24130:68:0;21387:227:1;24130:68:0;-1:-1:-1;;;;;24217:16:0;;24209:64;;;;-1:-1:-1;;;24209:64:0;;14048:2:1;24209:64:0;;;14030:21:1;14087:2;14067:18;;;14060:30;14126:34;14106:18;;;14099:62;-1:-1:-1;;;14177:18:1;;;14170:33;14220:19;;24209:64:0;14020:225:1;24209:64:0;24301:1;24292:6;:10;24284:64;;;;-1:-1:-1;;;24284:64:0;;21005:2:1;24284:64:0;;;20987:21:1;21044:2;21024:18;;;21017:30;21083:34;21063:18;;;21056:62;-1:-1:-1;;;21134:18:1;;;21127:39;21183:19;;24284:64:0;20977:231:1;24284:64:0;5843:7;5870:6;-1:-1:-1;;;;;24363:14:0;;;5870:6;;24363:14;;;;:30;;-1:-1:-1;5843:7:0;5870:6;-1:-1:-1;;;;;24381:12:0;;;5870:6;;24381:12;;24363:30;24359:84;;;24403:11;;-1:-1:-1;;;24403:11:0;;;;24395:48;;;;-1:-1:-1;;;24395:48:0;;23450:2:1;24395:48:0;;;23432:21:1;23489:2;23469:18;;;23462:30;23528:26;23508:18;;;23501:54;23572:18;;24395:48:0;23422:174:1;24395:48:0;24582:13;;24505:12;;-1:-1:-1;;;;;24576:19:0;;;24582:13;;24576:19;;:40;;-1:-1:-1;24603:13:0;;-1:-1:-1;;;;;24599:17:0;;;24603:13;;24599:17;24576:40;24575:99;;;;-1:-1:-1;;;;;;24623:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;24651:22:0;;;;;;:18;:22;;;;;;;;24623:50;24621:53;24575:99;24570:148;;;-1:-1:-1;24702:4:0;24570:148;24744:1;24733:10;;:12;:59;;;;-1:-1:-1;;;;;;24751:22:0;;;;;;:18;:22;;;;;;;;24750:23;:41;;;;-1:-1:-1;5843:7:0;5870:6;-1:-1:-1;;;;;24777:14:0;;;5870:6;;24777:14;;24750:41;24733:97;;;;;24817:12;24799:10;;24812:1;24799:14;;;;:::i;:::-;24798:31;24796:34;24733:97;24730:238;;;24881:15;;24866:13;24876:2;24866:9;:13::i;:::-;24858:21;;:6;:21;:::i;:::-;:38;;24850:106;;;;-1:-1:-1;;;24850:106:0;;22642:2:1;24850:106:0;;;22624:21:1;22681:2;22661:18;;;22654:30;22720:34;22700:18;;;22693:62;-1:-1:-1;;;22771:18:1;;;22764:32;22813:19;;24850:106:0;22614:224:1;24850:106:0;24999:8;;24980:18;:27;25032:17;;25018:13;:31;-1:-1:-1;;;;;25073:20:0;;-1:-1:-1;25073:20:0;;;:14;:20;;;;;;;;25070:113;;;-1:-1:-1;;;;;25117:16:0;;;;:30;;-1:-1:-1;25143:4:0;;-1:-1:-1;;;;;25137:10:0;;;25143:4;;25137:10;25117:30;25109:62;;;;-1:-1:-1;;;25109:62:0;;15207:2:1;25109:62:0;;;15189:21:1;15246:2;15226:18;;;15219:30;-1:-1:-1;;;15265:18:1;;;15258:48;15323:18;;25109:62:0;15179:168:1;25109:62:0;25198:24;;;;25195:1079;;;-1:-1:-1;;;;;25246:24:0;;;;;;:18;:24;;;;;;;;25243:109;;;-1:-1:-1;;;;;25303:11:0;;;;;;:7;:11;;;;;;;;;:28;;-1:-1:-1;;;;;;25318:13:0;;;;;;:7;:13;;;;;;;;25303:28;25295:37;;;;;;25394:16;;;25408:1;25394:16;;;;;;;;25370:21;;25394:16;;;;;;;;;;-1:-1:-1;25394:16:0;25370:40;;25447:4;25429;25434:1;25429:7;;;;;;-1:-1:-1;;;25429:7:0;;;;;;;;;-1:-1:-1;;;;;25429:23:0;;;:7;;;;;;;;;;:23;;;;25481:15;;:22;;;-1:-1:-1;;;25481:22:0;;;;:15;;;;;:20;;:22;;;;;25429:7;;25481:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25471:4;25476:1;25471:7;;;;;;-1:-1:-1;;;25471:7:0;;;;;;;;;-1:-1:-1;;;;;25471:32:0;;;:7;;;;;;;;;;:32;;;;25527:11;;;;;;;;;;;;;;;;:39;;;;-1:-1:-1;;;;;;25542:24:0;;;;;;:18;:24;;;;;;;;25527:39;:50;;;;-1:-1:-1;25571:6:0;;-1:-1:-1;;;25571:6:0;;;;25570:7;25527:50;25524:739;;;25623:15;;:43;;-1:-1:-1;;;25623:43:0;;25602:18;;-1:-1:-1;;;;;25623:15:0;;:29;;:43;;25653:6;;25661:4;;25623:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25623:43:0;;;;;;;;;;;;:::i;:::-;25667:1;25623:46;;;;;;-1:-1:-1;;;25623:46:0;;;;;;;;;;;;;;;25602:67;;25742:15;25723:16;;25695:19;:25;25715:4;-1:-1:-1;;;;;25695:25:0;-1:-1:-1;;;;;25695:25:0;;;;;;;;;;;;;:44;;;;:::i;:::-;:62;25692:552;;;25808:23;;25794:10;:37;;25786:46;;;;;;-1:-1:-1;;;;;25859:25:0;;;;;;:19;:25;;;;;;;;25887:15;25859:43;;25929:15;:21;;;;;:34;;;25692:552;;;26025:16;;-1:-1:-1;;;;;25997:25:0;;;;;;:19;:25;;;;;;26044:15;;25997:44;;;:::i;:::-;:62;25993:251;;;26134:23;;-1:-1:-1;;;;;26096:21:0;;;;;;:15;:21;;;;;;:34;;26120:10;;26096:34;:::i;:::-;:61;;26088:70;;;;;;-1:-1:-1;;;;;26185:21:0;;;;;;:15;:21;;;;;:35;;26210:10;;26185:21;:35;;26210:10;;26185:35;:::i;:::-;;;;-1:-1:-1;;25993:251:0;25524:739;;25195:1079;;26289:15;;;;:38;;;;-1:-1:-1;26314:13:0;;-1:-1:-1;;;;;26308:19:0;;;26314:13;;26308:19;26289:38;:65;;;;-1:-1:-1;;;;;;26332:22:0;;;;;;:16;:22;;;;;;;;26331:23;26289:65;26286:260;;;-1:-1:-1;;;;;26378:19:0;;;;;;:13;:19;;;;;;26400:15;-1:-1:-1;26370:88:0;;;;-1:-1:-1;;;26370:88:0;;15957:2:1;26370:88:0;;;15939:21:1;15996:2;15976:18;;;15969:30;16035:34;16015:18;;;16008:62;-1:-1:-1;;;16086:18:1;;;16079:36;16132:19;;26370:88:0;15929:228:1;26370:88:0;26513:21;;26495:39;;:15;:39;:::i;:::-;-1:-1:-1;;;;;26473:19:0;;;;;;:13;:19;;;;;:61;26286:260;26561:11;;-1:-1:-1;;;26561:11:0;;;;:34;;;;-1:-1:-1;26582:13:0;;-1:-1:-1;;;;;26576:19:0;;;26582:13;;26576:19;26561:34;26558:279;;;26635:13;;26627:6;:21;;26619:67;;;;-1:-1:-1;;;26619:67:0;;15554:2:1;26619:67:0;;;15536:21:1;15593:2;15573:18;;;15566:30;15632:34;15612:18;;;15605:62;-1:-1:-1;;;15683:18:1;;;15676:32;15725:19;;26619:67:0;15526:224:1;26619:67:0;26721:57;26766:11;;26721:40;26743:17;;26721;;:21;;:40;;;;:::i;:57::-;26701:18;:77;26807:18;;26793:13;:32;26558:279;26907:1;26896:10;;:12;:47;;;;;26931:12;26913:10;;26926:1;26913:14;;;;:::i;:::-;26912:31;26896:47;26893:113;;;26982:2;26963:18;:21;26893:113;27030:1;27019:10;;:12;:47;;;;;27054:12;27036:10;;27049:1;27036:14;;;;:::i;:::-;27035:31;27019:47;27016:112;;;27105:2;27086:18;:21;27016:112;27150:14;;-1:-1:-1;;;27150:14:0;;;;27147:153;;;27184:11;;-1:-1:-1;;;27184:11:0;;;;:36;;;;-1:-1:-1;27207:13:0;;-1:-1:-1;;;;;27199:21:0;;;27207:13;;27199:21;27184:36;27181:108;;;27271:1;27252:18;:20;27181:108;27333:6;;-1:-1:-1;;;27333:6:0;;;;27332:7;:22;;;;-1:-1:-1;27343:11:0;;-1:-1:-1;;;27343:11:0;;;;27332:22;:45;;;;-1:-1:-1;27364:13:0;;-1:-1:-1;;;;;27358:19:0;;;27364:13;;27358:19;27332:45;27328:350;;;27402:28;27433:24;27451:4;27433:9;:24::i;:::-;27402:55;;27511:13;;27489:20;:35;27486:169;;-1:-1:-1;27571:13:0;;27607:32;27571:13;27607:10;:32::i;:::-;27328:350;;27688:38;27703:4;27708:2;27711:6;27718:7;27688:14;:38::i;1504:192::-;1590:7;1626:12;1618:6;;;;1610:29;;;;-1:-1:-1;;;1610:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1650:9:0;1662:5;1666:1;1662;:5;:::i;:::-;1650:17;1504:192;-1:-1:-1;;;;;1504:192:0:o;36305:163::-;36346:7;36367:15;36384;36403:19;:17;:19::i;:::-;36366:56;;-1:-1:-1;36366:56:0;-1:-1:-1;36440:20:0;36366:56;;36440:11;:20::i;:::-;36433:27;;;;36305:163;:::o;35103:419::-;35162:7;35171;35180;35189;35198;35207;35228:23;35253:12;35267:18;35289:20;35301:7;35289:11;:20::i;:::-;35227:82;;;;;;35321:15;35338:23;35363:12;35379:50;35391:7;35400:4;35406:10;35418;:8;:10::i;:::-;35379:11;:50::i;:::-;35320:109;;;;-1:-1:-1;35320:109:0;;-1:-1:-1;35480:15:0;;-1:-1:-1;35497:4:0;;-1:-1:-1;35503:10:0;;-1:-1:-1;35103:419:0;;-1:-1:-1;;;;;35103:419:0:o;2104:278::-;2190:7;2225:12;2218:5;2210:28;;;;-1:-1:-1;;;2210:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2249:9:0;2261:5;2265:1;2261;:5;:::i;27742:1210::-;17600:6;:13;;-1:-1:-1;;;;17600:13:0;-1:-1:-1;;;17600:13:0;;;27940:8:::1;::::0;27908:12:::1;::::0;17600:13;;27869:101:::1;::::0;27968:1:::1;::::0;27869:80:::1;::::0;;;:20;;:38:::1;:52::i;:::-;:70:::0;::::1;:80::i;:101::-;27843:127:::0;-1:-1:-1;27983:20:0::1;28006:41;:20:::0;27843:127;28006:24:::1;:41::i;:::-;27983:64;;28068:30;28085:12;28068:16;:30::i;:::-;28200:12;::::0;28131:21:::1;::::0;28111:17:::1;::::0;28187:33:::1;::::0;28200:19:::1;::::0;28217:1:::1;28200:16;:19::i;:::-;28187:8;::::0;;:12:::1;:33::i;:::-;28165:55;;28233:26;28262:93;28353:1;28262:72;28322:11;28262:41;28290:12;;28262:9;:27;;:41;;;;:::i;:93::-;28233:122;;28376:20;28399:38;28425:11;28399:21;28413:6;;28399:9;:13;;:21;;;;:::i;:38::-;28376:61;;28448:26;28477:68;28523:11;28477:27;28491:12;;28477:9;:13;;:27;;;;:::i;:68::-;28448:97:::0;-1:-1:-1;28646:21:0::1;28681:22:::0;;28678:153:::1;;28752:15;::::0;28720:48:::1;::::0;28733:18;;-1:-1:-1;;;;;28752:15:0::1;28720:12;:48::i;:::-;28809:9;::::0;28783:36:::1;::::0;28796:12;;-1:-1:-1;;;;;28809:9:0::1;28783:12;:36::i;:::-;28845:19:::0;;28841:104:::1;;28885:48;28898:15;28914:18;28885:12;:48::i;:::-;-1:-1:-1::0;;17636:6:0;:14;;-1:-1:-1;;;;17636:14:0;;;-1:-1:-1;;;;;;;27742:1210:0:o;31660:952::-;31800:13;;31850:18;;31883:7;31879:91;;31922:1;31906:13;:17;;;31938:18;:20;31879:91;-1:-1:-1;;;;;31994:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;32018:22:0;;;;;;:11;:22;;;;;;;;32017:23;31994:46;31990:467;;;32057:48;32079:6;32087:9;32098:6;32057:21;:48::i;:::-;31990:467;;;-1:-1:-1;;;;;32128:19:0;;;;;;:11;:19;;;;;;;;32127:20;:46;;;;-1:-1:-1;;;;;;32151:22:0;;;;;;:11;:22;;;;;;;;32127:46;32123:334;;;32190:46;32210:6;32218:9;32229:6;32190:19;:46::i;32123:334::-;-1:-1:-1;;;;;32258:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;32281:22:0;;;;;;:11;:22;;;;;;;;32258:45;32254:203;;;32320:48;32342:6;32350:9;32361:6;32320:21;:48::i;32254:203::-;32401:44;32419:6;32427:9;32438:6;32401:17;:44::i;:::-;32481:7;32477:128;;32504:13;:38;;;;32557:18;:36;-1:-1:-1;;;;31660:952:0:o;37277:561::-;37374:7;;37410;;37327;;;;;37434:289;37458:9;:16;37454:20;;37434:289;;;37524:7;37500;:21;37508:9;37518:1;37508:12;;;;;;-1:-1:-1;;;37508:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37508:12:0;37500:21;;;;;;;;;;;;;:31;;:66;;;37559:7;37535;:21;37543:9;37553:1;37543:12;;;;;;-1:-1:-1;;;37543:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37543:12:0;37535:21;;;;;;;;;;;;;:31;37500:66;37496:97;;;37576:7;;37585;;37568:25;;;;;;;37277:561;;:::o;37496:97::-;37618:34;37630:7;:21;37638:9;37648:1;37638:12;;;;;;-1:-1:-1;;;37638:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37638:12:0;37630:21;;;;;;;;;;;;;37618:7;;:11;:34::i;:::-;37608:44;;37677:34;37689:7;:21;37697:9;37707:1;37697:12;;;;;;-1:-1:-1;;;37697:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37697:12:0;37689:21;;;;;;;;;;;;;37677:7;;:11;:34::i;:::-;37667:44;-1:-1:-1;37476:3:0;;;;:::i;:::-;;;;37434:289;;;-1:-1:-1;37759:7:0;;37747;;:20;;:11;:20::i;:::-;37737:7;:30;37733:61;;;37777:7;;37786;;37769:25;;;;;;37277:561;;:::o;37733:61::-;37813:7;;37822;;-1:-1:-1;37277:561:0;-1:-1:-1;37277:561:0:o;35530:330::-;35590:7;35599;35608;35628:12;35643:24;35659:7;35643:15;:24::i;:::-;35628:39;;35678:18;35699:30;35721:7;35699:21;:30::i;:::-;35678:51;-1:-1:-1;35740:23:0;35766:33;35678:51;35766:17;:7;35778:4;35766:11;:17::i;:::-;:21;;:33::i;:::-;35740:59;35835:4;;-1:-1:-1;35841:10:0;;-1:-1:-1;35530:330:0;;-1:-1:-1;;;35530:330:0:o;35868:429::-;35983:7;;;;36039:24;:7;36051:11;36039;:24::i;:::-;36021:42;-1:-1:-1;36074:12:0;36089:21;:4;36098:11;36089:8;:21::i;:::-;36074:36;-1:-1:-1;36121:18:0;36142:27;:10;36157:11;36142:14;:27::i;:::-;36121:48;-1:-1:-1;36180:23:0;36206:33;36121:48;36206:17;:7;36218:4;36206:11;:17::i;:33::-;36258:7;;;;-1:-1:-1;36284:4:0;;-1:-1:-1;35868:429:0;;-1:-1:-1;;;;;;;35868:429:0:o;30461:666::-;30611:16;;;30625:1;30611:16;;;;;;;;30587:21;;30611:16;;;;;;;;;;-1:-1:-1;30611:16:0;30587:40;;30656:4;30638;30643:1;30638:7;;;;;;-1:-1:-1;;;30638:7:0;;;;;;;;;-1:-1:-1;;;;;30638:23:0;;;:7;;;;;;;;;;:23;;;;30682:15;;:22;;;-1:-1:-1;;;30682:22:0;;;;:15;;;;;:20;;:22;;;;;30638:7;;30682:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30672:4;30677:1;30672:7;;;;;;-1:-1:-1;;;30672:7:0;;;;;;;;;-1:-1:-1;;;;;30672:32:0;;;:7;;;;;;;;;:32;30749:15;;30717:62;;30734:4;;30749:15;30767:11;30717:8;:62::i;:::-;30818:15;;:240;;-1:-1:-1;;;30818:240:0;;-1:-1:-1;;;;;30818:15:0;;;;:66;;:240;;30899:11;;30818:15;;30969:4;;30996;;31032:15;;30818:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31084:35;31101:11;31114:4;31084:35;;;;;;;:::i;:::-;;;;;;;;30461:666;;:::o;28964:111::-;29044:23;;-1:-1:-1;;;;;29044:15:0;;;:23;;;;;29060:6;;29044:23;;;;29060:6;29044:15;:23;;;;;;;;;;;;;;;;;;;31141:511;31321:15;;31289:62;;31306:4;;-1:-1:-1;;;;;31321:15:0;31339:11;31289:8;:62::i;:::-;31392:15;;-1:-1:-1;;;;;31392:15:0;:31;31431:9;31464:4;31484:11;31392:15;;31596:7;5843;5870:6;-1:-1:-1;;;;;5870:6:0;;5805:79;31596:7;31392:252;;;;;;-1:-1:-1;;;;;;31392:252:0;;;-1:-1:-1;;;;;12558:15:1;;;31392:252:0;;;12540:34:1;12590:18;;;12583:34;;;;12633:18;;;12626:34;;;;12676:18;;;12669:34;12740:15;;;12719:19;;;12712:44;31618:15:0;12772:19:1;;;12765:35;12474:19;;31392:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31141:511;;:::o;33724:566::-;33827:15;33844:23;33869:12;33883:23;33908:12;33922:18;33944:19;33955:7;33944:10;:19::i;:::-;-1:-1:-1;;;;;33992:15:0;;;;;;:7;:15;;;;;;33826:137;;-1:-1:-1;33826:137:0;;-1:-1:-1;33826:137:0;;-1:-1:-1;33826:137:0;-1:-1:-1;33826:137:0;-1:-1:-1;33826:137:0;-1:-1:-1;33992:28:0;;34012:7;33992:19;:28::i;:::-;-1:-1:-1;;;;;33974:15:0;;;;;;:7;:15;;;;;;;;:46;;;;34049:7;:15;;;;:28;;34069:7;34049:19;:28::i;:::-;-1:-1:-1;;;;;34031:15:0;;;;;;;:7;:15;;;;;;:46;;;;34109:18;;;;;;;:39;;34132:15;34109:22;:39::i;:::-;-1:-1:-1;;;;;34088:18:0;;;;;;:7;:18;;;;;:60;34162:26;34177:10;34162:14;:26::i;:::-;34199:23;34211:4;34217;34199:11;:23::i;:::-;34255:9;-1:-1:-1;;;;;34238:44:0;34247:6;-1:-1:-1;;;;;34238:44:0;;34266:15;34238:44;;;;24160:25:1;;24148:2;24133:18;;24115:76;34238:44:0;;;;;;;;33724:566;;;;;;;;;:::o;33130:586::-;33231:15;33248:23;33273:12;33287:23;33312:12;33326:18;33348:19;33359:7;33348:10;:19::i;:::-;-1:-1:-1;;;;;33396:15:0;;;;;;:7;:15;;;;;;33230:137;;-1:-1:-1;33230:137:0;;-1:-1:-1;33230:137:0;;-1:-1:-1;33230:137:0;-1:-1:-1;33230:137:0;-1:-1:-1;33230:137:0;-1:-1:-1;33396:28:0;;33230:137;33396:19;:28::i;:::-;-1:-1:-1;;;;;33378:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;33456:18;;;;;:7;:18;;;;;:39;;33479:15;33456:22;:39::i;:::-;-1:-1:-1;;;;;33435:18:0;;;;;;:7;:18;;;;;;;;:60;;;;33527:7;:18;;;;:39;;33550:15;33527:22;:39::i;34298:642::-;34401:15;34418:23;34443:12;34457:23;34482:12;34496:18;34518:19;34529:7;34518:10;:19::i;:::-;-1:-1:-1;;;;;34566:15:0;;;;;;:7;:15;;;;;;34400:137;;-1:-1:-1;34400:137:0;;-1:-1:-1;34400:137:0;;-1:-1:-1;34400:137:0;-1:-1:-1;34400:137:0;-1:-1:-1;34400:137:0;-1:-1:-1;34566:28:0;;34586:7;34566:19;:28::i;:::-;-1:-1:-1;;;;;34548:15:0;;;;;;:7;:15;;;;;;;;:46;;;;34623:7;:15;;;;:28;;34643:7;34623:19;:28::i;32620:502::-;32719:15;32736:23;32761:12;32775:23;32800:12;32814:18;32836:19;32847:7;32836:10;:19::i;:::-;-1:-1:-1;;;;;32884:15:0;;;;;;:7;:15;;;;;;32718:137;;-1:-1:-1;32718:137:0;;-1:-1:-1;32718:137:0;;-1:-1:-1;32718:137:0;-1:-1:-1;32718:137:0;-1:-1:-1;32718:137:0;-1:-1:-1;32884:28:0;;32718:137;32884:19;:28::i;38217:160::-;38281:7;38308:61;38353:5;38308:26;38320:13;;38308:7;:11;;:26;;;;:::i;38389:171::-;38459:7;38486:66;38536:5;38486:31;38498:18;;38486:7;:11;;:31;;;;:::i;37850:355::-;37913:19;37936:10;:8;:10::i;:::-;37913:33;-1:-1:-1;37957:18:0;37978:27;:10;37913:33;37978:14;:27::i;:::-;38057:4;38041:22;;;;:7;:22;;;;;;37957:48;;-1:-1:-1;38041:38:0;;37957:48;38041:26;:38::i;:::-;38032:4;38016:22;;;;:7;:22;;;;;;;;:63;;;;38093:11;:26;;;;;;38090:107;;;38175:4;38159:22;;;;:7;:22;;;;;;:38;;38186:10;38159:26;:38::i;:::-;38150:4;38134:22;;;;:7;:22;;;;;:63;37850:355;;;:::o;34948:147::-;35026:7;;:17;;35038:4;35026:11;:17::i;:::-;35016:7;:27;35067:10;;:20;;35082:4;35067:14;:20::i;:::-;35054:10;:33;-1:-1:-1;;34948:147:0:o;14:395:1:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:2;;166:8;156;149:26;108:2;-1:-1:-1;196:20:1;;239:18;228:30;;225:2;;;278:8;268;261:26;225:2;322:4;314:6;310:17;298:29;;382:3;375:4;365:6;362:1;358:14;350:6;346:27;342:38;339:47;336:2;;;399:1;396;389:12;336:2;98:311;;;;;:::o;414:128::-;479:20;;508:28;479:20;508:28;:::i;:::-;460:82;;;:::o;547:257::-;606:6;659:2;647:9;638:7;634:23;630:32;627:2;;;680:6;672;665:22;627:2;724:9;711:23;743:31;768:5;743:31;:::i;809:261::-;879:6;932:2;920:9;911:7;907:23;903:32;900:2;;;953:6;945;938:22;900:2;990:9;984:16;1009:31;1034:5;1009:31;:::i;1345:398::-;1413:6;1421;1474:2;1462:9;1453:7;1449:23;1445:32;1442:2;;;1495:6;1487;1480:22;1442:2;1539:9;1526:23;1558:31;1583:5;1558:31;:::i;:::-;1608:5;-1:-1:-1;1665:2:1;1650:18;;1637:32;1678:33;1637:32;1678:33;:::i;:::-;1730:7;1720:17;;;1432:311;;;;;:::o;1748:466::-;1825:6;1833;1841;1894:2;1882:9;1873:7;1869:23;1865:32;1862:2;;;1915:6;1907;1900:22;1862:2;1959:9;1946:23;1978:31;2003:5;1978:31;:::i;:::-;2028:5;-1:-1:-1;2085:2:1;2070:18;;2057:32;2098:33;2057:32;2098:33;:::i;:::-;1852:362;;2150:7;;-1:-1:-1;;;2204:2:1;2189:18;;;;2176:32;;1852:362::o;2219:938::-;2350:6;2358;2366;2374;2382;2435:2;2423:9;2414:7;2410:23;2406:32;2403:2;;;2456:6;2448;2441:22;2403:2;2500:9;2487:23;2519:31;2544:5;2519:31;:::i;:::-;2569:5;-1:-1:-1;2625:2:1;2610:18;;2597:32;2648:18;2678:14;;;2675:2;;;2710:6;2702;2695:22;2675:2;2754:70;2816:7;2807:6;2796:9;2792:22;2754:70;:::i;:::-;2843:8;;-1:-1:-1;2728:96:1;-1:-1:-1;2931:2:1;2916:18;;2903:32;;-1:-1:-1;2947:16:1;;;2944:2;;;2981:6;2973;2966:22;2944:2;;3025:72;3089:7;3078:8;3067:9;3063:24;3025:72;:::i;:::-;2393:764;;;;-1:-1:-1;2393:764:1;;-1:-1:-1;3116:8:1;;2999:98;2393:764;-1:-1:-1;;;2393:764:1:o;3162:660::-;3266:6;3274;3282;3290;3343:2;3331:9;3322:7;3318:23;3314:32;3311:2;;;3364:6;3356;3349:22;3311:2;3408:9;3395:23;3427:31;3452:5;3427:31;:::i;:::-;3477:5;-1:-1:-1;3533:2:1;3518:18;;3505:32;3560:18;3549:30;;3546:2;;;3597:6;3589;3582:22;3546:2;3641:70;3703:7;3694:6;3683:9;3679:22;3641:70;:::i;:::-;3301:521;;3730:8;;-1:-1:-1;3615:96:1;;3812:2;3797:18;3784:32;;3301:521;-1:-1:-1;;;;3301:521:1:o;3827:392::-;3892:6;3900;3953:2;3941:9;3932:7;3928:23;3924:32;3921:2;;;3974:6;3966;3959:22;3921:2;4018:9;4005:23;4037:31;4062:5;4037:31;:::i;:::-;4087:5;-1:-1:-1;4144:2:1;4129:18;;4116:32;4157:30;4116:32;4157:30;:::i;4224:325::-;4292:6;4300;4353:2;4341:9;4332:7;4328:23;4324:32;4321:2;;;4374:6;4366;4359:22;4321:2;4418:9;4405:23;4437:31;4462:5;4437:31;:::i;:::-;4487:5;4539:2;4524:18;;;;4511:32;;-1:-1:-1;;;4311:238:1:o;4554:457::-;4640:6;4648;4701:2;4689:9;4680:7;4676:23;4672:32;4669:2;;;4722:6;4714;4707:22;4669:2;4767:9;4754:23;4800:18;4792:6;4789:30;4786:2;;;4837:6;4829;4822:22;4786:2;4881:70;4943:7;4934:6;4923:9;4919:22;4881:70;:::i;:::-;4970:8;;4855:96;;-1:-1:-1;4659:352:1;-1:-1:-1;;;;4659:352:1:o;5016:586::-;5108:6;5116;5124;5177:2;5165:9;5156:7;5152:23;5148:32;5145:2;;;5198:6;5190;5183:22;5145:2;5243:9;5230:23;5276:18;5268:6;5265:30;5262:2;;;5313:6;5305;5298:22;5262:2;5357:70;5419:7;5410:6;5399:9;5395:22;5357:70;:::i;:::-;5446:8;;-1:-1:-1;5331:96:1;-1:-1:-1;;5531:2:1;5516:18;;5503:32;5544:28;5503:32;5544:28;:::i;:::-;5591:5;5581:15;;;5135:467;;;;;:::o;5607:1092::-;5697:6;5705;5758:2;5746:9;5737:7;5733:23;5729:32;5726:2;;;5779:6;5771;5764:22;5726:2;5824:9;5811:23;5857:18;5849:6;5846:30;5843:2;;;5894:6;5886;5879:22;5843:2;5922:22;;5975:4;5967:13;;5963:27;-1:-1:-1;5953:2:1;;6009:6;6001;5994:22;5953:2;6050;6037:16;6072:4;6096:60;6112:43;6152:2;6112:43;:::i;:::-;6096:60;:::i;:::-;6178:3;6202:2;6197:3;6190:15;6230:2;6225:3;6221:12;6214:19;;6261:2;6257;6253:11;6309:7;6304:2;6298;6295:1;6291:10;6287:2;6283:19;6279:28;6276:41;6273:2;;;6335:6;6327;6320:22;6273:2;6362:6;6353:15;;6377:238;6391:2;6388:1;6385:9;6377:238;;;6462:3;6449:17;6479:31;6504:5;6479:31;:::i;:::-;6523:18;;6409:1;6402:9;;;;;6561:12;;;;6593;;6377:238;;;-1:-1:-1;6634:5:1;-1:-1:-1;6658:35:1;;-1:-1:-1;6674:18:1;;;6658:35;:::i;:::-;6648:45;;;;;5716:983;;;;;:::o;6704:937::-;6799:6;6830:2;6873;6861:9;6852:7;6848:23;6844:32;6841:2;;;6894:6;6886;6879:22;6841:2;6932:9;6926:16;6965:18;6957:6;6954:30;6951:2;;;7002:6;6994;6987:22;6951:2;7030:22;;7083:4;7075:13;;7071:27;-1:-1:-1;7061:2:1;;7117:6;7109;7102:22;7061:2;7151;7145:9;7174:60;7190:43;7230:2;7190:43;:::i;7174:60::-;7256:3;7280:2;7275:3;7268:15;7308:2;7303:3;7299:12;7292:19;;7339:2;7335;7331:11;7387:7;7382:2;7376;7373:1;7369:10;7365:2;7361:19;7357:28;7354:41;7351:2;;;7413:6;7405;7398:22;7351:2;7440:6;7431:15;;7455:156;7469:2;7466:1;7463:9;7455:156;;;7526:10;;7514:23;;7487:1;7480:9;;;;;7557:12;;;;7589;;7455:156;;;-1:-1:-1;7630:5:1;6810:831;-1:-1:-1;;;;;;;6810:831:1:o;7646:251::-;7702:6;7755:2;7743:9;7734:7;7730:23;7726:32;7723:2;;;7776:6;7768;7761:22;7723:2;7820:9;7807:23;7839:28;7861:5;7839:28;:::i;7902:255::-;7969:6;8022:2;8010:9;8001:7;7997:23;7993:32;7990:2;;;8043:6;8035;8028:22;7990:2;8080:9;8074:16;8099:28;8121:5;8099:28;:::i;8162:319::-;8227:6;8235;8288:2;8276:9;8267:7;8263:23;8259:32;8256:2;;;8309:6;8301;8294:22;8256:2;8353:9;8340:23;8372:28;8394:5;8372:28;:::i;8486:411::-;8567:6;8575;8628:2;8616:9;8607:7;8603:23;8599:32;8596:2;;;8649:6;8641;8634:22;8902:190;8961:6;9014:2;9002:9;8993:7;8989:23;8985:32;8982:2;;;9035:6;9027;9020:22;8982:2;-1:-1:-1;9063:23:1;;8972:120;-1:-1:-1;8972:120:1:o;9097:194::-;9167:6;9220:2;9208:9;9199:7;9195:23;9191:32;9188:2;;;9241:6;9233;9226:22;9188:2;-1:-1:-1;9269:16:1;;9178:113;-1:-1:-1;9178:113:1:o;9296:319::-;9361:6;9369;9422:2;9410:9;9401:7;9397:23;9393:32;9390:2;;;9443:6;9435;9428:22;9390:2;9484:9;9471:23;9461:33;;9544:2;9533:9;9529:18;9516:32;9557:28;9579:5;9557:28;:::i;9620:258::-;9688:6;9696;9749:2;9737:9;9728:7;9724:23;9720:32;9717:2;;;9770:6;9762;9755:22;9717:2;-1:-1:-1;;9798:23:1;;;9868:2;9853:18;;;9840:32;;-1:-1:-1;9707:171:1:o;9883:326::-;9960:6;9968;9976;10029:2;10017:9;10008:7;10004:23;10000:32;9997:2;;;10050:6;10042;10035:22;9997:2;-1:-1:-1;;10078:23:1;;;10148:2;10133:18;;10120:32;;-1:-1:-1;10199:2:1;10184:18;;;10171:32;;9987:222;-1:-1:-1;9987:222:1:o;10214:316::-;10302:6;10310;10318;10371:2;10359:9;10350:7;10346:23;10342:32;10339:2;;;10392:6;10384;10377:22;10339:2;10426:9;10420:16;10410:26;;10476:2;10465:9;10461:18;10455:25;10445:35;;10520:2;10509:9;10505:18;10499:25;10489:35;;10329:201;;;;;:::o;10535:395::-;10621:6;10629;10637;10645;10698:3;10686:9;10677:7;10673:23;10669:33;10666:2;;;10720:6;10712;10705:22;10666:2;-1:-1:-1;;10748:23:1;;;10818:2;10803:18;;10790:32;;-1:-1:-1;10869:2:1;10854:18;;10841:32;;10920:2;10905:18;10892:32;;-1:-1:-1;10656:274:1;-1:-1:-1;10656:274:1:o;10935:463::-;10988:3;11026:5;11020:12;11053:6;11048:3;11041:19;11079:4;11108:2;11103:3;11099:12;11092:19;;11145:2;11138:5;11134:14;11166:3;11178:195;11192:6;11189:1;11186:13;11178:195;;;11257:13;;-1:-1:-1;;;;;11253:39:1;11241:52;;11313:12;;;;11348:15;;;;11289:1;11207:9;11178:195;;;-1:-1:-1;11389:3:1;;10996:402;-1:-1:-1;;;;;10996:402:1:o;13238:603::-;13350:4;13379:2;13408;13397:9;13390:21;13440:6;13434:13;13483:6;13478:2;13467:9;13463:18;13456:34;13508:4;13521:140;13535:6;13532:1;13529:13;13521:140;;;13630:14;;;13626:23;;13620:30;13596:17;;;13615:2;13592:26;13585:66;13550:10;;13521:140;;;13679:6;13676:1;13673:13;13670:2;;;13749:4;13744:2;13735:6;13724:9;13720:22;13716:31;13709:45;13670:2;-1:-1:-1;13825:2:1;13804:15;-1:-1:-1;;13800:29:1;13785:45;;;;13832:2;13781:54;;13359:482;-1:-1:-1;;;13359:482:1:o;20442:356::-;20644:2;20626:21;;;20663:18;;;20656:30;20722:34;20717:2;20702:18;;20695:62;20789:2;20774:18;;20616:182::o;24196:332::-;24403:6;24392:9;24385:25;24446:2;24441;24430:9;24426:18;24419:30;24366:4;24466:56;24518:2;24507:9;24503:18;24495:6;24466:56;:::i;:::-;24458:64;24375:153;-1:-1:-1;;;;24375:153:1:o;24533:582::-;24832:6;24821:9;24814:25;24875:6;24870:2;24859:9;24855:18;24848:34;24918:3;24913:2;24902:9;24898:18;24891:31;24795:4;24939:57;24991:3;24980:9;24976:19;24968:6;24939:57;:::i;:::-;-1:-1:-1;;;;;25032:32:1;;;;25027:2;25012:18;;25005:60;-1:-1:-1;25096:3:1;25081:19;25074:35;24931:65;24804:311;-1:-1:-1;;;24804:311:1:o;25309:275::-;25380:2;25374:9;25445:2;25426:13;;-1:-1:-1;;25422:27:1;25410:40;;25480:18;25465:34;;25501:22;;;25462:62;25459:2;;;25527:18;;:::i;:::-;25563:2;25556:22;25354:230;;-1:-1:-1;25354:230:1:o;25589:183::-;25649:4;25682:18;25674:6;25671:30;25668:2;;;25704:18;;:::i;:::-;-1:-1:-1;25749:1:1;25745:14;25761:4;25741:25;;25658:114::o;25777:128::-;25817:3;25848:1;25844:6;25841:1;25838:13;25835:2;;;25854:18;;:::i;:::-;-1:-1:-1;25890:9:1;;25825:80::o;25910:217::-;25950:1;25976;25966:2;;-1:-1:-1;;;26001:31:1;;26055:4;26052:1;26045:15;26083:4;26008:1;26073:15;25966:2;-1:-1:-1;26112:9:1;;25956:171::o;26132:422::-;26221:1;26264:5;26221:1;26278:270;26299:7;26289:8;26286:21;26278:270;;;26358:4;26354:1;26350:6;26346:17;26340:4;26337:27;26334:2;;;26367:18;;:::i;:::-;26417:7;26407:8;26403:22;26400:2;;;26437:16;;;;26400:2;26516:22;;;;26476:15;;;;26278:270;;;26282:3;26196:358;;;;;:::o;26559:131::-;26619:5;26648:36;26675:8;26669:4;26648:36;:::i;26695:140::-;26753:5;26782:47;26823:4;26813:8;26809:19;26803:4;26840:806;26889:5;26919:8;26909:2;;-1:-1:-1;26960:1:1;26974:5;;26909:2;27008:4;26998:2;;-1:-1:-1;27045:1:1;27059:5;;26998:2;27090:4;27108:1;27103:59;;;;27176:1;27171:130;;;;27083:218;;27103:59;27133:1;27124:10;;27147:5;;;27171:130;27208:3;27198:8;27195:17;27192:2;;;27215:18;;:::i;:::-;-1:-1:-1;;27271:1:1;27257:16;;27286:5;;27083:218;;27385:2;27375:8;27372:16;27366:3;27360:4;27357:13;27353:36;27347:2;27337:8;27334:16;27329:2;27323:4;27320:12;27316:35;27313:77;27310:2;;;-1:-1:-1;27422:19:1;;;27454:5;;27310:2;27501:34;27526:8;27520:4;27501:34;:::i;:::-;27571:6;27567:1;27563:6;27559:19;27550:7;27547:32;27544:2;;;27582:18;;:::i;:::-;27620:20;;26899:747;-1:-1:-1;;;26899:747:1:o;27651:168::-;27691:7;27757:1;27753;27749:6;27745:14;27742:1;27739:21;27734:1;27727:9;27720:17;27716:45;27713:2;;;27764:18;;:::i;:::-;-1:-1:-1;27804:9:1;;27703:116::o;27824:125::-;27864:4;27892:1;27889;27886:8;27883:2;;;27897:18;;:::i;:::-;-1:-1:-1;27934:9:1;;27873:76::o;27954:380::-;28033:1;28029:12;;;;28076;;;28097:2;;28151:4;28143:6;28139:17;28129:27;;28097:2;28204;28196:6;28193:14;28173:18;28170:38;28167:2;;;28250:10;28245:3;28241:20;28238:1;28231:31;28285:4;28282:1;28275:15;28313:4;28310:1;28303:15;28167:2;;28009:325;;;:::o;28339:135::-;28378:3;-1:-1:-1;;28399:17:1;;28396:2;;;28419:18;;:::i;:::-;-1:-1:-1;28466:1:1;28455:13;;28386:88::o;28479:127::-;28540:10;28535:3;28531:20;28528:1;28521:31;28571:4;28568:1;28561:15;28595:4;28592:1;28585:15;28611:127;28672:10;28667:3;28663:20;28660:1;28653:31;28703:4;28700:1;28693:15;28727:4;28724:1;28717:15;28743:131;-1:-1:-1;;;;;28818:31:1;;28808:42;;28798:2;;28864:1;28861;28854:12;28879:118;28965:5;28958:13;28951:21;28944:5;28941:32;28931:2;;28987:1;28984;28977:12

Swarm Source

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