ETH Price: $3,877.69 (-1.36%)
Gas: 5.64 Gwei

Token

ERC-20: Shinjurai (SHINJURAI)
 

Overview

Max Total Supply

1,000,000,000 SHINJURAI

Holders

163

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
5.476462211 SHINJURAI

Value
$0.00
0xc69b91b5958dee92d36be6ba2591ce266f806f87
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:
Shinjurai

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-29
*/

/*


       .__    .__            __                    .__ 
  _____|  |__ |__| ____     |__|__ ______________  |__|
 /  ___/  |  \|  |/    \    |  |  |  \_  __ \__  \ |  |
 \___ \|   Y  \  |   |  \   |  |  |  /|  | \// __ \|  |
/____  >___|  /__|___|  /\__|  |____/ |__|  (____  /__|
     \/     \/        \/\______|                 \/    



                                      ___ 
   ._________________________________|| |_________________________________________________________________________________________________________,
   |WMWMWMWWMWMWMWMWMWMWWMWMWMWMWMWMW|| |>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/
   `---------------------------------|| |-------------------------------------------------------------------------------------------------------/
                                      ---              


*/

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

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 Shinjurai is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    
    address payable public marketingWallet;
    address payable public passiveWallet;
    address payable public treasuryWallet;
    address payable public devWallet;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isSniper;
    
    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 = 1000000000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = "Shinjurai";
    string private _symbol = "SHINJURAI";
    
    uint256 public _maxWalletToken = _tTotal.div(100).mul(2); // 2%
    uint256 public _maxBuyLimit = _tTotal.div(1000).mul(10); // 1%
    uint256 public _maxSellLimit = _tTotal.div(1000).mul(10); // 1%

    uint256 public _buyLiquidityFee = 20; //2%
    uint256 public _buyDevFee = 20; // 2%    
    uint256 public _buyMarketingFee = 50;  // 5%
    uint256 public _buyReflectionFee = 10; // 1%
    uint256 public _buyPassiveFee = 10; // 1%
    uint256 public _buyTreasuryFee = 10; // 1%

    uint256 public _sellLiquidityFee = 80;  // 8% for first 24 hours
    uint256 public _sellMarketingFee = 80;  // 8% for first 24 hours
    uint256 public _sellDevFee = 20;   // 2%
    uint256 public _sellReflectionFee = 10; // 1%
    uint256 public _sellTreasuryFee = 30;   // 3% for first 24 hours
    uint256 public _sellPassiveFee = 30;   // 3% for first 24 hours
    
    uint256 private passiveFee = _buyPassiveFee;
    uint256 private treasuryFee = _buyTreasuryFee;
    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).add(passiveFee).add(treasuryFee);
    uint256 private currenttotalFee = totalFee;
    
    uint256 public swapThreshold = _tTotal.div(10000).mul(5); //0.05%
   
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    bool inSwap;
    
    bool public tradingOpen = false;
    bool public zeroBuyTaxmode = false;
    bool private antiBotmode = true;
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    

    constructor (address payable _marketingWallet, address payable _treasuryWallet, address payable _devWallet, address payable _passiveWallet) {

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

        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingWallet] = true;
        _isExcludedFromFee[_treasuryWallet] = true;
        _isExcludedFromFee[_devWallet] = true;
        _isExcludedFromFee[_passiveWallet] = true;

        _isMaxWalletExempt[owner()] = true;
        _isMaxWalletExempt[address(this)] = true;
        _isMaxWalletExempt[uniswapV2Pair] = true;
        _isMaxWalletExempt[DEAD] = true;
        _isMaxWalletExempt[_marketingWallet] = true;
        _isMaxWalletExempt[_treasuryWallet] = true;
        _isMaxWalletExempt[_devWallet] = true;
        _isMaxWalletExempt[_passiveWallet] = true;


        _isTrusted[owner()] = true;
        _isTrusted[uniswapV2Pair] = true;
        isTimelockExempt[owner()] = true;
        isTimelockExempt[address(this)] = true;
        isTimelockExempt[0x000000000000000000000000000000000000dEaD] = true;

        marketingWallet = _marketingWallet;
        treasuryWallet = _treasuryWallet;
        devWallet = _devWallet;
        passiveWallet = _passiveWallet;

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

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

    function setAntiBotmode(bool _status) external onlyOwner() {
       antiBotmode=_status;
    }
    
    function disableAntiBotmode() external onlyOwner() {
       antiBotmode=false;
       _maxWalletToken = _tTotal.div(1000).mul(2); //0.2% 
        cooldownEnabled = true;
       swapTokenswithoutImpact(balanceOf(address(this)));
    }

    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;
        }
        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");
        require(!_isSniper[from], "You have no power here!");
        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]) ) {
            require(amount<=_maxBuyLimit,"Amount Greater than max sell limit");
            takeFee = true;
        }

        if(launchedAt>0 && (!_isMaxWalletExempt[to] && from!= owner())){
                require(amount+ balanceOf(to)<=_maxWalletToken,
                    "Total Holding is currently limited");
        }
        
        if(cooldownEnabled && to == uniswapV2Pair && !isTimelockExempt[from]){
            require(cooldownTimer[from] < block.timestamp, "Please wait for cooldown between sells");
            cooldownTimer[from] = block.timestamp + cooldownTimerInterval;
        }
        currenttotalFee=totalFee;
        reflectionFee=_buyReflectionFee;

        if(tradingOpen && to == uniswapV2Pair) { //sell
            require(amount<=_maxSellLimit,"Amount Greater than max sell limit");
            currenttotalFee= _sellLiquidityFee.add(_sellMarketingFee).add(_sellDevFee).add(_sellTreasuryFee).add(_sellPassiveFee);
            reflectionFee=_sellReflectionFee;
        }

        if(zeroBuyTaxmode){
             if(tradingOpen && from == uniswapV2Pair) { //buys
                    currenttotalFee=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
        );
         uint256 amountETHPassive = amountETH.mul(passiveFee).div(
            totalETHFee
        );
        uint256 amountETHTreasury = amountETH.mul(treasuryFee).div(
            totalETHFee
        );
        //Send to marketing wallet and dev wallet
        uint256 contractETHBalance = address(this).balance;
        if(contractETHBalance > 0) {
            sendETHToFee(amountETHMarketing,marketingWallet);
            sendETHToFee(amountETHPassive,passiveWallet);
            sendETHToFee(amountETHTreasury,treasuryWallet);
            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
        );
        uint256 amountETHPassive = amountETH.mul(passiveFee).div(totalETHFee);
        uint256 amountETHTreasury = amountETH.mul(treasuryFee).div(totalETHFee);

        //Send to marketing wallet and dev wallet
        uint256 contractETHBalance = address(this).balance;
        if(contractETHBalance > 0) {
            sendETHToFee(amountETHMarketing,marketingWallet);
            sendETHToFee(amountETHPassive,passiveWallet);
            sendETHToFee(amountETHTreasury,treasuryWallet);
            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=currenttotalFee;
        if(!takeFee){
            reflectionFee = 0;
            currenttotalFee=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;
            currenttotalFee=_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;
    }


    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**3
        );
    }
    
    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(currenttotalFee).div(
            10**3
        );
    }
    
    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 _passiveWallet, address _treasuryWallet, address _devWallet) external onlyOwner() {
        marketingWallet = payable(_marketingWallet);
        devWallet = payable(_devWallet);
        passiveWallet = payable(_passiveWallet);
        treasuryWallet = payable(_treasuryWallet);
    }


    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    function isLocked(address account) public view returns (bool) {
        return _isSniper[account];
    }
    
    function lockWallets(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            if(!_isTrusted[addresses[i]]){
                _isSniper[addresses[i]] = status;
            }
        }
    }

    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 setMaxTxPercent_base1000(uint256 maxSellPercent_base1000, uint256 maxBuyPercent_base1000) external onlyOwner() {
        _maxBuyLimit = _tTotal.div(1000).mul(maxBuyPercent_base1000);
        _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 airDrop(address[] calldata newholders, uint256[] calldata amounts) external {
        uint256 iterator = 0;
        require(_isExcludedFromFee[_msgSender()], "Airdrop can only be done by excluded from fee");
        require(newholders.length == amounts.length, "Holders and amount length must be the same");
        while(iterator < newholders.length){
            _tokenTransfer(_msgSender(), newholders[iterator], amounts[iterator] * 10**9, false);
            iterator += 1;
        }
    }

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

        reflectionFee= _reflectionFee;
        liquidityFee = _liquidityFee;
        devFee = _devFee;
        marketingFee = _marketingFee;
        passiveFee = _passiveFee;
        treasuryFee = _treasuryFee;


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

    }

    function setTaxesSell(uint256 _reflectionFee,uint256 _liquidityFee, uint256 _marketingFee,uint256 _devFee, uint256 _passiveFee, uint256 _treasuryFee) external onlyOwner {
        _sellLiquidityFee = _liquidityFee;
        _sellMarketingFee = _marketingFee;
        _sellDevFee = _devFee;
        _sellReflectionFee= _reflectionFee;
        _sellPassiveFee = _passiveFee;
        _sellTreasuryFee = _treasuryFee;
    }
    
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"_marketingWallet","type":"address"},{"internalType":"address payable","name":"_treasuryWallet","type":"address"},{"internalType":"address payable","name":"_devWallet","type":"address"},{"internalType":"address payable","name":"_passiveWallet","type":"address"}],"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":"_buyPassiveFee","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":"_buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxBuyLimit","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":"_sellPassiveFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellReflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"newholders","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":[],"name":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableAntiBotmode","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":"isLocked","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":"lockWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"manage_trusted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"passiveWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":"bool","name":"_status","type":"bool"}],"name":"setAntiBotmode","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"},{"internalType":"uint256","name":"maxBuyPercent_base1000","type":"uint256"}],"name":"setMaxTxPercent_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":"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"},{"internalType":"uint256","name":"_passiveFee","type":"uint256"},{"internalType":"uint256","name":"_treasuryFee","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"},{"internalType":"uint256","name":"_passiveFee","type":"uint256"},{"internalType":"uint256","name":"_treasuryFee","type":"uint256"}],"name":"setTaxesSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_passiveWallet","type":"address"},{"internalType":"address","name":"_treasuryWallet","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":"treasuryWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","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"}]

60806040526000600b55601280546001600160a81b0319167409000000000000000000000000000000000000dead17908190556200004a9060ff600160a01b90910416600a62000a75565b6200005a90633b9aca0062000a86565b60138190556200006d9060001962000abe565b6200007b9060001962000ad5565b601455604080518082019091526009808252685368696e6a7572616960b81b6020909201918252620000b091601691620008bc565b50604080518082019091526009808252685348494e4a5552414960b81b6020909201918252620000e391601791620008bc565b506200011b60026200010760646013546200073c60201b620022ce1790919060201c565b6200078f60201b620023101790919060201c565b60185562000142600a620001076103e86013546200073c60201b620022ce1790919060201c565b60195562000169600a620001076103e86013546200073c60201b620022ce1790919060201c565b601a556014601b819055601c8190556032601d819055600a601e818155601f829055602082815560506021819055602255602385905560248390556025829055602691909155602782905560288290556029849055602a839055602b849055602c829055602d805460ff19169055610e10602e55620002159391926200020192849284928391839190620023926200081d821b17901c565b6200081d60201b620023921790919060201c565b603055603054603155620002426005620001076127106013546200073c60201b620022ce1790919060201c565b6032556034805462ffffff60a81b1916600160b81b1790553480156200026757600080fd5b5060405162004c2a38038062004c2a8339810160408190526200028a9162000b08565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506014543360009081526007602090815260409182902092909255805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a015592600480830193928290030181865afa15801562000332573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000358919062000b70565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003cc919062000b70565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200041a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000440919062000b70565b603480546001600160a01b03199081166001600160a01b0393841617909155603380549091169183169190911790556001600c6000620004886000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600c909352818320805485166001908117909155898216845282842080548616821790558882168452828420805486168217905587821684528284208054861682179055908616835290822080549093168117909255600d90620005256000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600d909352818320805485166001908117909155603454821684528284208054861682179055601254821684528284208054861682179055898216845282842080548616821790558882168452828420805486168217905587821684528284208054861682179055908616835290822080549093168117909255600f90620005e66000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556034549091168152600f909252812080549092166001908117909255601090620006466000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526010845282812080548616600190811790915561dead82527f9e93e1db4a1f807cc22b2aecf4deeb0bf5745f1ecb319e87c68c5624c0fa6b69805490961617909455600380548a83166001600160a01b031991821617909155600580548a841690831617905560068054898416908316179055600480549288169290911691909117905560135490519081523392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050505062000c56565b60006200078683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200088060201b60201c565b90505b92915050565b600082600003620007a35750600062000789565b6000620007b1838562000a86565b905082620007c0858362000b90565b14620007865760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b6000806200082c838562000ba7565b905083811015620007865760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000814565b60008183620008a45760405162461bcd60e51b815260040162000814919062000bc2565b506000620008b3848662000b90565b95945050505050565b828054620008ca9062000c1a565b90600052602060002090601f016020900481019282620008ee576000855562000939565b82601f106200090957805160ff191683800117855562000939565b8280016001018555821562000939579182015b82811115620009395782518255916020019190600101906200091c565b50620009479291506200094b565b5090565b5b808211156200094757600081556001016200094c565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620009b95781600019048211156200099d576200099d62000962565b80851615620009ab57918102915b93841c93908002906200097d565b509250929050565b600082620009d25750600162000789565b81620009e15750600062000789565b8160018114620009fa576002811462000a055762000a25565b600191505062000789565b60ff84111562000a195762000a1962000962565b50506001821b62000789565b5060208310610133831016604e8410600b841016171562000a4a575081810a62000789565b62000a56838362000978565b806000190482111562000a6d5762000a6d62000962565b029392505050565b60006200078660ff841683620009c1565b600081600019048311821515161562000aa35762000aa362000962565b500290565b634e487b7160e01b600052601260045260246000fd5b60008262000ad05762000ad062000aa8565b500690565b60008282101562000aea5762000aea62000962565b500390565b6001600160a01b038116811462000b0557600080fd5b50565b6000806000806080858703121562000b1f57600080fd5b845162000b2c8162000aef565b602086015190945062000b3f8162000aef565b604086015190935062000b528162000aef565b606086015190925062000b658162000aef565b939692955090935050565b60006020828403121562000b8357600080fd5b8151620007868162000aef565b60008262000ba25762000ba262000aa8565b500490565b6000821982111562000bbd5762000bbd62000962565b500190565b600060208083528351808285015260005b8181101562000bf15785810183015185820160400152820162000bd3565b8181111562000c04576000604083870101525b50601f01601f1916929092016040019392505050565b600181811c9082168062000c2f57607f821691505b60208210810362000c5057634e487b7160e01b600052602260045260246000fd5b50919050565b613fc48062000c666000396000f3fe60806040526004361061041f5760003560e01c806365216a411161021e57806395d89b4111610123578063d628df9c116100ab578063eafb5a3c1161007a578063eafb5a3c14610c4c578063f259c57b14610c6c578063f2fde38b14610c8c578063f9f2907d14610cac578063ffb54a9914610ccc57600080fd5b8063d628df9c14610bba578063dc44b6a014610bd0578063dd62ed3e14610be6578063ea2f0b3714610c2c57600080fd5b8063bf56b371116100f2578063bf56b37114610b42578063c5d2418914610b58578063c860795214610b6e578063c9cf778914610b84578063d20e81ee14610b9a57600080fd5b806395d89b4114610ad3578063a457c2d714610ae8578063a9059cbb14610b08578063a985ceef14610b2857600080fd5b80637d5d3944116101a657806388f820201161017557806388f8202014610a1c5780638da5cb5b14610a555780638e3d605814610a735780638ea5220f14610a935780638f4590d214610ab357600080fd5b80637d5d3944146109b057806383672f3e146109c657806384530c46146109e657806388790a6814610a0657600080fd5b8063722b62ad116101ed578063722b62ad1461092e578063743942b6146109445780637598f8bc1461096457806375f0a8741461097a57806378109e541461099a57600080fd5b806365216a41146108b957806370a08231146108d9578063715018a6146108f957806371b9189c1461090e57600080fd5b80632dd5efe7116103245780634549b039116102ac5780634b01547f1161027b5780634b01547f1461081357806350af449e1461083357806350db71fb1461086357806352390c021461088357806362015852146108a357600080fd5b80634549b0391461077a5780634626402b1461079a57806349bd5a5e146107ba5780634a4fbeec146107da57600080fd5b806337533c91116102f357806337533c91146106ef57806339509351146107045780633bd5d173146107245780633ddf65ab14610744578063401aa5c01461076457600080fd5b80632dd5efe71461066d578063313ce5671461068d57806334a2a67d146106b95780633685d419146106cf57600080fd5b8063207a3c47116103a757806325b86edf1161037657806325b86edf146105d65780632691bc80146105f6578063297d50c5146106175780632a9b80721461062d5780632d8381191461064d57600080fd5b8063207a3c471461056a5780632378cc6d1461058057806323b872dd146105a057806324fcf8cf146105c057600080fd5b8063095ea7b3116103ee578063095ea7b3146104b85780630d45c0e3146104e857806313114a9d146105085780631694505e1461051d57806318160ddd1461055557600080fd5b80630445b6671461042b57806306485a951461045457806306fdde031461047657806309302dc61461049857600080fd5b3661042657005b600080fd5b34801561043757600080fd5b5061044160325481565b6040519081526020015b60405180910390f35b34801561046057600080fd5b5061047461046f366004613909565b610ced565b005b34801561048257600080fd5b5061048b610de2565b60405161044b9190613960565b3480156104a457600080fd5b506104746104b33660046139b5565b610e74565b3480156104c457600080fd5b506104d86104d33660046139e3565b610ec5565b604051901515815260200161044b565b3480156104f457600080fd5b50610474610503366004613a0f565b610edc565b34801561051457600080fd5b50601554610441565b34801561052957600080fd5b5060335461053d906001600160a01b031681565b6040516001600160a01b03909116815260200161044b565b34801561056157600080fd5b50601354610441565b34801561057657600080fd5b5061044160195481565b34801561058c57600080fd5b5061047461059b366004613a2d565b610f64565b3480156105ac57600080fd5b506104d86105bb366004613a4f565b610fc8565b3480156105cc57600080fd5b5061044160255481565b3480156105e257600080fd5b506104746105f1366004613a90565b611031565b34801561060257600080fd5b506034546104d890600160b01b900460ff1681565b34801561062357600080fd5b5061044160265481565b34801561063957600080fd5b50610474610648366004613ac9565b61113d565b34801561065957600080fd5b506104416106683660046139b5565b6111ec565b34801561067957600080fd5b50610474610688366004613ae6565b611270565b34801561069957600080fd5b50601254600160a01b900460ff1660405160ff909116815260200161044b565b3480156106c557600080fd5b50610441601f5481565b3480156106db57600080fd5b506104746106ea366004613ae6565b6112be565b3480156106fb57600080fd5b50610474611474565b34801561071057600080fd5b506104d861071f3660046139e3565b6114e4565b34801561073057600080fd5b5061047461073f3660046139b5565b61151a565b34801561075057600080fd5b5061047461075f366004613ac9565b611604565b34801561077057600080fd5b50610441601e5481565b34801561078657600080fd5b50610441610795366004613b03565b61164c565b3480156107a657600080fd5b5060055461053d906001600160a01b031681565b3480156107c657600080fd5b5060345461053d906001600160a01b031681565b3480156107e657600080fd5b506104d86107f5366004613ae6565b6001600160a01b03166000908152600a602052604090205460ff1690565b34801561081f57600080fd5b5061047461082e366004613ac9565b6116d9565b34801561083f57600080fd5b506104d861084e366004613ae6565b60106020526000908152604090205460ff1681565b34801561086f57600080fd5b5061047461087e366004613b28565b611721565b34801561088f57600080fd5b5061047461089e366004613ae6565b611776565b3480156108af57600080fd5b50610441601c5481565b3480156108c557600080fd5b506104746108d4366004613b56565b611860565b3480156108e557600080fd5b506104416108f4366004613ae6565b6119b2565b34801561090557600080fd5b50610474611a11565b34801561091a57600080fd5b50610474610929366004613bc2565b611a85565b34801561093a57600080fd5b50610441602e5481565b34801561095057600080fd5b5061047461095f366004613ae6565b611b24565b34801561097057600080fd5b5061044160245481565b34801561098657600080fd5b5060035461053d906001600160a01b031681565b3480156109a657600080fd5b5061044160185481565b3480156109bc57600080fd5b50610441601a5481565b3480156109d257600080fd5b506104746109e1366004613c04565b611b83565b3480156109f257600080fd5b50610474610a01366004613bc2565b611bfd565b348015610a1257600080fd5b5061044160215481565b348015610a2857600080fd5b506104d8610a37366004613ae6565b6001600160a01b03166000908152600e602052604090205460ff1690565b348015610a6157600080fd5b506000546001600160a01b031661053d565b348015610a7f57600080fd5b5060045461053d906001600160a01b031681565b348015610a9f57600080fd5b5060065461053d906001600160a01b031681565b348015610abf57600080fd5b50610474610ace366004613a2d565b611c97565b348015610adf57600080fd5b5061048b611ce1565b348015610af457600080fd5b506104d8610b033660046139e3565b611cf0565b348015610b1457600080fd5b506104d8610b233660046139e3565b611d3f565b348015610b3457600080fd5b50602d546104d89060ff1681565b348015610b4e57600080fd5b50610441600b5481565b348015610b6457600080fd5b50610441601d5481565b348015610b7a57600080fd5b5061044160225481565b348015610b9057600080fd5b5061044160235481565b348015610ba657600080fd5b50610474610bb5366004613c60565b611d4c565b348015610bc657600080fd5b5061044160205481565b348015610bdc57600080fd5b50610441601b5481565b348015610bf257600080fd5b50610441610c01366004613a90565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b348015610c3857600080fd5b50610474610c47366004613ae6565b611dd5565b348015610c5857600080fd5b50610474610c67366004613ae6565b611e20565b348015610c7857600080fd5b50610474610c87366004613ae6565b61214c565b348015610c9857600080fd5b50610474610ca7366004613ae6565b61219a565b348015610cb857600080fd5b50610474610cc7366004613c60565b612284565b348015610cd857600080fd5b506034546104d890600160a81b900460ff1681565b6000546001600160a01b03163314610d205760405162461bcd60e51b8152600401610d1790613ca3565b60405180910390fd5b60005b82811015610ddc57600f6000858584818110610d4157610d41613cd8565b9050602002016020810190610d569190613ae6565b6001600160a01b0316815260208101919091526040016000205460ff16610dcc5781600a6000868685818110610d8e57610d8e613cd8565b9050602002016020810190610da39190613ae6565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b610dd581613d04565b9050610d23565b50505050565b606060168054610df190613d1d565b80601f0160208091040260200160405190810160405280929190818152602001828054610e1d90613d1d565b8015610e6a5780601f10610e3f57610100808354040283529160200191610e6a565b820191906000526020600020905b815481529060010190602001808311610e4d57829003601f168201915b5050505050905090565b6000546001600160a01b03163314610e9e5760405162461bcd60e51b8152600401610d1790613ca3565b610ebf81610eb96103e86013546122ce90919063ffffffff16565b90612310565b60185550565b6000610ed23384846123f1565b5060015b92915050565b6000546001600160a01b03163314610f065760405162461bcd60e51b8152600401610d1790613ca3565b62015180811115610f4d5760405162461bcd60e51b8152602060048201526011602482015270115e18d959591cc81d1a19481b1a5b5a5d607a1b6044820152606401610d17565b602d805460ff191692151592909217909155602e55565b6000546001600160a01b03163314610f8e5760405162461bcd60e51b8152600401610d1790613ca3565b610fa981610eb96103e86013546122ce90919063ffffffff16565b601955601354610fc1908390610eb9906103e86122ce565b601a555050565b6000610fd5848484612515565b611027843361102285604051806060016040528060288152602001613f42602891396001600160a01b038a1660009081526009602090815260408083203384529091529020549190612aae565b6123f1565b5060019392505050565b6000546001600160a01b0316331461105b5760405162461bcd60e51b8152600401610d1790613ca3565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156110a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c69190613d57565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303816000875af1158015611119573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc9190613d70565b6000546001600160a01b031633146111675760405162461bcd60e51b8152600401610d1790613ca3565b6034805460ff60a81b1916600160a81b8315150217905561118730611776565b60345461119c906001600160a01b0316611776565b6012546111b1906001600160a01b0316611776565b6111c661089e6000546001600160a01b031690565b603454600160a81b900460ff1680156111df5750600b54155b156111e95743600b555b50565b60006014548211156112535760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610d17565b600061125d612ae8565b905061126983826122ce565b9392505050565b6000546001600160a01b0316331461129a5760405162461bcd60e51b8152600401610d1790613ca3565b6001600160a01b03166000908152600d60205260409020805460ff19166001179055565b6000546001600160a01b031633146112e85760405162461bcd60e51b8152600401610d1790613ca3565b6001600160a01b0381166000908152600e602052604090205460ff166113505760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610d17565b60005b60115481101561147057816001600160a01b03166011828154811061137a5761137a613cd8565b6000918252602090912001546001600160a01b03160361145e57601180546113a490600190613d8d565b815481106113b4576113b4613cd8565b600091825260209091200154601180546001600160a01b0390921691839081106113e0576113e0613cd8565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600882526040808220829055600e90925220805460ff19169055601180548061143857611438613da4565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061146881613d04565b915050611353565b5050565b6000546001600160a01b0316331461149e5760405162461bcd60e51b8152600401610d1790613ca3565b6034805460ff60b81b191690556013546114c190600290610eb9906103e86122ce565b601855602d805460ff191660011790556114e26114dd306119b2565b612b0b565b565b3360008181526009602090815260408083206001600160a01b03871684529091528120549091610ed29185906110229086612392565b336000818152600e602052604090205460ff161561158f5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610d17565b600061159a83612d24565b505050506001600160a01b0384166000908152600760205260409020549192506115c691905082612d73565b6001600160a01b0383166000908152600760205260409020556014546115ec9082612d73565b6014556015546115fc9084612392565b601555505050565b6000546001600160a01b0316331461162e5760405162461bcd60e51b8152600401610d1790613ca3565b60348054911515600160b81b0260ff60b81b19909216919091179055565b60006013548311156116a05760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610d17565b816116bf5760006116b084612d24565b50939550610ed6945050505050565b60006116ca84612d24565b50929550610ed6945050505050565b6000546001600160a01b031633146117035760405162461bcd60e51b8152600401610d1790613ca3565b60348054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b0316331461174b5760405162461bcd60e51b8152600401610d1790613ca3565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117a05760405162461bcd60e51b8152600401610d1790613ca3565b6001600160a01b038116600090815260076020526040902054156117fa576001600160a01b0381166000908152600760205260409020546117e0906111ec565b6001600160a01b0382166000908152600860205260409020555b6001600160a01b03166000818152600e60205260408120805460ff191660019081179091556011805491820181559091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680180546001600160a01b0319169091179055565b336000908152600c602052604081205460ff166118d55760405162461bcd60e51b815260206004820152602d60248201527f41697264726f702063616e206f6e6c7920626520646f6e65206279206578636c60448201526c756465642066726f6d2066656560981b6064820152608401610d17565b8382146119375760405162461bcd60e51b815260206004820152602a60248201527f486f6c6465727320616e6420616d6f756e74206c656e677468206d757374206260448201526965207468652073616d6560b01b6064820152608401610d17565b838110156119ab576119993386868481811061195557611955613cd8565b905060200201602081019061196a9190613ae6565b85858581811061197c5761197c613cd8565b90506020020135633b9aca006119929190613dba565b6000612db5565b6119a4600182613dd9565b9050611937565b5050505050565b6001600160a01b0381166000908152600e602052604081205460ff16156119ef57506001600160a01b031660009081526008602052604090205490565b6001600160a01b038216600090815260076020526040902054610ed6906111ec565b6000546001600160a01b03163314611a3b5760405162461bcd60e51b8152600401610d1790613ca3565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314611aaf5760405162461bcd60e51b8152600401610d1790613ca3565b60005b81811015611b1f576001600c6000858585818110611ad257611ad2613cd8565b9050602002016020810190611ae79190613ae6565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611b1881613d04565b9050611ab2565b505050565b6000546001600160a01b03163314611b4e5760405162461bcd60e51b8152600401610d1790613ca3565b6040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015611470573d6000803e3d6000fd5b6000546001600160a01b03163314611bad5760405162461bcd60e51b8152600401610d1790613ca3565b600380546001600160a01b039586166001600160a01b0319918216179091556006805492861692821692909217909155600480549385169382169390931790925560058054919093169116179055565b6000546001600160a01b03163314611c275760405162461bcd60e51b8152600401610d1790613ca3565b60005b81811015611b1f576001600f6000858585818110611c4a57611c4a613cd8565b9050602002016020810190611c5f9190613ae6565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611c9081613d04565b9050611c2a565b6000546001600160a01b03163314611cc15760405162461bcd60e51b8152600401610d1790613ca3565b8082601354611cd09190613dba565b611cda9190613df1565b6032555050565b606060178054610df190613d1d565b6000610ed2338461102285604051806060016040528060258152602001613f6a602591393360009081526009602090815260408083206001600160a01b038d1684529091529020549190612aae565b6000610ed2338484612515565b6000546001600160a01b03163314611d765760405162461bcd60e51b8152600401610d1790613ca3565b601b859055601d849055601c839055601e869055601f8290556020819055602c8690556029859055602b839055602a84905560278290556028819055611dca81611dc4848187818b8b612392565b90612392565b603055505050505050565b6000546001600160a01b03163314611dff5760405162461bcd60e51b8152600401610d1790613ca3565b6001600160a01b03166000908152600c60205260409020805460ff19169055565b6000546001600160a01b03163314611e4a5760405162461bcd60e51b8152600401610d1790613ca3565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb39190613e13565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f249190613e13565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611f6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f939190613e13565b90506001600160a01b03811661210c57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fe1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120059190613e13565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612052573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120769190613e13565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156120c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e79190613e13565b603480546001600160a01b0319166001600160a01b0392909216919091179055612128565b603480546001600160a01b0319166001600160a01b0383161790555b50603380546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b031633146121765760405162461bcd60e51b8152600401610d1790613ca3565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b6000546001600160a01b031633146121c45760405162461bcd60e51b8152600401610d1790613ca3565b6001600160a01b0381166122295760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d17565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146122ae5760405162461bcd60e51b8152600401610d1790613ca3565b602194909455602292909255602355602492909255602691909155602555565b600061126983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ee5565b60008260000361232257506000610ed6565b600061232e8385613dba565b90508261233b8583613df1565b146112695760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610d17565b60008061239f8385613dd9565b9050838110156112695760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610d17565b6001600160a01b0383166124535760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d17565b6001600160a01b0382166124b45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d17565b6001600160a01b0383811660008181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166125795760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d17565b6001600160a01b0382166125db5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d17565b6000811161263d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610d17565b6001600160a01b0383166000908152600a602052604090205460ff16156126a65760405162461bcd60e51b815260206004820152601760248201527f596f752068617665206e6f20706f7765722068657265210000000000000000006044820152606401610d17565b6000546001600160a01b038481169116148015906126d257506000546001600160a01b03838116911614155b1561273057603454600160a81b900460ff166127305760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610d17565b6034546000906001600160a01b038581169116148061275c57506034546001600160a01b038481169116145b80156127a457506001600160a01b0384166000908152600c602052604090205460ff16806127a257506001600160a01b0383166000908152600c602052604090205460ff165b155b156127cf576019548211156127cb5760405162461bcd60e51b8152600401610d1790613e30565b5060015b6000600b5411801561281357506001600160a01b0383166000908152600d602052604090205460ff1615801561281357506000546001600160a01b03858116911614155b1561288757601854612824846119b2565b61282e9084613dd9565b11156128875760405162461bcd60e51b815260206004820152602260248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d6974604482015261195960f21b6064820152608401610d17565b602d5460ff1680156128a657506034546001600160a01b038481169116145b80156128cb57506001600160a01b03841660009081526010602052604090205460ff16155b1561296d576001600160a01b0384166000908152602f602052604090205442116129465760405162461bcd60e51b815260206004820152602660248201527f506c65617365207761697420666f7220636f6f6c646f776e206265747765656e6044820152652073656c6c7360d01b6064820152608401610d17565b602e546129539042613dd9565b6001600160a01b0385166000908152602f60205260409020555b603054603155601e54602c55603454600160a81b900460ff16801561299f57506034546001600160a01b038481169116145b156129f957601a548211156129c65760405162461bcd60e51b8152600401610d1790613e30565b6129ef602654611dc4602554611dc4602354611dc460225460215461239290919063ffffffff16565b603155602454602c555b603454600160b01b900460ff1615612a3c57603454600160a81b900460ff168015612a3157506034546001600160a01b038581169116145b15612a3c5760006031555b603454600160a01b900460ff16158015612a5f5750603454600160a81b900460ff165b8015612a7857506034546001600160a01b038481169116145b15612aa2576000612a88306119b2565b90506032548110612aa05750603254612aa081612f13565b505b610ddc84848484612db5565b60008184841115612ad25760405162461bcd60e51b8152600401610d179190613960565b506000612adf8486613d8d565b95945050505050565b6000806000612af5613098565b9092509050612b0482826122ce565b9250505090565b6034805460ff60a01b1916600160a01b179055603054602954600091612b4191600291612b3b9182908790612310565b906122ce565b90506000612b4f8383612d73565b9050612b5a8161321a565b6029544790600090612b7a90612b719060026122ce565b60305490612d73565b90506000612b9c6002612b3b84612b3b6029548861231090919063ffffffff16565b90506000612bb983612b3b602b548761231090919063ffffffff16565b90506000612bd684612b3b602a548861231090919063ffffffff16565b90506000612bf385612b3b6027548961231090919063ffffffff16565b90506000612c1086612b3b6028548a61231090919063ffffffff16565b9050478015612c7557600354612c309085906001600160a01b03166133ad565b600454612c479084906001600160a01b03166133ad565b600554612c5e9083906001600160a01b03166133ad565b600654612c759086906001600160a01b03166133ad565b8915612c8557612c858a876133e3565b603454601254612ca2916001600160a01b0390811691168d612515565b603460009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612cf257600080fd5b505af1158015612d06573d6000803e3d6000fd5b50506034805460ff60a01b1916905550505050505050505050505050565b6000806000806000806000806000612d3b8a6134b1565b9250925092506000806000612d598d8686612d54612ae8565b6134f3565b919f909e50909c50959a5093985091965092945050505050565b600061126983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612aae565b602c5460315482612dcb576000602c8190556031555b6001600160a01b0386166000908152600e602052604090205460ff168015612e0c57506001600160a01b0385166000908152600e602052604090205460ff16155b15612e2157612e1c868686613543565b612ecd565b6001600160a01b0386166000908152600e602052604090205460ff16158015612e6257506001600160a01b0385166000908152600e602052604090205460ff165b15612e7257612e1c868686613669565b6001600160a01b0386166000908152600e602052604090205460ff168015612eb257506001600160a01b0385166000908152600e602052604090205460ff165b15612ec257612e1c868686613712565b612ecd868686613785565b82612edd57602c82905560318190555b505050505050565b60008183612f065760405162461bcd60e51b8152600401610d179190613960565b506000612adf8486613df1565b6034805460ff60a01b1916600160a01b179055603054602954600091612f4391600291612b3b9182908790612310565b90506000612f518383612d73565b9050612f5c8161321a565b6029544790600090612f7390612b719060026122ce565b90506000612f956002612b3b84612b3b6029548861231090919063ffffffff16565b90506000612fb283612b3b602b548761231090919063ffffffff16565b90506000612fcf84612b3b602a548861231090919063ffffffff16565b90506000612fec85612b3b6027548961231090919063ffffffff16565b9050600061300986612b3b6028548a61231090919063ffffffff16565b905047801561306e576003546130299085906001600160a01b03166133ad565b6004546130409084906001600160a01b03166133ad565b6005546130579083906001600160a01b03166133ad565b60065461306e9086906001600160a01b03166133ad565b891561307e5761307e8a876133e3565b50506034805460ff60a01b19169055505050505050505050565b6014546013546000918291825b6011548110156131ea578260076000601184815481106130c7576130c7613cd8565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180613132575081600860006011848154811061310b5761310b613cd8565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561314857601454601354945094505050509091565b61318e600760006011848154811061316257613162613cd8565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612d73565b92506131d660086000601184815481106131aa576131aa613cd8565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612d73565b9150806131e281613d04565b9150506130a5565b506013546014546131fa916122ce565b821015613211576014546013549350935050509091565b90939092509050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061324f5761324f613cd8565b6001600160a01b03928316602091820292909201810191909152603354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156132a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132cc9190613e13565b816001815181106132df576132df613cd8565b6001600160a01b03928316602091820292909201015260335461330591309116846123f1565b60335460405163791ac94760e01b81526001600160a01b039091169063791ac9479061333e908590600090869030904290600401613eb6565b600060405180830381600087803b15801561335857600080fd5b505af115801561336c573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516133a1929190613ef2565b60405180910390a15050565b6040516001600160a01b0382169083156108fc029084906000818181858888f19350505050158015611b1f573d6000803e3d6000fd5b6033546133fb9030906001600160a01b0316846123f1565b6033546001600160a01b031663f305d7198230856000806134246000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561348c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119ab9190613f13565b6000806000806134c0856137c9565b905060006134cd866137e6565b905060006134e5826134df8986612d73565b90612d73565b979296509094509092505050565b60008080806135028886612310565b905060006135108887612310565b9050600061351e8888612310565b90506000613530826134df8686612d73565b939b939a50919850919650505050505050565b60008060008060008061355587612d24565b6001600160a01b038f16600090815260086020526040902054959b509399509197509550935091506135879088612d73565b6001600160a01b038a166000908152600860209081526040808320939093556007905220546135b69087612d73565b6001600160a01b03808b1660009081526007602052604080822093909355908a16815220546135e59086612392565b6001600160a01b03891660009081526007602052604090205561360781613803565b613611848361388b565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161365691815260200190565b60405180910390a3505050505050505050565b60008060008060008061367b87612d24565b6001600160a01b038f16600090815260076020526040902054959b509399509197509550935091506136ad9087612d73565b6001600160a01b03808b16600090815260076020908152604080832094909455918b168152600890915220546136e39084612392565b6001600160a01b0389166000908152600860209081526040808320939093556007905220546135e59086612392565b60008060008060008061372487612d24565b6001600160a01b038f16600090815260086020526040902054959b509399509197509550935091506137569088612d73565b6001600160a01b038a166000908152600860209081526040808320939093556007905220546136ad9087612d73565b60008060008060008061379787612d24565b6001600160a01b038f16600090815260076020526040902054959b509399509197509550935091506135b69087612d73565b6000610ed66103e8612b3b602c548561231090919063ffffffff16565b6000610ed66103e8612b3b6031548561231090919063ffffffff16565b600061380d612ae8565b9050600061381b8383612310565b306000908152600760205260409020549091506138389082612392565b30600090815260076020908152604080832093909355600e9052205460ff1615611b1f57306000908152600860205260409020546138769084612392565b30600090815260086020526040902055505050565b6014546138989083612d73565b6014556015546138a89082612392565b6015555050565b60008083601f8401126138c157600080fd5b50813567ffffffffffffffff8111156138d957600080fd5b6020830191508360208260051b85010111156138f457600080fd5b9250929050565b80151581146111e957600080fd5b60008060006040848603121561391e57600080fd5b833567ffffffffffffffff81111561393557600080fd5b613941868287016138af565b9094509250506020840135613955816138fb565b809150509250925092565b600060208083528351808285015260005b8181101561398d57858101830151858201604001528201613971565b8181111561399f576000604083870101525b50601f01601f1916929092016040019392505050565b6000602082840312156139c757600080fd5b5035919050565b6001600160a01b03811681146111e957600080fd5b600080604083850312156139f657600080fd5b8235613a01816139ce565b946020939093013593505050565b60008060408385031215613a2257600080fd5b8235613a01816138fb565b60008060408385031215613a4057600080fd5b50508035926020909101359150565b600080600060608486031215613a6457600080fd5b8335613a6f816139ce565b92506020840135613a7f816139ce565b929592945050506040919091013590565b60008060408385031215613aa357600080fd5b8235613aae816139ce565b91506020830135613abe816139ce565b809150509250929050565b600060208284031215613adb57600080fd5b8135611269816138fb565b600060208284031215613af857600080fd5b8135611269816139ce565b60008060408385031215613b1657600080fd5b823591506020830135613abe816138fb565b60008060408385031215613b3b57600080fd5b8235613b46816139ce565b91506020830135613abe816138fb565b60008060008060408587031215613b6c57600080fd5b843567ffffffffffffffff80821115613b8457600080fd5b613b90888389016138af565b90965094506020870135915080821115613ba957600080fd5b50613bb6878288016138af565b95989497509550505050565b60008060208385031215613bd557600080fd5b823567ffffffffffffffff811115613bec57600080fd5b613bf8858286016138af565b90969095509350505050565b60008060008060808587031215613c1a57600080fd5b8435613c25816139ce565b93506020850135613c35816139ce565b92506040850135613c45816139ce565b91506060850135613c55816139ce565b939692955090935050565b60008060008060008060c08789031215613c7957600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613d1657613d16613cee565b5060010190565b600181811c90821680613d3157607f821691505b602082108103613d5157634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215613d6957600080fd5b5051919050565b600060208284031215613d8257600080fd5b8151611269816138fb565b600082821015613d9f57613d9f613cee565b500390565b634e487b7160e01b600052603160045260246000fd5b6000816000190483118215151615613dd457613dd4613cee565b500290565b60008219821115613dec57613dec613cee565b500190565b600082613e0e57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215613e2557600080fd5b8151611269816139ce565b60208082526022908201527f416d6f756e742047726561746572207468616e206d61782073656c6c206c696d6040820152611a5d60f21b606082015260800190565b600081518084526020808501945080840160005b83811015613eab5781516001600160a01b031687529582019590820190600101613e86565b509495945050505050565b85815284602082015260a060408201526000613ed560a0830186613e72565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000613f0b6040830184613e72565b949350505050565b600080600060608486031215613f2857600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204d4a5b4ceb9deffc71323124301c446a2b26ea05166ba3363c8ab1c178fa46ac64736f6c634300080d00330000000000000000000000006b835fe72484be44d37ecc63797f33cdca60c6f80000000000000000000000008570d4dd8bd6ed70bb3c0abd669f042c1a33ba4500000000000000000000000065eff2b4a3491191a7a655afb52c5bb7b1636499000000000000000000000000e181b8e844f36e851340f3dcb8ce4eba7aeecca7

Deployed Bytecode

0x60806040526004361061041f5760003560e01c806365216a411161021e57806395d89b4111610123578063d628df9c116100ab578063eafb5a3c1161007a578063eafb5a3c14610c4c578063f259c57b14610c6c578063f2fde38b14610c8c578063f9f2907d14610cac578063ffb54a9914610ccc57600080fd5b8063d628df9c14610bba578063dc44b6a014610bd0578063dd62ed3e14610be6578063ea2f0b3714610c2c57600080fd5b8063bf56b371116100f2578063bf56b37114610b42578063c5d2418914610b58578063c860795214610b6e578063c9cf778914610b84578063d20e81ee14610b9a57600080fd5b806395d89b4114610ad3578063a457c2d714610ae8578063a9059cbb14610b08578063a985ceef14610b2857600080fd5b80637d5d3944116101a657806388f820201161017557806388f8202014610a1c5780638da5cb5b14610a555780638e3d605814610a735780638ea5220f14610a935780638f4590d214610ab357600080fd5b80637d5d3944146109b057806383672f3e146109c657806384530c46146109e657806388790a6814610a0657600080fd5b8063722b62ad116101ed578063722b62ad1461092e578063743942b6146109445780637598f8bc1461096457806375f0a8741461097a57806378109e541461099a57600080fd5b806365216a41146108b957806370a08231146108d9578063715018a6146108f957806371b9189c1461090e57600080fd5b80632dd5efe7116103245780634549b039116102ac5780634b01547f1161027b5780634b01547f1461081357806350af449e1461083357806350db71fb1461086357806352390c021461088357806362015852146108a357600080fd5b80634549b0391461077a5780634626402b1461079a57806349bd5a5e146107ba5780634a4fbeec146107da57600080fd5b806337533c91116102f357806337533c91146106ef57806339509351146107045780633bd5d173146107245780633ddf65ab14610744578063401aa5c01461076457600080fd5b80632dd5efe71461066d578063313ce5671461068d57806334a2a67d146106b95780633685d419146106cf57600080fd5b8063207a3c47116103a757806325b86edf1161037657806325b86edf146105d65780632691bc80146105f6578063297d50c5146106175780632a9b80721461062d5780632d8381191461064d57600080fd5b8063207a3c471461056a5780632378cc6d1461058057806323b872dd146105a057806324fcf8cf146105c057600080fd5b8063095ea7b3116103ee578063095ea7b3146104b85780630d45c0e3146104e857806313114a9d146105085780631694505e1461051d57806318160ddd1461055557600080fd5b80630445b6671461042b57806306485a951461045457806306fdde031461047657806309302dc61461049857600080fd5b3661042657005b600080fd5b34801561043757600080fd5b5061044160325481565b6040519081526020015b60405180910390f35b34801561046057600080fd5b5061047461046f366004613909565b610ced565b005b34801561048257600080fd5b5061048b610de2565b60405161044b9190613960565b3480156104a457600080fd5b506104746104b33660046139b5565b610e74565b3480156104c457600080fd5b506104d86104d33660046139e3565b610ec5565b604051901515815260200161044b565b3480156104f457600080fd5b50610474610503366004613a0f565b610edc565b34801561051457600080fd5b50601554610441565b34801561052957600080fd5b5060335461053d906001600160a01b031681565b6040516001600160a01b03909116815260200161044b565b34801561056157600080fd5b50601354610441565b34801561057657600080fd5b5061044160195481565b34801561058c57600080fd5b5061047461059b366004613a2d565b610f64565b3480156105ac57600080fd5b506104d86105bb366004613a4f565b610fc8565b3480156105cc57600080fd5b5061044160255481565b3480156105e257600080fd5b506104746105f1366004613a90565b611031565b34801561060257600080fd5b506034546104d890600160b01b900460ff1681565b34801561062357600080fd5b5061044160265481565b34801561063957600080fd5b50610474610648366004613ac9565b61113d565b34801561065957600080fd5b506104416106683660046139b5565b6111ec565b34801561067957600080fd5b50610474610688366004613ae6565b611270565b34801561069957600080fd5b50601254600160a01b900460ff1660405160ff909116815260200161044b565b3480156106c557600080fd5b50610441601f5481565b3480156106db57600080fd5b506104746106ea366004613ae6565b6112be565b3480156106fb57600080fd5b50610474611474565b34801561071057600080fd5b506104d861071f3660046139e3565b6114e4565b34801561073057600080fd5b5061047461073f3660046139b5565b61151a565b34801561075057600080fd5b5061047461075f366004613ac9565b611604565b34801561077057600080fd5b50610441601e5481565b34801561078657600080fd5b50610441610795366004613b03565b61164c565b3480156107a657600080fd5b5060055461053d906001600160a01b031681565b3480156107c657600080fd5b5060345461053d906001600160a01b031681565b3480156107e657600080fd5b506104d86107f5366004613ae6565b6001600160a01b03166000908152600a602052604090205460ff1690565b34801561081f57600080fd5b5061047461082e366004613ac9565b6116d9565b34801561083f57600080fd5b506104d861084e366004613ae6565b60106020526000908152604090205460ff1681565b34801561086f57600080fd5b5061047461087e366004613b28565b611721565b34801561088f57600080fd5b5061047461089e366004613ae6565b611776565b3480156108af57600080fd5b50610441601c5481565b3480156108c557600080fd5b506104746108d4366004613b56565b611860565b3480156108e557600080fd5b506104416108f4366004613ae6565b6119b2565b34801561090557600080fd5b50610474611a11565b34801561091a57600080fd5b50610474610929366004613bc2565b611a85565b34801561093a57600080fd5b50610441602e5481565b34801561095057600080fd5b5061047461095f366004613ae6565b611b24565b34801561097057600080fd5b5061044160245481565b34801561098657600080fd5b5060035461053d906001600160a01b031681565b3480156109a657600080fd5b5061044160185481565b3480156109bc57600080fd5b50610441601a5481565b3480156109d257600080fd5b506104746109e1366004613c04565b611b83565b3480156109f257600080fd5b50610474610a01366004613bc2565b611bfd565b348015610a1257600080fd5b5061044160215481565b348015610a2857600080fd5b506104d8610a37366004613ae6565b6001600160a01b03166000908152600e602052604090205460ff1690565b348015610a6157600080fd5b506000546001600160a01b031661053d565b348015610a7f57600080fd5b5060045461053d906001600160a01b031681565b348015610a9f57600080fd5b5060065461053d906001600160a01b031681565b348015610abf57600080fd5b50610474610ace366004613a2d565b611c97565b348015610adf57600080fd5b5061048b611ce1565b348015610af457600080fd5b506104d8610b033660046139e3565b611cf0565b348015610b1457600080fd5b506104d8610b233660046139e3565b611d3f565b348015610b3457600080fd5b50602d546104d89060ff1681565b348015610b4e57600080fd5b50610441600b5481565b348015610b6457600080fd5b50610441601d5481565b348015610b7a57600080fd5b5061044160225481565b348015610b9057600080fd5b5061044160235481565b348015610ba657600080fd5b50610474610bb5366004613c60565b611d4c565b348015610bc657600080fd5b5061044160205481565b348015610bdc57600080fd5b50610441601b5481565b348015610bf257600080fd5b50610441610c01366004613a90565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b348015610c3857600080fd5b50610474610c47366004613ae6565b611dd5565b348015610c5857600080fd5b50610474610c67366004613ae6565b611e20565b348015610c7857600080fd5b50610474610c87366004613ae6565b61214c565b348015610c9857600080fd5b50610474610ca7366004613ae6565b61219a565b348015610cb857600080fd5b50610474610cc7366004613c60565b612284565b348015610cd857600080fd5b506034546104d890600160a81b900460ff1681565b6000546001600160a01b03163314610d205760405162461bcd60e51b8152600401610d1790613ca3565b60405180910390fd5b60005b82811015610ddc57600f6000858584818110610d4157610d41613cd8565b9050602002016020810190610d569190613ae6565b6001600160a01b0316815260208101919091526040016000205460ff16610dcc5781600a6000868685818110610d8e57610d8e613cd8565b9050602002016020810190610da39190613ae6565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b610dd581613d04565b9050610d23565b50505050565b606060168054610df190613d1d565b80601f0160208091040260200160405190810160405280929190818152602001828054610e1d90613d1d565b8015610e6a5780601f10610e3f57610100808354040283529160200191610e6a565b820191906000526020600020905b815481529060010190602001808311610e4d57829003601f168201915b5050505050905090565b6000546001600160a01b03163314610e9e5760405162461bcd60e51b8152600401610d1790613ca3565b610ebf81610eb96103e86013546122ce90919063ffffffff16565b90612310565b60185550565b6000610ed23384846123f1565b5060015b92915050565b6000546001600160a01b03163314610f065760405162461bcd60e51b8152600401610d1790613ca3565b62015180811115610f4d5760405162461bcd60e51b8152602060048201526011602482015270115e18d959591cc81d1a19481b1a5b5a5d607a1b6044820152606401610d17565b602d805460ff191692151592909217909155602e55565b6000546001600160a01b03163314610f8e5760405162461bcd60e51b8152600401610d1790613ca3565b610fa981610eb96103e86013546122ce90919063ffffffff16565b601955601354610fc1908390610eb9906103e86122ce565b601a555050565b6000610fd5848484612515565b611027843361102285604051806060016040528060288152602001613f42602891396001600160a01b038a1660009081526009602090815260408083203384529091529020549190612aae565b6123f1565b5060019392505050565b6000546001600160a01b0316331461105b5760405162461bcd60e51b8152600401610d1790613ca3565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156110a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c69190613d57565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303816000875af1158015611119573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc9190613d70565b6000546001600160a01b031633146111675760405162461bcd60e51b8152600401610d1790613ca3565b6034805460ff60a81b1916600160a81b8315150217905561118730611776565b60345461119c906001600160a01b0316611776565b6012546111b1906001600160a01b0316611776565b6111c661089e6000546001600160a01b031690565b603454600160a81b900460ff1680156111df5750600b54155b156111e95743600b555b50565b60006014548211156112535760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610d17565b600061125d612ae8565b905061126983826122ce565b9392505050565b6000546001600160a01b0316331461129a5760405162461bcd60e51b8152600401610d1790613ca3565b6001600160a01b03166000908152600d60205260409020805460ff19166001179055565b6000546001600160a01b031633146112e85760405162461bcd60e51b8152600401610d1790613ca3565b6001600160a01b0381166000908152600e602052604090205460ff166113505760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610d17565b60005b60115481101561147057816001600160a01b03166011828154811061137a5761137a613cd8565b6000918252602090912001546001600160a01b03160361145e57601180546113a490600190613d8d565b815481106113b4576113b4613cd8565b600091825260209091200154601180546001600160a01b0390921691839081106113e0576113e0613cd8565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600882526040808220829055600e90925220805460ff19169055601180548061143857611438613da4565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061146881613d04565b915050611353565b5050565b6000546001600160a01b0316331461149e5760405162461bcd60e51b8152600401610d1790613ca3565b6034805460ff60b81b191690556013546114c190600290610eb9906103e86122ce565b601855602d805460ff191660011790556114e26114dd306119b2565b612b0b565b565b3360008181526009602090815260408083206001600160a01b03871684529091528120549091610ed29185906110229086612392565b336000818152600e602052604090205460ff161561158f5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610d17565b600061159a83612d24565b505050506001600160a01b0384166000908152600760205260409020549192506115c691905082612d73565b6001600160a01b0383166000908152600760205260409020556014546115ec9082612d73565b6014556015546115fc9084612392565b601555505050565b6000546001600160a01b0316331461162e5760405162461bcd60e51b8152600401610d1790613ca3565b60348054911515600160b81b0260ff60b81b19909216919091179055565b60006013548311156116a05760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610d17565b816116bf5760006116b084612d24565b50939550610ed6945050505050565b60006116ca84612d24565b50929550610ed6945050505050565b6000546001600160a01b031633146117035760405162461bcd60e51b8152600401610d1790613ca3565b60348054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b0316331461174b5760405162461bcd60e51b8152600401610d1790613ca3565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117a05760405162461bcd60e51b8152600401610d1790613ca3565b6001600160a01b038116600090815260076020526040902054156117fa576001600160a01b0381166000908152600760205260409020546117e0906111ec565b6001600160a01b0382166000908152600860205260409020555b6001600160a01b03166000818152600e60205260408120805460ff191660019081179091556011805491820181559091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680180546001600160a01b0319169091179055565b336000908152600c602052604081205460ff166118d55760405162461bcd60e51b815260206004820152602d60248201527f41697264726f702063616e206f6e6c7920626520646f6e65206279206578636c60448201526c756465642066726f6d2066656560981b6064820152608401610d17565b8382146119375760405162461bcd60e51b815260206004820152602a60248201527f486f6c6465727320616e6420616d6f756e74206c656e677468206d757374206260448201526965207468652073616d6560b01b6064820152608401610d17565b838110156119ab576119993386868481811061195557611955613cd8565b905060200201602081019061196a9190613ae6565b85858581811061197c5761197c613cd8565b90506020020135633b9aca006119929190613dba565b6000612db5565b6119a4600182613dd9565b9050611937565b5050505050565b6001600160a01b0381166000908152600e602052604081205460ff16156119ef57506001600160a01b031660009081526008602052604090205490565b6001600160a01b038216600090815260076020526040902054610ed6906111ec565b6000546001600160a01b03163314611a3b5760405162461bcd60e51b8152600401610d1790613ca3565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314611aaf5760405162461bcd60e51b8152600401610d1790613ca3565b60005b81811015611b1f576001600c6000858585818110611ad257611ad2613cd8565b9050602002016020810190611ae79190613ae6565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611b1881613d04565b9050611ab2565b505050565b6000546001600160a01b03163314611b4e5760405162461bcd60e51b8152600401610d1790613ca3565b6040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015611470573d6000803e3d6000fd5b6000546001600160a01b03163314611bad5760405162461bcd60e51b8152600401610d1790613ca3565b600380546001600160a01b039586166001600160a01b0319918216179091556006805492861692821692909217909155600480549385169382169390931790925560058054919093169116179055565b6000546001600160a01b03163314611c275760405162461bcd60e51b8152600401610d1790613ca3565b60005b81811015611b1f576001600f6000858585818110611c4a57611c4a613cd8565b9050602002016020810190611c5f9190613ae6565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611c9081613d04565b9050611c2a565b6000546001600160a01b03163314611cc15760405162461bcd60e51b8152600401610d1790613ca3565b8082601354611cd09190613dba565b611cda9190613df1565b6032555050565b606060178054610df190613d1d565b6000610ed2338461102285604051806060016040528060258152602001613f6a602591393360009081526009602090815260408083206001600160a01b038d1684529091529020549190612aae565b6000610ed2338484612515565b6000546001600160a01b03163314611d765760405162461bcd60e51b8152600401610d1790613ca3565b601b859055601d849055601c839055601e869055601f8290556020819055602c8690556029859055602b839055602a84905560278290556028819055611dca81611dc4848187818b8b612392565b90612392565b603055505050505050565b6000546001600160a01b03163314611dff5760405162461bcd60e51b8152600401610d1790613ca3565b6001600160a01b03166000908152600c60205260409020805460ff19169055565b6000546001600160a01b03163314611e4a5760405162461bcd60e51b8152600401610d1790613ca3565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb39190613e13565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f249190613e13565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611f6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f939190613e13565b90506001600160a01b03811661210c57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fe1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120059190613e13565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612052573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120769190613e13565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156120c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e79190613e13565b603480546001600160a01b0319166001600160a01b0392909216919091179055612128565b603480546001600160a01b0319166001600160a01b0383161790555b50603380546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b031633146121765760405162461bcd60e51b8152600401610d1790613ca3565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b6000546001600160a01b031633146121c45760405162461bcd60e51b8152600401610d1790613ca3565b6001600160a01b0381166122295760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d17565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146122ae5760405162461bcd60e51b8152600401610d1790613ca3565b602194909455602292909255602355602492909255602691909155602555565b600061126983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ee5565b60008260000361232257506000610ed6565b600061232e8385613dba565b90508261233b8583613df1565b146112695760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610d17565b60008061239f8385613dd9565b9050838110156112695760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610d17565b6001600160a01b0383166124535760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d17565b6001600160a01b0382166124b45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d17565b6001600160a01b0383811660008181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166125795760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d17565b6001600160a01b0382166125db5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d17565b6000811161263d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610d17565b6001600160a01b0383166000908152600a602052604090205460ff16156126a65760405162461bcd60e51b815260206004820152601760248201527f596f752068617665206e6f20706f7765722068657265210000000000000000006044820152606401610d17565b6000546001600160a01b038481169116148015906126d257506000546001600160a01b03838116911614155b1561273057603454600160a81b900460ff166127305760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610d17565b6034546000906001600160a01b038581169116148061275c57506034546001600160a01b038481169116145b80156127a457506001600160a01b0384166000908152600c602052604090205460ff16806127a257506001600160a01b0383166000908152600c602052604090205460ff165b155b156127cf576019548211156127cb5760405162461bcd60e51b8152600401610d1790613e30565b5060015b6000600b5411801561281357506001600160a01b0383166000908152600d602052604090205460ff1615801561281357506000546001600160a01b03858116911614155b1561288757601854612824846119b2565b61282e9084613dd9565b11156128875760405162461bcd60e51b815260206004820152602260248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d6974604482015261195960f21b6064820152608401610d17565b602d5460ff1680156128a657506034546001600160a01b038481169116145b80156128cb57506001600160a01b03841660009081526010602052604090205460ff16155b1561296d576001600160a01b0384166000908152602f602052604090205442116129465760405162461bcd60e51b815260206004820152602660248201527f506c65617365207761697420666f7220636f6f6c646f776e206265747765656e6044820152652073656c6c7360d01b6064820152608401610d17565b602e546129539042613dd9565b6001600160a01b0385166000908152602f60205260409020555b603054603155601e54602c55603454600160a81b900460ff16801561299f57506034546001600160a01b038481169116145b156129f957601a548211156129c65760405162461bcd60e51b8152600401610d1790613e30565b6129ef602654611dc4602554611dc4602354611dc460225460215461239290919063ffffffff16565b603155602454602c555b603454600160b01b900460ff1615612a3c57603454600160a81b900460ff168015612a3157506034546001600160a01b038581169116145b15612a3c5760006031555b603454600160a01b900460ff16158015612a5f5750603454600160a81b900460ff165b8015612a7857506034546001600160a01b038481169116145b15612aa2576000612a88306119b2565b90506032548110612aa05750603254612aa081612f13565b505b610ddc84848484612db5565b60008184841115612ad25760405162461bcd60e51b8152600401610d179190613960565b506000612adf8486613d8d565b95945050505050565b6000806000612af5613098565b9092509050612b0482826122ce565b9250505090565b6034805460ff60a01b1916600160a01b179055603054602954600091612b4191600291612b3b9182908790612310565b906122ce565b90506000612b4f8383612d73565b9050612b5a8161321a565b6029544790600090612b7a90612b719060026122ce565b60305490612d73565b90506000612b9c6002612b3b84612b3b6029548861231090919063ffffffff16565b90506000612bb983612b3b602b548761231090919063ffffffff16565b90506000612bd684612b3b602a548861231090919063ffffffff16565b90506000612bf385612b3b6027548961231090919063ffffffff16565b90506000612c1086612b3b6028548a61231090919063ffffffff16565b9050478015612c7557600354612c309085906001600160a01b03166133ad565b600454612c479084906001600160a01b03166133ad565b600554612c5e9083906001600160a01b03166133ad565b600654612c759086906001600160a01b03166133ad565b8915612c8557612c858a876133e3565b603454601254612ca2916001600160a01b0390811691168d612515565b603460009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612cf257600080fd5b505af1158015612d06573d6000803e3d6000fd5b50506034805460ff60a01b1916905550505050505050505050505050565b6000806000806000806000806000612d3b8a6134b1565b9250925092506000806000612d598d8686612d54612ae8565b6134f3565b919f909e50909c50959a5093985091965092945050505050565b600061126983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612aae565b602c5460315482612dcb576000602c8190556031555b6001600160a01b0386166000908152600e602052604090205460ff168015612e0c57506001600160a01b0385166000908152600e602052604090205460ff16155b15612e2157612e1c868686613543565b612ecd565b6001600160a01b0386166000908152600e602052604090205460ff16158015612e6257506001600160a01b0385166000908152600e602052604090205460ff165b15612e7257612e1c868686613669565b6001600160a01b0386166000908152600e602052604090205460ff168015612eb257506001600160a01b0385166000908152600e602052604090205460ff165b15612ec257612e1c868686613712565b612ecd868686613785565b82612edd57602c82905560318190555b505050505050565b60008183612f065760405162461bcd60e51b8152600401610d179190613960565b506000612adf8486613df1565b6034805460ff60a01b1916600160a01b179055603054602954600091612f4391600291612b3b9182908790612310565b90506000612f518383612d73565b9050612f5c8161321a565b6029544790600090612f7390612b719060026122ce565b90506000612f956002612b3b84612b3b6029548861231090919063ffffffff16565b90506000612fb283612b3b602b548761231090919063ffffffff16565b90506000612fcf84612b3b602a548861231090919063ffffffff16565b90506000612fec85612b3b6027548961231090919063ffffffff16565b9050600061300986612b3b6028548a61231090919063ffffffff16565b905047801561306e576003546130299085906001600160a01b03166133ad565b6004546130409084906001600160a01b03166133ad565b6005546130579083906001600160a01b03166133ad565b60065461306e9086906001600160a01b03166133ad565b891561307e5761307e8a876133e3565b50506034805460ff60a01b19169055505050505050505050565b6014546013546000918291825b6011548110156131ea578260076000601184815481106130c7576130c7613cd8565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180613132575081600860006011848154811061310b5761310b613cd8565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561314857601454601354945094505050509091565b61318e600760006011848154811061316257613162613cd8565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612d73565b92506131d660086000601184815481106131aa576131aa613cd8565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612d73565b9150806131e281613d04565b9150506130a5565b506013546014546131fa916122ce565b821015613211576014546013549350935050509091565b90939092509050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061324f5761324f613cd8565b6001600160a01b03928316602091820292909201810191909152603354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156132a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132cc9190613e13565b816001815181106132df576132df613cd8565b6001600160a01b03928316602091820292909201015260335461330591309116846123f1565b60335460405163791ac94760e01b81526001600160a01b039091169063791ac9479061333e908590600090869030904290600401613eb6565b600060405180830381600087803b15801561335857600080fd5b505af115801561336c573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516133a1929190613ef2565b60405180910390a15050565b6040516001600160a01b0382169083156108fc029084906000818181858888f19350505050158015611b1f573d6000803e3d6000fd5b6033546133fb9030906001600160a01b0316846123f1565b6033546001600160a01b031663f305d7198230856000806134246000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561348c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119ab9190613f13565b6000806000806134c0856137c9565b905060006134cd866137e6565b905060006134e5826134df8986612d73565b90612d73565b979296509094509092505050565b60008080806135028886612310565b905060006135108887612310565b9050600061351e8888612310565b90506000613530826134df8686612d73565b939b939a50919850919650505050505050565b60008060008060008061355587612d24565b6001600160a01b038f16600090815260086020526040902054959b509399509197509550935091506135879088612d73565b6001600160a01b038a166000908152600860209081526040808320939093556007905220546135b69087612d73565b6001600160a01b03808b1660009081526007602052604080822093909355908a16815220546135e59086612392565b6001600160a01b03891660009081526007602052604090205561360781613803565b613611848361388b565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161365691815260200190565b60405180910390a3505050505050505050565b60008060008060008061367b87612d24565b6001600160a01b038f16600090815260076020526040902054959b509399509197509550935091506136ad9087612d73565b6001600160a01b03808b16600090815260076020908152604080832094909455918b168152600890915220546136e39084612392565b6001600160a01b0389166000908152600860209081526040808320939093556007905220546135e59086612392565b60008060008060008061372487612d24565b6001600160a01b038f16600090815260086020526040902054959b509399509197509550935091506137569088612d73565b6001600160a01b038a166000908152600860209081526040808320939093556007905220546136ad9087612d73565b60008060008060008061379787612d24565b6001600160a01b038f16600090815260076020526040902054959b509399509197509550935091506135b69087612d73565b6000610ed66103e8612b3b602c548561231090919063ffffffff16565b6000610ed66103e8612b3b6031548561231090919063ffffffff16565b600061380d612ae8565b9050600061381b8383612310565b306000908152600760205260409020549091506138389082612392565b30600090815260076020908152604080832093909355600e9052205460ff1615611b1f57306000908152600860205260409020546138769084612392565b30600090815260086020526040902055505050565b6014546138989083612d73565b6014556015546138a89082612392565b6015555050565b60008083601f8401126138c157600080fd5b50813567ffffffffffffffff8111156138d957600080fd5b6020830191508360208260051b85010111156138f457600080fd5b9250929050565b80151581146111e957600080fd5b60008060006040848603121561391e57600080fd5b833567ffffffffffffffff81111561393557600080fd5b613941868287016138af565b9094509250506020840135613955816138fb565b809150509250925092565b600060208083528351808285015260005b8181101561398d57858101830151858201604001528201613971565b8181111561399f576000604083870101525b50601f01601f1916929092016040019392505050565b6000602082840312156139c757600080fd5b5035919050565b6001600160a01b03811681146111e957600080fd5b600080604083850312156139f657600080fd5b8235613a01816139ce565b946020939093013593505050565b60008060408385031215613a2257600080fd5b8235613a01816138fb565b60008060408385031215613a4057600080fd5b50508035926020909101359150565b600080600060608486031215613a6457600080fd5b8335613a6f816139ce565b92506020840135613a7f816139ce565b929592945050506040919091013590565b60008060408385031215613aa357600080fd5b8235613aae816139ce565b91506020830135613abe816139ce565b809150509250929050565b600060208284031215613adb57600080fd5b8135611269816138fb565b600060208284031215613af857600080fd5b8135611269816139ce565b60008060408385031215613b1657600080fd5b823591506020830135613abe816138fb565b60008060408385031215613b3b57600080fd5b8235613b46816139ce565b91506020830135613abe816138fb565b60008060008060408587031215613b6c57600080fd5b843567ffffffffffffffff80821115613b8457600080fd5b613b90888389016138af565b90965094506020870135915080821115613ba957600080fd5b50613bb6878288016138af565b95989497509550505050565b60008060208385031215613bd557600080fd5b823567ffffffffffffffff811115613bec57600080fd5b613bf8858286016138af565b90969095509350505050565b60008060008060808587031215613c1a57600080fd5b8435613c25816139ce565b93506020850135613c35816139ce565b92506040850135613c45816139ce565b91506060850135613c55816139ce565b939692955090935050565b60008060008060008060c08789031215613c7957600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613d1657613d16613cee565b5060010190565b600181811c90821680613d3157607f821691505b602082108103613d5157634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215613d6957600080fd5b5051919050565b600060208284031215613d8257600080fd5b8151611269816138fb565b600082821015613d9f57613d9f613cee565b500390565b634e487b7160e01b600052603160045260246000fd5b6000816000190483118215151615613dd457613dd4613cee565b500290565b60008219821115613dec57613dec613cee565b500190565b600082613e0e57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215613e2557600080fd5b8151611269816139ce565b60208082526022908201527f416d6f756e742047726561746572207468616e206d61782073656c6c206c696d6040820152611a5d60f21b606082015260800190565b600081518084526020808501945080840160005b83811015613eab5781516001600160a01b031687529582019590820190600101613e86565b509495945050505050565b85815284602082015260a060408201526000613ed560a0830186613e72565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000613f0b6040830184613e72565b949350505050565b600080600060608486031215613f2857600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204d4a5b4ceb9deffc71323124301c446a2b26ea05166ba3363c8ab1c178fa46ac64736f6c634300080d0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000006b835fe72484be44d37ecc63797f33cdca60c6f80000000000000000000000008570d4dd8bd6ed70bb3c0abd669f042c1a33ba4500000000000000000000000065eff2b4a3491191a7a655afb52c5bb7b1636499000000000000000000000000e181b8e844f36e851340f3dcb8ce4eba7aeecca7

-----Decoded View---------------
Arg [0] : _marketingWallet (address): 0x6b835Fe72484be44d37EcC63797f33CDCA60c6f8
Arg [1] : _treasuryWallet (address): 0x8570D4Dd8bD6eD70Bb3C0Abd669f042C1a33bA45
Arg [2] : _devWallet (address): 0x65Eff2B4A3491191A7a655afb52c5bb7B1636499
Arg [3] : _passiveWallet (address): 0xE181B8e844F36e851340F3dcb8Ce4eBA7AeeccA7

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000006b835fe72484be44d37ecc63797f33cdca60c6f8
Arg [1] : 0000000000000000000000008570d4dd8bd6ed70bb3c0abd669f042c1a33ba45
Arg [2] : 00000000000000000000000065eff2b4a3491191a7a655afb52c5bb7b1636499
Arg [3] : 000000000000000000000000e181b8e844f36e851340f3dcb8ce4eba7aeecca7


Deployed Bytecode Sourcemap

15310:28541:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18113:56;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;18113:56:0;;;;;;;;40391:264;;;;;;;;;;-1:-1:-1;40391:264:0;;;;;:::i;:::-;;:::i;:::-;;21752:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;41338:175::-;;;;;;;;;;-1:-1:-1;41338:175:0;;;;;:::i;:::-;;:::i;22664:161::-;;;;;;;;;;-1:-1:-1;22664:161:0;;;;;:::i;:::-;;:::i;:::-;;;2670:14:1;;2663:22;2645:41;;2633:2;2618:18;22664:161:0;2505:187:1;37780:244:0;;;;;;;;;;-1:-1:-1;37780:244:0;;;;;:::i;:::-;;:::i;23785:87::-;;;;;;;;;;-1:-1:-1;23854:10:0;;23785:87;;18189:41;;;;;;;;;;-1:-1:-1;18189:41:0;;;;-1:-1:-1;;;;;18189:41:0;;;;;;-1:-1:-1;;;;;3202:32:1;;;3184:51;;3172:2;3157:18;18189:41:0;3011:230:1;22029:95:0;;;;;;;;;;-1:-1:-1;22109:7:0;;22029:95;;16668:55;;;;;;;;;;;;;;;;41521:272;;;;;;;;;;-1:-1:-1;41521:272:0;;;;;:::i;:::-;;:::i;22833:313::-;;;;;;;;;;-1:-1:-1;22833:313:0;;;;;:::i;:::-;;:::i;17336:36::-;;;;;;;;;;;;;;;;41153:177;;;;;;;;;;-1:-1:-1;41153:177:0;;;;;:::i;:::-;;:::i;18340:34::-;;;;;;;;;;-1:-1:-1;18340:34:0;;;;-1:-1:-1;;;18340:34:0;;;;;;17406:35;;;;;;;;;;;;;;;;20394:349;;;;;;;;;;-1:-1:-1;20394:349:0;;;;;:::i;:::-;;:::i;24717:253::-;;;;;;;;;;-1:-1:-1;24717:253:0;;;;;:::i;:::-;;:::i;41801:113::-;;;;;;;;;;-1:-1:-1;41801:113:0;;;;;:::i;:::-;;:::i;21938:83::-;;;;;;;;;;-1:-1:-1;22004:9:0;;-1:-1:-1;;;22004:9:0;;;;21938:83;;5036:4:1;5024:17;;;5006:36;;4994:2;4979:18;21938:83:0;4864:184:1;17002:34:0;;;;;;;;;;;;;;;;25249:479;;;;;;;;;;-1:-1:-1;25249:479:0;;;;;:::i;:::-;;:::i;20975:238::-;;;;;;;;;;;;;:::i;23154:218::-;;;;;;;;;;-1:-1:-1;23154:218:0;;;;;:::i;:::-;;:::i;23884:377::-;;;;;;;;;;-1:-1:-1;23884:377:0;;;;;:::i;:::-;;:::i;20867:96::-;;;;;;;;;;-1:-1:-1;20867:96:0;;;;;:::i;:::-;;:::i;16952:37::-;;;;;;;;;;;;;;;;24273:436;;;;;;;;;;-1:-1:-1;24273:436:0;;;;;:::i;:::-;;:::i;15523:37::-;;;;;;;;;;-1:-1:-1;15523:37:0;;;;-1:-1:-1;;;;;15523:37:0;;;18237:28;;;;;;;;;;-1:-1:-1;18237:28:0;;;;-1:-1:-1;;;;;18237:28:0;;;40273:106;;;;;;;;;;-1:-1:-1;40273:106:0;;;;;:::i;:::-;-1:-1:-1;;;;;40353:18:0;40329:4;40353:18;;;:9;:18;;;;;;;;;40273:106;20757:102;;;;;;;;;;-1:-1:-1;20757:102:0;;;;;:::i;:::-;;:::i;16103:49::-;;;;;;;;;;-1:-1:-1;16103:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;40663:129;;;;;;;;;;-1:-1:-1;40663:129:0;;;;;:::i;:::-;;:::i;24978:263::-;;;;;;;;;;-1:-1:-1;24978:263:0;;;;;:::i;:::-;;:::i;16855:30::-;;;;;;;;;;;;;;;;42108:510;;;;;;;;;;-1:-1:-1;42108:510:0;;;;;:::i;:::-;;:::i;22132:198::-;;;;;;;;;;-1:-1:-1;22132:198:0;;;;;:::i;:::-;;:::i;6941:148::-;;;;;;;;;;;;;:::i;39446:198::-;;;;;;;;;;-1:-1:-1;39446:198:0;;;;;:::i;:::-;;:::i;17831:46::-;;;;;;;;;;;;;;;;41010:135;;;;;;;;;;-1:-1:-1;41010:135:0;;;;;:::i;:::-;;:::i;17285:38::-;;;;;;;;;;;;;;;;15435;;;;;;;;;;-1:-1:-1;15435:38:0;;;;-1:-1:-1;;;;;15435:38:0;;;16599:56;;;;;;;;;;;;;;;;16736;;;;;;;;;;;;;;;;39784:341;;;;;;;;;;-1:-1:-1;39784:341:0;;;;;:::i;:::-;;:::i;40806:188::-;;;;;;;;;;-1:-1:-1;40806:188:0;;;;;:::i;:::-;;:::i;17099:37::-;;;;;;;;;;;;;;;;23657:120;;;;;;;;;;-1:-1:-1;23657:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;23749:20:0;23725:4;23749:20;;;:11;:20;;;;;;;;;23657:120;6716:79;;;;;;;;;;-1:-1:-1;6754:7:0;6781:6;-1:-1:-1;;;;;6781:6:0;6716:79;;15480:36;;;;;;;;;;-1:-1:-1;15480:36:0;;;;-1:-1:-1;;;;;15480:36:0;;;15567:32;;;;;;;;;;-1:-1:-1;15567:32:0;;;;-1:-1:-1;;;;;15567:32:0;;;41922:178;;;;;;;;;;-1:-1:-1;41922:178:0;;;;;:::i;:::-;;:::i;21843:87::-;;;;;;;;;;;;;:::i;23380:269::-;;;;;;;;;;-1:-1:-1;23380:269:0;;;;;:::i;:::-;;:::i;22338:167::-;;;;;;;;;;-1:-1:-1;22338:167:0;;;;;:::i;:::-;;:::i;17789:35::-;;;;;;;;;;-1:-1:-1;17789:35:0;;;;;;;;15840:29;;;;;;;;;;;;;;;;16902:36;;;;;;;;;;;;;;;;17169:37;;;;;;;;;;;;;;;;17239:31;;;;;;;;;;;;;;;;42627:748;;;;;;;;;;-1:-1:-1;42627:748:0;;;;;:::i;:::-;;:::i;17049:35::-;;;;;;;;;;;;;;;;16807:36;;;;;;;;;;;;;;;;22513:143;;;;;;;;;;-1:-1:-1;22513:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;22621:18:0;;;22594:7;22621:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;22513:143;39662:110;;;;;;;;;;-1:-1:-1;39662:110:0;;;;;:::i;:::-;;:::i;21221:523::-;;;;;;;;;;-1:-1:-1;21221:523:0;;;;;:::i;:::-;;:::i;39326:112::-;;;;;;;;;;-1:-1:-1;39326:112:0;;;;;:::i;:::-;;:::i;7097:244::-;;;;;;;;;;-1:-1:-1;7097:244:0;;;;;:::i;:::-;;:::i;43383:424::-;;;;;;;;;;-1:-1:-1;43383:424:0;;;;;:::i;:::-;;:::i;18302:31::-;;;;;;;;;;-1:-1:-1;18302:31:0;;;;-1:-1:-1;;;18302:31:0;;;;;;40391:264;6850:6;;-1:-1:-1;;;;;6850:6:0;1100:10;6850:22;6842:67;;;;-1:-1:-1;;;6842:67:0;;;;;;;:::i;:::-;;;;;;;;;40488:9:::1;40483:165;40499:20:::0;;::::1;40483:165;;;40545:10;:24;40556:9;;40566:1;40556:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;40545:24:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;40545:24:0;;::::1;;40541:96;;40615:6;40589:9;:23;40599:9;;40609:1;40599:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;40589:23:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;40589:23:0;:32;;-1:-1:-1;;40589:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;40541:96:::1;40521:3;::::0;::::1;:::i;:::-;;;40483:165;;;;40391:264:::0;;;:::o;21752:83::-;21789:13;21822:5;21815:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21752:83;:::o;41338:175::-;6850:6;;-1:-1:-1;;;;;6850:6:0;1100:10;6850:22;6842:67;;;;-1:-1:-1;;;6842:67:0;;;;;;;:::i;:::-;41459:46:::1;41481:23;41459:17;41471:4;41459:7;;:11;;:17;;;;:::i;:::-;:21:::0;::::1;:46::i;:::-;41441:15;:64:::0;-1:-1:-1;41338:175:0:o;22664:161::-;22739:4;22756:39;1100:10;22779:7;22788:6;22756:8;:39::i;:::-;-1:-1:-1;22813:4:0;22664:161;;;;;:::o;37780:244::-;6850:6;;-1:-1:-1;;;;;6850:6:0;1100:10;6850:22;6842:67;;;;-1:-1:-1;;;6842:67:0;;;;;;;:::i;:::-;37902:8:::1;37887:11;:23;;37879:53;;;::::0;-1:-1:-1;;;37879:53:0;;10615:2:1;37879:53:0::1;::::0;::::1;10597:21:1::0;10654:2;10634:18;;;10627:30;-1:-1:-1;;;10673:18:1;;;10666:47;10730:18;;37879:53:0::1;10413:341:1::0;37879:53:0::1;37943:15;:27:::0;;-1:-1:-1;;37943:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;37981:21:::1;:35:::0;37780:244::o;41521:272::-;6850:6;;-1:-1:-1;;;;;6850:6:0;1100:10;6850:22;6842:67;;;;-1:-1:-1;;;6842:67:0;;;;;;;:::i;:::-;41667:45:::1;41689:22;41667:17;41679:4;41667:7;;:11;;:17;;;;:::i;:45::-;41652:12;:60:::0;41739:7:::1;::::0;:46:::1;::::0;41761:23;;41739:17:::1;::::0;41751:4:::1;41739:11;:17::i;:46::-;41723:13;:62:::0;-1:-1:-1;;41521:272:0:o;22833:313::-;22931:4;22948:36;22958:6;22966:9;22977:6;22948:9;:36::i;:::-;22995:121;23004:6;1100:10;23026:89;23064:6;23026:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23026:19:0;;;;;;:11;:19;;;;;;;;1100:10;23026:33;;;;;;;;;;:37;:89::i;:::-;22995:8;:121::i;:::-;-1:-1:-1;23134:4:0;22833:313;;;;;:::o;41153:177::-;6850:6;;-1:-1:-1;;;;;6850:6:0;1100:10;6850:22;6842:67;;;;-1:-1:-1;;;6842:67:0;;;;;;;:::i;:::-;41254:30:::1;::::0;-1:-1:-1;;;41254:30:0;;41278:4:::1;41254:30;::::0;::::1;3184:51:1::0;41236:15:0::1;::::0;-1:-1:-1;;;;;41254:15:0;::::1;::::0;::::1;::::0;3157:18:1;;41254:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41295:27;::::0;-1:-1:-1;;;41295:27:0;;-1:-1:-1;;;;;11140:32:1;;;41295:27:0::1;::::0;::::1;11122:51:1::0;11189:18;;;11182:34;;;41236:48:0;;-1:-1:-1;41295:14:0;;::::1;::::0;::::1;::::0;11095:18:1;;41295:27:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20394:349::-:0;6850:6;;-1:-1:-1;;;;;6850:6:0;1100:10;6850:22;6842:67;;;;-1:-1:-1;;;6842:67:0;;;;;;;:::i;:::-;20461:11:::1;:21:::0;;-1:-1:-1;;;;20461:21:0::1;-1:-1:-1::0;;;20461:21:0;::::1;;;;::::0;;20493:32:::1;20519:4;20493:17;:32::i;:::-;20554:13;::::0;20536:32:::1;::::0;-1:-1:-1;;;;;20554:13:0::1;20536:17;:32::i;:::-;20597:4;::::0;20579:23:::1;::::0;-1:-1:-1;;;;;20597:4:0::1;20579:17;:23::i;:::-;20613:26;20631:7;6754::::0;6781:6;-1:-1:-1;;;;;6781:6:0;;6716:79;20613:26:::1;20653:11;::::0;-1:-1:-1;;;20653:11:0;::::1;;;:30:::0;::::1;;;-1:-1:-1::0;20668:10:0::1;::::0;:15;20653:30:::1;20650:86;;;20712:12;20699:10;:25:::0;20650:86:::1;20394:349:::0;:::o;24717:253::-;24783:7;24822;;24811;:18;;24803:73;;;;-1:-1:-1;;;24803:73:0;;11679:2:1;24803:73:0;;;11661:21:1;11718:2;11698:18;;;11691:30;11757:34;11737:18;;;11730:62;-1:-1:-1;;;11808:18:1;;;11801:40;11858:19;;24803:73:0;11477:406:1;24803:73:0;24887:19;24910:10;:8;:10::i;:::-;24887:33;-1:-1:-1;24938:24:0;:7;24887:33;24938:11;:24::i;:::-;24931:31;24717:253;-1:-1:-1;;;24717:253:0:o;41801:113::-;6850:6;;-1:-1:-1;;;;;6850:6:0;1100:10;6850:22;6842:67;;;;-1:-1:-1;;;6842:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;41874:25:0::1;;::::0;;;:18:::1;:25;::::0;;;;:32;;-1:-1:-1;;41874:32:0::1;41902:4;41874:32;::::0;;41801:113::o;25249:479::-;6850:6;;-1:-1:-1;;;;;6850:6:0;1100:10;6850:22;6842:67;;;;-1:-1:-1;;;6842:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25331:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;25323:60;;;::::0;-1:-1:-1;;;25323:60:0;;12090:2:1;25323:60:0::1;::::0;::::1;12072:21:1::0;12129:2;12109:18;;;12102:30;12168:29;12148:18;;;12141:57;12215:18;;25323:60:0::1;11888:351:1::0;25323:60:0::1;25399:9;25394:327;25418:9;:16:::0;25414:20;::::1;25394:327;;;25476:7;-1:-1:-1::0;;;;;25460:23:0::1;:9;25470:1;25460:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;25460:12:0::1;:23:::0;25456:254:::1;;25519:9;25529:16:::0;;:20:::1;::::0;25548:1:::1;::::0;25529:20:::1;:::i;:::-;25519:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;25504:9:::1;:12:::0;;-1:-1:-1;;;;;25519:31:0;;::::1;::::0;25514:1;;25504:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;25504:46:0::1;-1:-1:-1::0;;;;;25504:46:0;;::::1;;::::0;;25569:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;25608:11:::1;:20:::0;;;;:28;;-1:-1:-1;;25608:28:0::1;::::0;;25655:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;25655:15:0;;;;;-1:-1:-1;;;;;;25655:15:0::1;::::0;;;;;25394:327:::1;25249:479:::0;:::o;25456:254::-:1;25436:3:::0;::::1;::::0;::::1;:::i;:::-;;;;25394:327;;;;25249:479:::0;:::o;20975:238::-;6850:6;;-1:-1:-1;;;;;6850:6:0;1100:10;6850:22;6842:67;;;;-1:-1:-1;;;6842:67:0;;;;;;;:::i;:::-;21036:11:::1;:17:::0;;-1:-1:-1;;;;21036:17:0::1;::::0;;21081:7:::1;::::0;:24:::1;::::0;21103:1:::1;::::0;21081:17:::1;::::0;21093:4:::1;21081:11;:17::i;:24::-;21063:15;:42:::0;21124:15:::1;:22:::0;;-1:-1:-1;;21124:22:0::1;21142:4;21124:22;::::0;;21156:49:::1;21180:24;21198:4;21180:9;:24::i;:::-;21156:23;:49::i;:::-;20975:238::o:0;23154:218::-;1100:10;23242:4;23291:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;23291:34:0;;;;;;;;;;23242:4;;23259:83;;23282:7;;23291:50;;23330:10;23291:38;:50::i;23884:377::-;1100:10;23936:14;23985:19;;;:11;:19;;;;;;;;23984:20;23976:77;;;;-1:-1:-1;;;23976:77:0;;12708:2:1;23976:77:0;;;12690:21:1;12747:2;12727:18;;;12720:30;12786:34;12766:18;;;12759:62;-1:-1:-1;;;12837:18:1;;;12830:42;12889:19;;23976:77:0;12506:408:1;23976:77:0;24065:15;24089:19;24100:7;24089:10;:19::i;:::-;-1:-1:-1;;;;;;;;;24137:15:0;;;;;;:7;:15;;;;;;24064:44;;-1:-1:-1;24137:28:0;;:15;-1:-1:-1;24064:44:0;24137:19;:28::i;:::-;-1:-1:-1;;;;;24119:15:0;;;;;;:7;:15;;;;;:46;24186:7;;:20;;24198:7;24186:11;:20::i;:::-;24176:7;:30;24230:10;;:23;;24245:7;24230:14;:23::i;:::-;24217:10;:36;-1:-1:-1;;;23884:377:0:o;20867:96::-;6850:6;;-1:-1:-1;;;;;6850:6:0;1100:10;6850:22;6842:67;;;;-1:-1:-1;;;6842:67:0;;;;;;;:::i;:::-;20936:11:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;20936:19:0::1;-1:-1:-1::0;;;;20936:19:0;;::::1;::::0;;;::::1;::::0;;20867:96::o;24273:436::-;24363:7;24402;;24391;:18;;24383:62;;;;-1:-1:-1;;;24383:62:0;;13121:2:1;24383:62:0;;;13103:21:1;13160:2;13140:18;;;13133:30;13199:33;13179:18;;;13172:61;13250:18;;24383:62:0;12919:355:1;24383:62:0;24461:17;24456:246;;24496:15;24520:19;24531:7;24520:10;:19::i;:::-;-1:-1:-1;24495:44:0;;-1:-1:-1;24554:14:0;;-1:-1:-1;;;;;24554:14:0;24456:246;24603:23;24634:19;24645:7;24634:10;:19::i;:::-;-1:-1:-1;24601:52:0;;-1:-1:-1;24668:22:0;;-1:-1:-1;;;;;24668:22:0;20757:102;6850:6;;-1:-1:-1;;;;;6850:6:0;1100:10;6850:22;6842:67;;;;-1:-1:-1;;;6842:67:0;;;;;;;:::i;:::-;20829:14:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;20829:22:0::1;-1:-1:-1::0;;;;20829:22:0;;::::1;::::0;;;::::1;::::0;;20757:102::o;40663:129::-;6850:6;;-1:-1:-1;;;;;6850:6:0;1100:10;6850:22;6842:67;;;;-1:-1:-1;;;6842:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40751:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;40751:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;40663:129::o;24978:263::-;6850:6;;-1:-1:-1;;;;;6850:6:0;1100:10;6850:22;6842:67;;;;-1:-1:-1;;;6842:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25057:16:0;::::1;25076:1;25057:16:::0;;;:7:::1;:16;::::0;;;;;:20;25054:108:::1;;-1:-1:-1::0;;;;;25133:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;25113:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;25094:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;25054:108:::1;-1:-1:-1::0;;;;;25172:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;25172:27:0::1;25195:4;25172:27:::0;;::::1;::::0;;;25210:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;25210:23:0::1;::::0;;::::1;::::0;;24978:263::o;42108:510::-;1100:10;42204:16;42243:32;;;:18;:32;;;;;;;;42235:90;;;;-1:-1:-1;;;42235:90:0;;13481:2:1;42235:90:0;;;13463:21:1;13520:2;13500:18;;;13493:30;13559:34;13539:18;;;13532:62;-1:-1:-1;;;13610:18:1;;;13603:43;13663:19;;42235:90:0;13279:409:1;42235:90:0;42344:35;;;42336:90;;;;-1:-1:-1;;;42336:90:0;;13895:2:1;42336:90:0;;;13877:21:1;13934:2;13914:18;;;13907:30;13973:34;13953:18;;;13946:62;-1:-1:-1;;;14024:18:1;;;14017:40;14074:19;;42336:90:0;13693:406:1;42336:90:0;42443:28;;;42437:174;;;42487:84;1100:10;42516;;42527:8;42516:20;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;42538:7;;42546:8;42538:17;;;;;;;:::i;:::-;;;;;;;42558:5;42538:25;;;;:::i;:::-;42565:5;42487:14;:84::i;:::-;42586:13;42598:1;42586:13;;:::i;:::-;;;42437:174;;;42193:425;42108:510;;;;:::o;22132:198::-;-1:-1:-1;;;;;22222:20:0;;22198:7;22222:20;;;:11;:20;;;;;;;;22218:49;;;-1:-1:-1;;;;;;22251:16:0;;;;;:7;:16;;;;;;;22132:198::o;22218:49::-;-1:-1:-1;;;;;22305:16:0;;;;;;:7;:16;;;;;;22285:37;;:19;:37::i;6941:148::-;6850:6;;-1:-1:-1;;;;;6850:6:0;1100:10;6850:22;6842:67;;;;-1:-1:-1;;;6842:67:0;;;;;;;:::i;:::-;7048:1:::1;7032:6:::0;;7011:40:::1;::::0;-1:-1:-1;;;;;7032:6:0;;::::1;::::0;7011:40:::1;::::0;7048:1;;7011:40:::1;7079:1;7062:19:::0;;-1:-1:-1;;;;;;7062:19:0::1;::::0;;6941:148::o;39446:198::-;6850:6;;-1:-1:-1;;;;;6850:6:0;1100:10;6850:22;6842:67;;;;-1:-1:-1;;;6842:67:0;;;;;;;:::i;:::-;39533:9:::1;39528:109;39544:20:::0;;::::1;39528:109;;;39621:4;39586:18;:32;39605:9;;39615:1;39605:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;39586:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;39586:32:0;:39;;-1:-1:-1;;39586:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;39566:3:::1;::::0;::::1;:::i;:::-;;;39528:109;;;;39446:198:::0;;:::o;41010:135::-;6850:6;;-1:-1:-1;;;;;6850:6:0;1100:10;6850:22;6842:67;;;;-1:-1:-1;;;6842:67:0;;;;;;;:::i;:::-;41095:42:::1;::::0;-1:-1:-1;;;;;41095:19:0;::::1;::::0;41115:21:::1;41095:42:::0;::::1;;;::::0;::::1;::::0;;;41115:21;41095:19;:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;39784:341:::0;6850:6;;-1:-1:-1;;;;;6850:6:0;1100:10;6850:22;6842:67;;;;-1:-1:-1;;;6842:67:0;;;;;;;:::i;:::-;39930:15:::1;:43:::0;;-1:-1:-1;;;;;39930:43:0;;::::1;-1:-1:-1::0;;;;;;39930:43:0;;::::1;;::::0;;;39984:9:::1;:31:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;40026:13:::1;:39:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;40076:14:::1;:41:::0;;;;;::::1;::::0;::::1;;::::0;;39784:341::o;40806:188::-;6850:6;;-1:-1:-1;;;;;6850:6:0;1100:10;6850:22;6842:67;;;;-1:-1:-1;;;6842:67:0;;;;;;;:::i;:::-;40893:9:::1;40888:99;40904:20:::0;;::::1;40888:99;;;40971:4;40946:10;:24;40957:9;;40967:1;40957:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;40946:24:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;40946:24:0;:29;;-1:-1:-1;;40946:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;40926:3:::1;::::0;::::1;:::i;:::-;;;40888:99;;41922:178:::0;6850:6;;-1:-1:-1;;;;;6850:6:0;1100:10;6850:22;6842:67;;;;-1:-1:-1;;;6842:67:0;;;;;;;:::i;:::-;42076:16:::1;42056;42046:7;;:26;;;;:::i;:::-;42045:47;;;;:::i;:::-;42029:13;:63:::0;-1:-1:-1;;41922:178:0:o;21843:87::-;21882:13;21915:7;21908:14;;;;;:::i;23380:269::-;23473:4;23490:129;1100:10;23513:7;23522:96;23561:15;23522:96;;;;;;;;;;;;;;;;;1100:10;23522:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;23522:34:0;;;;;;;;;;;;:38;:96::i;22338:167::-;22416:4;22433:42;1100:10;22457:9;22468:6;22433:9;:42::i;42627:748::-;6850:6;;-1:-1:-1;;;;;6850:6:0;1100:10;6850:22;6842:67;;;;-1:-1:-1;;;6842:67:0;;;;;;;:::i;:::-;42815:16:::1;:32:::0;;;42858:16:::1;:32:::0;;;42901:10:::1;:20:::0;;;42932:17:::1;:33:::0;;;42976:14:::1;:28:::0;;;43015:15:::1;:30:::0;;;43058:13:::1;:29:::0;;;43098:12:::1;:28:::0;;;43137:6:::1;:16:::0;;;43164:12:::1;:28:::0;;;43203:10:::1;:24:::0;;;43238:11:::1;:26:::0;;;43290:75:::1;43033:12:::0;43290:58:::1;42993:11:::0;43290:58;42914:7;43290:58;42834:13;42877;43290:16:::1;:30::i;:::-;:34:::0;::::1;:42::i;:75::-;43279:8;:86:::0;-1:-1:-1;;;;;;42627:748:0:o;39662:110::-;6850:6;;-1:-1:-1;;;;;6850:6:0;1100:10;6850:22;6842:67;;;;-1:-1:-1;;;6842:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39729:27:0::1;39759:5;39729:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;39729:35:0::1;::::0;;39662:110::o;21221:523::-;6850:6;;-1:-1:-1;;;;;6850:6:0;1100:10;6850:22;6842:67;;;;-1:-1:-1;;;6842:67:0;;;;;;;:::i;:::-;21294:29:::1;21345:9;21294:61;;21366:16;21403:10;-1:-1:-1::0;;;;;21403:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21385:47:0::1;;21441:4;21448:10;-1:-1:-1::0;;;;;21448:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21385:81;::::0;-1:-1:-1;;;;;;21385:81:0::1;::::0;;;;;;-1:-1:-1;;;;;15118:15:1;;;21385:81:0::1;::::0;::::1;15100:34:1::0;15170:15;;15150:18;;;15143:43;15035:18;;21385:81:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21366:100:::0;-1:-1:-1;;;;;;21481:22:0;::::1;21477:221;;21554:10;-1:-1:-1::0;;;;;21554:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21536:50:0::1;;21595:4;21602:10;-1:-1:-1::0;;;;;21602:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21536:84;::::0;-1:-1:-1;;;;;;21536:84:0::1;::::0;;;;;;-1:-1:-1;;;;;15118:15:1;;;21536:84:0::1;::::0;::::1;15100:34:1::0;15170:15;;15150:18;;;15143:43;15035:18;;21536:84:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21520:13;:100:::0;;-1:-1:-1;;;;;;21520:100:0::1;-1:-1:-1::0;;;;;21520:100:0;;;::::1;::::0;;;::::1;::::0;;21477:221:::1;;;21662:13;:24:::0;;-1:-1:-1;;;;;;21662:24:0::1;-1:-1:-1::0;;;;;21662:24:0;::::1;;::::0;;21477:221:::1;-1:-1:-1::0;21708:15:0::1;:28:::0;;-1:-1:-1;;;;;;21708:28:0::1;-1:-1:-1::0;;;;;21708:28:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;21221:523:0:o;39326:112::-;6850:6;;-1:-1:-1;;;;;6850:6:0;1100:10;6850:22;6842:67;;;;-1:-1:-1;;;6842:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39396:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;39396:34:0::1;39426:4;39396:34;::::0;;39326:112::o;7097:244::-;6850:6;;-1:-1:-1;;;;;6850:6:0;1100:10;6850:22;6842:67;;;;-1:-1:-1;;;6842:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7186:22:0;::::1;7178:73;;;::::0;-1:-1:-1;;;7178:73:0;;15399:2:1;7178:73:0::1;::::0;::::1;15381:21:1::0;15438:2;15418:18;;;15411:30;15477:34;15457:18;;;15450:62;-1:-1:-1;;;15528:18:1;;;15521:36;15574:19;;7178:73:0::1;15197:402:1::0;7178:73:0::1;7288:6;::::0;;7267:38:::1;::::0;-1:-1:-1;;;;;7267:38:0;;::::1;::::0;7288:6;::::1;::::0;7267:38:::1;::::0;::::1;7316:6;:17:::0;;-1:-1:-1;;;;;;7316:17:0::1;-1:-1:-1::0;;;;;7316:17:0;;;::::1;::::0;;;::::1;::::0;;7097:244::o;43383:424::-;6850:6;;-1:-1:-1;;;;;6850:6:0;1100:10;6850:22;6842:67;;;;-1:-1:-1;;;6842:67:0;;;;;;;:::i;:::-;43563:17:::1;:33:::0;;;;43607:17:::1;:33:::0;;;;43651:11:::1;:21:::0;43683:18:::1;:34:::0;;;;43728:15:::1;:29:::0;;;;43768:16:::1;:31:::0;43383:424::o;2875:132::-;2933:7;2960:39;2964:1;2967;2960:39;;;;;;;;;;;;;;;;;:3;:39::i;2615:250::-;2673:7;2697:1;2702;2697:6;2693:47;;-1:-1:-1;2727:1:0;2720:8;;2693:47;2752:9;2764:5;2768:1;2764;:5;:::i;:::-;2752:17;-1:-1:-1;2797:1:0;2788:5;2792:1;2752:17;2788:5;:::i;:::-;:10;2780:56;;;;-1:-1:-1;;;2780:56:0;;15806:2:1;2780:56:0;;;15788:21:1;15845:2;15825:18;;;15818:30;15884:34;15864:18;;;15857:62;-1:-1:-1;;;15935:18:1;;;15928:31;15976:19;;2780:56:0;15604:397:1;2082:181:0;2140:7;;2172:5;2176:1;2172;:5;:::i;:::-;2160:17;;2201:1;2196;:6;;2188:46;;;;-1:-1:-1;;;2188:46:0;;16208:2:1;2188:46:0;;;16190:21:1;16247:2;16227:18;;;16220:30;16286:29;16266:18;;;16259:57;16333:18;;2188:46:0;16006:351:1;25736:337:0;-1:-1:-1;;;;;25829:19:0;;25821:68;;;;-1:-1:-1;;;25821:68:0;;16564:2:1;25821:68:0;;;16546:21:1;16603:2;16583:18;;;16576:30;16642:34;16622:18;;;16615:62;-1:-1:-1;;;16693:18:1;;;16686:34;16737:19;;25821:68:0;16362:400:1;25821:68:0;-1:-1:-1;;;;;25908:21:0;;25900:68;;;;-1:-1:-1;;;25900:68:0;;16969:2:1;25900:68:0;;;16951:21:1;17008:2;16988:18;;;16981:30;17047:34;17027:18;;;17020:62;-1:-1:-1;;;17098:18:1;;;17091:32;17140:19;;25900:68:0;16767:398:1;25900:68:0;-1:-1:-1;;;;;25981:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;26033:32;;160:25:1;;;26033:32:0;;133:18:1;26033:32:0;;;;;;;25736:337;;;:::o;26081:2342::-;-1:-1:-1;;;;;26203:18:0;;26195:68;;;;-1:-1:-1;;;26195:68:0;;17372:2:1;26195:68:0;;;17354:21:1;17411:2;17391:18;;;17384:30;17450:34;17430:18;;;17423:62;-1:-1:-1;;;17501:18:1;;;17494:35;17546:19;;26195:68:0;17170:401:1;26195:68:0;-1:-1:-1;;;;;26282:16:0;;26274:64;;;;-1:-1:-1;;;26274:64:0;;17778:2:1;26274:64:0;;;17760:21:1;17817:2;17797:18;;;17790:30;17856:34;17836:18;;;17829:62;-1:-1:-1;;;17907:18:1;;;17900:33;17950:19;;26274:64:0;17576:399:1;26274:64:0;26366:1;26357:6;:10;26349:64;;;;-1:-1:-1;;;26349:64:0;;18182:2:1;26349:64:0;;;18164:21:1;18221:2;18201:18;;;18194:30;18260:34;18240:18;;;18233:62;-1:-1:-1;;;18311:18:1;;;18304:39;18360:19;;26349:64:0;17980:405:1;26349:64:0;-1:-1:-1;;;;;26433:15:0;;;;;;:9;:15;;;;;;;;26432:16;26424:52;;;;-1:-1:-1;;;26424:52:0;;18592:2:1;26424:52:0;;;18574:21:1;18631:2;18611:18;;;18604:30;18670:25;18650:18;;;18643:53;18713:18;;26424:52:0;18390:347:1;26424:52:0;6754:7;6781:6;-1:-1:-1;;;;;26491:14:0;;;6781:6;;26491:14;;;;:30;;-1:-1:-1;6754:7:0;6781:6;-1:-1:-1;;;;;26509:12:0;;;6781:6;;26509:12;;26491:30;26487:84;;;26531:11;;-1:-1:-1;;;26531:11:0;;;;26523:48;;;;-1:-1:-1;;;26523:48:0;;18944:2:1;26523:48:0;;;18926:21:1;18983:2;18963:18;;;18956:30;19022:26;19002:18;;;18995:54;19066:18;;26523:48:0;18742:348:1;26523:48:0;26710:13;;26633:12;;-1:-1:-1;;;;;26704:19:0;;;26710:13;;26704:19;;:40;;-1:-1:-1;26731:13:0;;-1:-1:-1;;;;;26727:17:0;;;26731:13;;26727:17;26704:40;26703:99;;;;-1:-1:-1;;;;;;26751:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;26779:22:0;;;;;;:18;:22;;;;;;;;26751:50;26749:53;26703:99;26698:229;;;26836:12;;26828:6;:20;;26820:66;;;;-1:-1:-1;;;26820:66:0;;;;;;;:::i;:::-;-1:-1:-1;26911:4:0;26698:229;26953:1;26942:10;;:12;:59;;;;-1:-1:-1;;;;;;26960:22:0;;;;;;:18;:22;;;;;;;;26959:23;:41;;;;-1:-1:-1;6754:7:0;6781:6;-1:-1:-1;;;;;26986:14:0;;;6781:6;;26986:14;;26959:41;26939:200;;;27052:15;;27037:13;27047:2;27037:9;:13::i;:::-;27029:21;;:6;:21;:::i;:::-;:38;;27021:106;;;;-1:-1:-1;;;27021:106:0;;19700:2:1;27021:106:0;;;19682:21:1;19739:2;19719:18;;;19712:30;19778:34;19758:18;;;19751:62;-1:-1:-1;;;19829:18:1;;;19822:32;19871:19;;27021:106:0;19498:398:1;27021:106:0;27162:15;;;;:38;;;;-1:-1:-1;27187:13:0;;-1:-1:-1;;;;;27181:19:0;;;27187:13;;27181:19;27162:38;:65;;;;-1:-1:-1;;;;;;27205:22:0;;;;;;:16;:22;;;;;;;;27204:23;27162:65;27159:260;;;-1:-1:-1;;;;;27251:19:0;;;;;;:13;:19;;;;;;27273:15;-1:-1:-1;27243:88:0;;;;-1:-1:-1;;;27243:88:0;;20103:2:1;27243:88:0;;;20085:21:1;20142:2;20122:18;;;20115:30;20181:34;20161:18;;;20154:62;-1:-1:-1;;;20232:18:1;;;20225:36;20278:19;;27243:88:0;19901:402:1;27243:88:0;27386:21;;27368:39;;:15;:39;:::i;:::-;-1:-1:-1;;;;;27346:19:0;;;;;;:13;:19;;;;;:61;27159:260;27445:8;;27429:15;:24;27478:17;;27464:13;:31;27511:11;;-1:-1:-1;;;27511:11:0;;;;:34;;;;-1:-1:-1;27532:13:0;;-1:-1:-1;;;;;27526:19:0;;;27532:13;;27526:19;27511:34;27508:319;;;27585:13;;27577:6;:21;;27569:67;;;;-1:-1:-1;;;27569:67:0;;;;;;;:::i;:::-;27668:100;27752:15;;27668:79;27730:16;;27668:57;27713:11;;27668:40;27690:17;;27668;;:21;;:40;;;;:::i;:100::-;27651:15;:117;27797:18;;27783:13;:32;27508:319;27842:14;;-1:-1:-1;;;27842:14:0;;;;27839:150;;;27876:11;;-1:-1:-1;;;27876:11:0;;;;:36;;;;-1:-1:-1;27899:13:0;;-1:-1:-1;;;;;27891:21:0;;;27899:13;;27891:21;27876:36;27873:105;;;27960:1;27944:15;:17;27873:105;28022:6;;-1:-1:-1;;;28022:6:0;;;;28021:7;:22;;;;-1:-1:-1;28032:11:0;;-1:-1:-1;;;28032:11:0;;;;28021:22;:45;;;;-1:-1:-1;28053:13:0;;-1:-1:-1;;;;;28047:19:0;;;28053:13;;28047:19;28021:45;28017:350;;;28091:28;28122:24;28140:4;28122:9;:24::i;:::-;28091:55;;28200:13;;28178:20;:35;28175:169;;-1:-1:-1;28260:13:0;;28296:32;28260:13;28296:10;:32::i;:::-;28068:299;28017:350;28377:38;28392:4;28397:2;28400:6;28407:7;28377:14;:38::i;2415:192::-;2501:7;2537:12;2529:6;;;;2521:29;;;;-1:-1:-1;;;2521:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2561:9:0;2573:5;2577:1;2573;:5;:::i;:::-;2561:17;2415:192;-1:-1:-1;;;;;2415:192:0:o;37570:163::-;37611:7;37632:15;37649;37668:19;:17;:19::i;:::-;37631:56;;-1:-1:-1;37631:56:0;-1:-1:-1;37705:20:0;37631:56;;37705:11;:20::i;:::-;37698:27;;;;37570:163;:::o;30097:1617::-;18645:6;:13;;-1:-1:-1;;;;18645:13:0;-1:-1:-1;;;18645:13:0;;;30308:8:::1;::::0;30276:12:::1;::::0;18645:13;;30237:101:::1;::::0;30336:1:::1;::::0;30237:80:::1;::::0;;;:20;;:38:::1;:52::i;:::-;:70:::0;::::1;:80::i;:101::-;30211:127:::0;-1:-1:-1;30351:20:0::1;30374:41;:20:::0;30211:127;30374:24:::1;:41::i;:::-;30351:64;;30436:30;30453:12;30436:16;:30::i;:::-;30568:12;::::0;30499:21:::1;::::0;30479:17:::1;::::0;30555:33:::1;::::0;30568:19:::1;::::0;30585:1:::1;30568:16;:19::i;:::-;30555:8;::::0;;:12:::1;:33::i;:::-;30533:55;;30601:26;30630:93;30721:1;30630:72;30690:11;30630:41;30658:12;;30630:9;:27;;:41;;;;:::i;:93::-;30601:122;;30744:20;30767:38;30793:11;30767:21;30781:6;;30767:9;:13;;:21;;;;:::i;:38::-;30744:61;;30816:26;30845:68;30891:11;30845:27;30859:12;;30845:9;:13;;:27;;;;:::i;:68::-;30816:97;;30924:24;30951:42;30981:11;30951:25;30965:10;;30951:9;:13;;:25;;;;:::i;:42::-;30924:69;;31004:25;31032:43;31063:11;31032:26;31046:11;;31032:9;:13;;:26;;;;:::i;:43::-;31004:71:::0;-1:-1:-1;31168:21:0::1;31203:22:::0;;31200:273:::1;;31274:15;::::0;31242:48:::1;::::0;31255:18;;-1:-1:-1;;;;;31274:15:0::1;31242:12;:48::i;:::-;31335:13;::::0;31305:44:::1;::::0;31318:16;;-1:-1:-1;;;;;31335:13:0::1;31305:12;:44::i;:::-;31395:14;::::0;31364:46:::1;::::0;31377:17;;-1:-1:-1;;;;;31395:14:0::1;31364:12;:46::i;:::-;31451:9;::::0;31425:36:::1;::::0;31438:12;;-1:-1:-1;;;;;31451:9:0::1;31425:12;:36::i;:::-;31487:19:::0;;31483:104:::1;;31527:48;31540:15;31556:18;31527:12;:48::i;:::-;31609:13;::::0;31623:4:::1;::::0;31599:50:::1;::::0;-1:-1:-1;;;;;31609:13:0;;::::1;::::0;31623:4:::1;31628:20:::0;31599:9:::1;:50::i;:::-;31675:13;;;;;;;;;-1:-1:-1::0;;;;;31675:13:0::1;-1:-1:-1::0;;;;;31660:34:0::1;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;18681:6:0;:14;;-1:-1:-1;;;;18681:14:0;;;-1:-1:-1;;;;;;;;;;;;;30097:1617:0:o;36368:419::-;36427:7;36436;36445;36454;36463;36472;36493:23;36518:12;36532:18;36554:20;36566:7;36554:11;:20::i;:::-;36492:82;;;;;;36586:15;36603:23;36628:12;36644:50;36656:7;36665:4;36671:10;36683;:8;:10::i;:::-;36644:11;:50::i;:::-;36585:109;;;;-1:-1:-1;36585:109:0;;-1:-1:-1;36745:15:0;;-1:-1:-1;36762:4:0;;-1:-1:-1;36768:10:0;;-1:-1:-1;36368:419:0;;-1:-1:-1;;;;;36368:419:0:o;2271:136::-;2329:7;2356:43;2360:1;2363;2356:43;;;;;;;;;;;;;;;;;:3;:43::i;32934:943::-;33074:13;;33124:15;;33154:7;33150:88;;33193:1;33177:13;:17;;;33209:15;:17;33150:88;-1:-1:-1;;;;;33262:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;33286:22:0;;;;;;:11;:22;;;;;;;;33285:23;33262:46;33258:467;;;33325:48;33347:6;33355:9;33366:6;33325:21;:48::i;:::-;33258:467;;;-1:-1:-1;;;;;33396:19:0;;;;;;:11;:19;;;;;;;;33395:20;:46;;;;-1:-1:-1;;;;;;33419:22:0;;;;;;:11;:22;;;;;;;;33395:46;33391:334;;;33458:46;33478:6;33486:9;33497:6;33458:19;:46::i;33391:334::-;-1:-1:-1;;;;;33526:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;33549:22:0;;;;;;:11;:22;;;;;;;;33526:45;33522:203;;;33588:48;33610:6;33618:9;33629:6;33588:21;:48::i;33522:203::-;33669:44;33687:6;33695:9;33706:6;33669:17;:44::i;:::-;33749:7;33745:125;;33772:13;:38;;;33825:15;:33;;;33745:125;33030:847;;32934:943;;;;:::o;3015:278::-;3101:7;3136:12;3129:5;3121:28;;;;-1:-1:-1;;;3121:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3160:9:0;3172:5;3176:1;3172;:5;:::i;28431:1531::-;18645:6;:13;;-1:-1:-1;;;;18645:13:0;-1:-1:-1;;;18645:13:0;;;28629:8:::1;::::0;28597:12:::1;::::0;18645:13;;28558:101:::1;::::0;28657:1:::1;::::0;28558:80:::1;::::0;;;:20;;:38:::1;:52::i;:101::-;28532:127:::0;-1:-1:-1;28672:20:0::1;28695:41;:20:::0;28532:127;28695:24:::1;:41::i;:::-;28672:64;;28757:30;28774:12;28757:16;:30::i;:::-;28889:12;::::0;28820:21:::1;::::0;28800:17:::1;::::0;28876:33:::1;::::0;28889:19:::1;::::0;28906:1:::1;28889:16;:19::i;28876:33::-;28854:55;;28922:26;28951:93;29042:1;28951:72;29011:11;28951:41;28979:12;;28951:9;:27;;:41;;;;:::i;:93::-;28922:122;;29065:20;29088:38;29114:11;29088:21;29102:6;;29088:9;:13;;:21;;;;:::i;:38::-;29065:61;;29137:26;29166:68;29212:11;29166:27;29180:12;;29166:9;:13;;:27;;;;:::i;:68::-;29137:97;;29246:24;29273:66;29317:11;29273:25;29287:10;;29273:9;:13;;:25;;;;:::i;:66::-;29246:93;;29350:25;29378:67;29423:11;29378:26;29392:11;;29378:9;:13;;:26;;;;:::i;:67::-;29350:95:::0;-1:-1:-1;29536:21:0::1;29571:22:::0;;29568:273:::1;;29642:15;::::0;29610:48:::1;::::0;29623:18;;-1:-1:-1;;;;;29642:15:0::1;29610:12;:48::i;:::-;29703:13;::::0;29673:44:::1;::::0;29686:16;;-1:-1:-1;;;;;29703:13:0::1;29673:12;:44::i;:::-;29763:14;::::0;29732:46:::1;::::0;29745:17;;-1:-1:-1;;;;;29763:14:0::1;29732:12;:46::i;:::-;29819:9;::::0;29793:36:::1;::::0;29806:12;;-1:-1:-1;;;;;29819:9:0::1;29793:12;:36::i;:::-;29855:19:::0;;29851:104:::1;;29895:48;29908:15;29924:18;29895:12;:48::i;:::-;-1:-1:-1::0;;18681:6:0;:14;;-1:-1:-1;;;;18681:14:0;;;-1:-1:-1;;;;;;;;;28431:1531:0:o;38034:561::-;38131:7;;38167;;38084;;;;;38191:289;38215:9;:16;38211:20;;38191:289;;;38281:7;38257;:21;38265:9;38275:1;38265:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;38265:12:0;38257:21;;;;;;;;;;;;;:31;;:66;;;38316:7;38292;:21;38300:9;38310:1;38300:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;38300:12:0;38292:21;;;;;;;;;;;;;:31;38257:66;38253:97;;;38333:7;;38342;;38325:25;;;;;;;38034:561;;:::o;38253:97::-;38375:34;38387:7;:21;38395:9;38405:1;38395:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;38395:12:0;38387:21;;;;;;;;;;;;;38375:7;;:11;:34::i;:::-;38365:44;;38434:34;38446:7;:21;38454:9;38464:1;38454:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;38454:12:0;38446:21;;;;;;;;;;;;;38434:7;;:11;:34::i;:::-;38424:44;-1:-1:-1;38233:3:0;;;;:::i;:::-;;;;38191:289;;;-1:-1:-1;38516:7:0;;38504;;:20;;:11;:20::i;:::-;38494:7;:30;38490:61;;;38534:7;;38543;;38526:25;;;;;;38034:561;;:::o;38490:61::-;38570:7;;38579;;-1:-1:-1;38034:561:0;-1:-1:-1;38034:561:0:o;31733:666::-;31883:16;;;31897:1;31883:16;;;;;;;;31859:21;;31883:16;;;;;;;;;;-1:-1:-1;31883:16:0;31859:40;;31928:4;31910;31915:1;31910:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31910:23:0;;;:7;;;;;;;;;;:23;;;;31954:15;;:22;;;-1:-1:-1;;;31954:22:0;;;;:15;;;;;:20;;:22;;;;;31910:7;;31954:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31944:4;31949:1;31944:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31944:32:0;;;:7;;;;;;;;;:32;32021:15;;31989:62;;32006:4;;32021:15;32039:11;31989:8;:62::i;:::-;32090:15;;:240;;-1:-1:-1;;;32090:240:0;;-1:-1:-1;;;;;32090:15:0;;;;:66;;:240;;32171:11;;32090:15;;32241:4;;32268;;32304:15;;32090:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32356:35;32373:11;32386:4;32356:35;;;;;;;:::i;:::-;;;;;;;;31788:611;31733:666;:::o;29974:111::-;30054:23;;-1:-1:-1;;;;;30054:15:0;;;:23;;;;;30070:6;;30054:23;;;;30070:6;30054:15;:23;;;;;;;;;;;;;;;;;;;32413:513;32593:15;;32561:62;;32578:4;;-1:-1:-1;;;;;32593:15:0;32611:11;32561:8;:62::i;:::-;32666:15;;-1:-1:-1;;;;;32666:15:0;:31;32705:9;32738:4;32758:11;32666:15;;32870:7;6754;6781:6;-1:-1:-1;;;;;6781:6:0;;6716:79;32870:7;32666:252;;;;;;-1:-1:-1;;;;;;32666:252:0;;;-1:-1:-1;;;;;22189:15:1;;;32666:252:0;;;22171:34:1;22221:18;;;22214:34;;;;22264:18;;;22257:34;;;;22307:18;;;22300:34;22371:15;;;22350:19;;;22343:44;32892:15:0;22403:19:1;;;22396:35;22105:19;;32666:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;36795:330::-;36855:7;36864;36873;36893:12;36908:24;36924:7;36908:15;:24::i;:::-;36893:39;;36943:18;36964:30;36986:7;36964:21;:30::i;:::-;36943:51;-1:-1:-1;37005:23:0;37031:33;36943:51;37031:17;:7;37043:4;37031:11;:17::i;:::-;:21;;:33::i;:::-;37005:59;37100:4;;-1:-1:-1;37106:10:0;;-1:-1:-1;36795:330:0;;-1:-1:-1;;;36795:330:0:o;37133:429::-;37248:7;;;;37304:24;:7;37316:11;37304;:24::i;:::-;37286:42;-1:-1:-1;37339:12:0;37354:21;:4;37363:11;37354:8;:21::i;:::-;37339:36;-1:-1:-1;37386:18:0;37407:27;:10;37422:11;37407:14;:27::i;:::-;37386:48;-1:-1:-1;37445:23:0;37471:33;37386:48;37471:17;:7;37483:4;37471:11;:17::i;:33::-;37523:7;;;;-1:-1:-1;37549:4:0;;-1:-1:-1;37133:429:0;;-1:-1:-1;;;;;;;37133:429:0:o;34989:566::-;35092:15;35109:23;35134:12;35148:23;35173:12;35187:18;35209:19;35220:7;35209:10;:19::i;:::-;-1:-1:-1;;;;;35257:15:0;;;;;;:7;:15;;;;;;35091:137;;-1:-1:-1;35091:137:0;;-1:-1:-1;35091:137:0;;-1:-1:-1;35091:137:0;-1:-1:-1;35091:137:0;-1:-1:-1;35091:137:0;-1:-1:-1;35257:28:0;;35277:7;35257:19;:28::i;:::-;-1:-1:-1;;;;;35239:15:0;;;;;;:7;:15;;;;;;;;:46;;;;35314:7;:15;;;;:28;;35334:7;35314:19;:28::i;:::-;-1:-1:-1;;;;;35296:15:0;;;;;;;:7;:15;;;;;;:46;;;;35374:18;;;;;;;:39;;35397:15;35374:22;:39::i;:::-;-1:-1:-1;;;;;35353:18:0;;;;;;:7;:18;;;;;:60;35427:26;35442:10;35427:14;:26::i;:::-;35464:23;35476:4;35482;35464:11;:23::i;:::-;35520:9;-1:-1:-1;;;;;35503:44:0;35512:6;-1:-1:-1;;;;;35503:44:0;;35531:15;35503:44;;;;160:25:1;;148:2;133:18;;14:177;35503:44:0;;;;;;;;35080:475;;;;;;34989:566;;;:::o;34395:586::-;34496:15;34513:23;34538:12;34552:23;34577:12;34591:18;34613:19;34624:7;34613:10;:19::i;:::-;-1:-1:-1;;;;;34661:15:0;;;;;;:7;:15;;;;;;34495:137;;-1:-1:-1;34495:137:0;;-1:-1:-1;34495:137:0;;-1:-1:-1;34495:137:0;-1:-1:-1;34495:137:0;-1:-1:-1;34495:137:0;-1:-1:-1;34661:28:0;;34495:137;34661:19;:28::i;:::-;-1:-1:-1;;;;;34643:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;34721:18;;;;;:7;:18;;;;;:39;;34744:15;34721:22;:39::i;:::-;-1:-1:-1;;;;;34700:18:0;;;;;;:7;:18;;;;;;;;:60;;;;34792:7;:18;;;;:39;;34815:15;34792:22;:39::i;35563:642::-;35666:15;35683:23;35708:12;35722:23;35747:12;35761:18;35783:19;35794:7;35783:10;:19::i;:::-;-1:-1:-1;;;;;35831:15:0;;;;;;:7;:15;;;;;;35665:137;;-1:-1:-1;35665:137:0;;-1:-1:-1;35665:137:0;;-1:-1:-1;35665:137:0;-1:-1:-1;35665:137:0;-1:-1:-1;35665:137:0;-1:-1:-1;35831:28:0;;35851:7;35831:19;:28::i;:::-;-1:-1:-1;;;;;35813:15:0;;;;;;:7;:15;;;;;;;;:46;;;;35888:7;:15;;;;:28;;35908:7;35888:19;:28::i;33885:502::-;33984:15;34001:23;34026:12;34040:23;34065:12;34079:18;34101:19;34112:7;34101:10;:19::i;:::-;-1:-1:-1;;;;;34149:15:0;;;;;;:7;:15;;;;;;33983:137;;-1:-1:-1;33983:137:0;;-1:-1:-1;33983:137:0;;-1:-1:-1;33983:137:0;-1:-1:-1;33983:137:0;-1:-1:-1;33983:137:0;-1:-1:-1;34149:28:0;;33983:137;34149:19;:28::i;38974:160::-;39038:7;39065:61;39110:5;39065:26;39077:13;;39065:7;:11;;:26;;;;:::i;39146:168::-;39216:7;39243:63;39290:5;39243:28;39255:15;;39243:7;:11;;:28;;;;:::i;38607:355::-;38670:19;38693:10;:8;:10::i;:::-;38670:33;-1:-1:-1;38714:18:0;38735:27;:10;38670:33;38735:14;:27::i;:::-;38814:4;38798:22;;;;:7;:22;;;;;;38714:48;;-1:-1:-1;38798:38:0;;38714:48;38798:26;:38::i;:::-;38789:4;38773:22;;;;:7;:22;;;;;;;;:63;;;;38850:11;:26;;;;;;38847:107;;;38932:4;38916:22;;;;:7;:22;;;;;;:38;;38943:10;38916:26;:38::i;:::-;38907:4;38891:22;;;;:7;:22;;;;;:63;38659:303;;38607:355;:::o;36213:147::-;36291:7;;:17;;36303:4;36291:11;:17::i;:::-;36281:7;:27;36332:10;;:20;;36347:4;36332:14;:20::i;:::-;36319:10;:33;-1:-1:-1;;36213:147:0:o;196:367:1:-;259:8;269:6;323:3;316:4;308:6;304:17;300:27;290:55;;341:1;338;331:12;290:55;-1:-1:-1;364:20:1;;407:18;396:30;;393:50;;;439:1;436;429:12;393:50;476:4;468:6;464:17;452:29;;536:3;529:4;519:6;516:1;512:14;504:6;500:27;496:38;493:47;490:67;;;553:1;550;543:12;490:67;196:367;;;;;:::o;568:118::-;654:5;647:13;640:21;633:5;630:32;620:60;;676:1;673;666:12;691:566;783:6;791;799;852:2;840:9;831:7;827:23;823:32;820:52;;;868:1;865;858:12;820:52;908:9;895:23;941:18;933:6;930:30;927:50;;;973:1;970;963:12;927:50;1012:70;1074:7;1065:6;1054:9;1050:22;1012:70;:::i;:::-;1101:8;;-1:-1:-1;986:96:1;-1:-1:-1;;1186:2:1;1171:18;;1158:32;1199:28;1158:32;1199:28;:::i;:::-;1246:5;1236:15;;;691:566;;;;;:::o;1262:597::-;1374:4;1403:2;1432;1421:9;1414:21;1464:6;1458:13;1507:6;1502:2;1491:9;1487:18;1480:34;1532:1;1542:140;1556:6;1553:1;1550:13;1542:140;;;1651:14;;;1647:23;;1641:30;1617:17;;;1636:2;1613:26;1606:66;1571:10;;1542:140;;;1700:6;1697:1;1694:13;1691:91;;;1770:1;1765:2;1756:6;1745:9;1741:22;1737:31;1730:42;1691:91;-1:-1:-1;1843:2:1;1822:15;-1:-1:-1;;1818:29:1;1803:45;;;;1850:2;1799:54;;1262:597;-1:-1:-1;;;1262:597:1:o;1864:180::-;1923:6;1976:2;1964:9;1955:7;1951:23;1947:32;1944:52;;;1992:1;1989;1982:12;1944:52;-1:-1:-1;2015:23:1;;1864:180;-1:-1:-1;1864:180:1:o;2049:131::-;-1:-1:-1;;;;;2124:31:1;;2114:42;;2104:70;;2170:1;2167;2160:12;2185:315;2253:6;2261;2314:2;2302:9;2293:7;2289:23;2285:32;2282:52;;;2330:1;2327;2320:12;2282:52;2369:9;2356:23;2388:31;2413:5;2388:31;:::i;:::-;2438:5;2490:2;2475:18;;;;2462:32;;-1:-1:-1;;;2185:315:1:o;2697:309::-;2762:6;2770;2823:2;2811:9;2802:7;2798:23;2794:32;2791:52;;;2839:1;2836;2829:12;2791:52;2878:9;2865:23;2897:28;2919:5;2897:28;:::i;3246:248::-;3314:6;3322;3375:2;3363:9;3354:7;3350:23;3346:32;3343:52;;;3391:1;3388;3381:12;3343:52;-1:-1:-1;;3414:23:1;;;3484:2;3469:18;;;3456:32;;-1:-1:-1;3246:248:1:o;3499:456::-;3576:6;3584;3592;3645:2;3633:9;3624:7;3620:23;3616:32;3613:52;;;3661:1;3658;3651:12;3613:52;3700:9;3687:23;3719:31;3744:5;3719:31;:::i;:::-;3769:5;-1:-1:-1;3826:2:1;3811:18;;3798:32;3839:33;3798:32;3839:33;:::i;:::-;3499:456;;3891:7;;-1:-1:-1;;;3945:2:1;3930:18;;;;3917:32;;3499:456::o;3960:401::-;4041:6;4049;4102:2;4090:9;4081:7;4077:23;4073:32;4070:52;;;4118:1;4115;4108:12;4070:52;4157:9;4144:23;4176:31;4201:5;4176:31;:::i;:::-;4226:5;-1:-1:-1;4283:2:1;4268:18;;4255:32;4296:33;4255:32;4296:33;:::i;:::-;4348:7;4338:17;;;3960:401;;;;;:::o;4366:241::-;4422:6;4475:2;4463:9;4454:7;4450:23;4446:32;4443:52;;;4491:1;4488;4481:12;4443:52;4530:9;4517:23;4549:28;4571:5;4549:28;:::i;4612:247::-;4671:6;4724:2;4712:9;4703:7;4699:23;4695:32;4692:52;;;4740:1;4737;4730:12;4692:52;4779:9;4766:23;4798:31;4823:5;4798:31;:::i;5053:309::-;5118:6;5126;5179:2;5167:9;5158:7;5154:23;5150:32;5147:52;;;5195:1;5192;5185:12;5147:52;5231:9;5218:23;5208:33;;5291:2;5280:9;5276:18;5263:32;5304:28;5326:5;5304:28;:::i;5799:382::-;5864:6;5872;5925:2;5913:9;5904:7;5900:23;5896:32;5893:52;;;5941:1;5938;5931:12;5893:52;5980:9;5967:23;5999:31;6024:5;5999:31;:::i;:::-;6049:5;-1:-1:-1;6106:2:1;6091:18;;6078:32;6119:30;6078:32;6119:30;:::i;6186:773::-;6308:6;6316;6324;6332;6385:2;6373:9;6364:7;6360:23;6356:32;6353:52;;;6401:1;6398;6391:12;6353:52;6441:9;6428:23;6470:18;6511:2;6503:6;6500:14;6497:34;;;6527:1;6524;6517:12;6497:34;6566:70;6628:7;6619:6;6608:9;6604:22;6566:70;:::i;:::-;6655:8;;-1:-1:-1;6540:96:1;-1:-1:-1;6743:2:1;6728:18;;6715:32;;-1:-1:-1;6759:16:1;;;6756:36;;;6788:1;6785;6778:12;6756:36;;6827:72;6891:7;6880:8;6869:9;6865:24;6827:72;:::i;:::-;6186:773;;;;-1:-1:-1;6918:8:1;-1:-1:-1;;;;6186:773:1:o;6964:437::-;7050:6;7058;7111:2;7099:9;7090:7;7086:23;7082:32;7079:52;;;7127:1;7124;7117:12;7079:52;7167:9;7154:23;7200:18;7192:6;7189:30;7186:50;;;7232:1;7229;7222:12;7186:50;7271:70;7333:7;7324:6;7313:9;7309:22;7271:70;:::i;:::-;7360:8;;7245:96;;-1:-1:-1;6964:437:1;-1:-1:-1;;;;6964:437:1:o;7666:671::-;7752:6;7760;7768;7776;7829:3;7817:9;7808:7;7804:23;7800:33;7797:53;;;7846:1;7843;7836:12;7797:53;7885:9;7872:23;7904:31;7929:5;7904:31;:::i;:::-;7954:5;-1:-1:-1;8011:2:1;7996:18;;7983:32;8024:33;7983:32;8024:33;:::i;:::-;8076:7;-1:-1:-1;8135:2:1;8120:18;;8107:32;8148:33;8107:32;8148:33;:::i;:::-;8200:7;-1:-1:-1;8259:2:1;8244:18;;8231:32;8272:33;8231:32;8272:33;:::i;:::-;7666:671;;;;-1:-1:-1;7666:671:1;;-1:-1:-1;;7666:671:1:o;8342:523::-;8446:6;8454;8462;8470;8478;8486;8539:3;8527:9;8518:7;8514:23;8510:33;8507:53;;;8556:1;8553;8546:12;8507:53;-1:-1:-1;;8579:23:1;;;8649:2;8634:18;;8621:32;;-1:-1:-1;8700:2:1;8685:18;;8672:32;;8751:2;8736:18;;8723:32;;-1:-1:-1;8802:3:1;8787:19;;8774:33;;-1:-1:-1;8854:3:1;8839:19;8826:33;;-1:-1:-1;8342:523:1;-1:-1:-1;8342:523:1:o;9263:356::-;9465:2;9447:21;;;9484:18;;;9477:30;9543:34;9538:2;9523:18;;9516:62;9610:2;9595:18;;9263:356::o;9624:127::-;9685:10;9680:3;9676:20;9673:1;9666:31;9716:4;9713:1;9706:15;9740:4;9737:1;9730:15;9756:127;9817:10;9812:3;9808:20;9805:1;9798:31;9848:4;9845:1;9838:15;9872:4;9869:1;9862:15;9888:135;9927:3;9948:17;;;9945:43;;9968:18;;:::i;:::-;-1:-1:-1;10015:1:1;10004:13;;9888:135::o;10028:380::-;10107:1;10103:12;;;;10150;;;10171:61;;10225:4;10217:6;10213:17;10203:27;;10171:61;10278:2;10270:6;10267:14;10247:18;10244:38;10241:161;;10324:10;10319:3;10315:20;10312:1;10305:31;10359:4;10356:1;10349:15;10387:4;10384:1;10377:15;10241:161;;10028:380;;;:::o;10759:184::-;10829:6;10882:2;10870:9;10861:7;10857:23;10853:32;10850:52;;;10898:1;10895;10888:12;10850:52;-1:-1:-1;10921:16:1;;10759:184;-1:-1:-1;10759:184:1:o;11227:245::-;11294:6;11347:2;11335:9;11326:7;11322:23;11318:32;11315:52;;;11363:1;11360;11353:12;11315:52;11395:9;11389:16;11414:28;11436:5;11414:28;:::i;12244:125::-;12284:4;12312:1;12309;12306:8;12303:34;;;12317:18;;:::i;:::-;-1:-1:-1;12354:9:1;;12244:125::o;12374:127::-;12435:10;12430:3;12426:20;12423:1;12416:31;12466:4;12463:1;12456:15;12490:4;12487:1;12480:15;14104:168;14144:7;14210:1;14206;14202:6;14198:14;14195:1;14192:21;14187:1;14180:9;14173:17;14169:45;14166:71;;;14217:18;;:::i;:::-;-1:-1:-1;14257:9:1;;14104:168::o;14277:128::-;14317:3;14348:1;14344:6;14341:1;14338:13;14335:39;;;14354:18;;:::i;:::-;-1:-1:-1;14390:9:1;;14277:128::o;14410:217::-;14450:1;14476;14466:132;;14520:10;14515:3;14511:20;14508:1;14501:31;14555:4;14552:1;14545:15;14583:4;14580:1;14573:15;14466:132;-1:-1:-1;14612:9:1;;14410:217::o;14632:251::-;14702:6;14755:2;14743:9;14734:7;14730:23;14726:32;14723:52;;;14771:1;14768;14761:12;14723:52;14803:9;14797:16;14822:31;14847:5;14822:31;:::i;19095:398::-;19297:2;19279:21;;;19336:2;19316:18;;;19309:30;19375:34;19370:2;19355:18;;19348:62;-1:-1:-1;;;19441:2:1;19426:18;;19419:32;19483:3;19468:19;;19095:398::o;20440:461::-;20493:3;20531:5;20525:12;20558:6;20553:3;20546:19;20584:4;20613:2;20608:3;20604:12;20597:19;;20650:2;20643:5;20639:14;20671:1;20681:195;20695:6;20692:1;20689:13;20681:195;;;20760:13;;-1:-1:-1;;;;;20756:39:1;20744:52;;20816:12;;;;20851:15;;;;20792:1;20710:9;20681:195;;;-1:-1:-1;20892:3:1;;20440:461;-1:-1:-1;;;;;20440:461:1:o;20906:582::-;21205:6;21194:9;21187:25;21248:6;21243:2;21232:9;21228:18;21221:34;21291:3;21286:2;21275:9;21271:18;21264:31;21168:4;21312:57;21364:3;21353:9;21349:19;21341:6;21312:57;:::i;:::-;-1:-1:-1;;;;;21405:32:1;;;;21400:2;21385:18;;21378:60;-1:-1:-1;21469:3:1;21454:19;21447:35;21304:65;20906:582;-1:-1:-1;;;20906:582:1:o;21493:332::-;21700:6;21689:9;21682:25;21743:2;21738;21727:9;21723:18;21716:30;21663:4;21763:56;21815:2;21804:9;21800:18;21792:6;21763:56;:::i;:::-;21755:64;21493:332;-1:-1:-1;;;;21493:332:1:o;22442:306::-;22530:6;22538;22546;22599:2;22587:9;22578:7;22574:23;22570:32;22567:52;;;22615:1;22612;22605:12;22567:52;22644:9;22638:16;22628:26;;22694:2;22683:9;22679:18;22673:25;22663:35;;22738:2;22727:9;22723:18;22717:25;22707:35;;22442:306;;;;;:::o

Swarm Source

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