ETH Price: $2,544.67 (+3.59%)

Token

GAWK (GAWK)
 

Overview

Max Total Supply

100,000,000,000 GAWK

Holders

146

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,266,039,559.169604013739890546 GAWK

Value
$0.00
0x5233A89Fd1705F0836fD2D2d9B25dcBF6951EfbD
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:
GAWK

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.7;
library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}
interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    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 swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}
interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Transfer(address indexed from, address indexed to, uint256 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 (uint256);
    function balanceOf(address owner) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transfer(address to, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 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 (uint256);
    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;
    event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to);
    event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to);
    event Sync(uint112 reserve0, uint112 reserve1);
    function MINIMUM_LIQUIDITY() external pure returns (uint256);
    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 (uint256);
    function price1CumulativeLast() external view returns (uint256);
    function kLast() external view returns (uint256);
    function burn(address to) external returns (uint256 amount0, uint256 amount1);
    function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}
contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
contract ERC20Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "ERC20Ownable: 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), "ERC20Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
interface IERC20 {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view 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);
}
contract GAWK is Context, IERC20, ERC20Ownable {
    using SafeMath for uint256;

    string private constant _tokenName = "GAWK";
    string private constant _tokenSymbol = "GAWK";
    uint8 private constant _tokenDecimal = 18;

    uint256 private constant tMAX = ~uint256(0);
    uint256 private constant _tTotal = 1e11 * 10**18;
    uint256 private _rTotal = (tMAX - (tMAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 public maxTokens;
	uint256 private minTokensForTaxSwap;
    address payable private MarketingAddress; //Marketing Wallet Address
    address payable private AppDevelopAddress; //Other Misc Wallet Address
    address payable private DevAddress; //Dev Wallet Address
    address payable public LiquidityAddress; //Liquidity Pool Token Owner. Gets set to BURN after inital LP is created.
    address dead = address(0xdead);
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    address[] private _excluded;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private Excluded;
	mapping(address => bool) private ExcludedFromTax;
    mapping(address => bool) private MaxWalletExclude;
    mapping (address => bool) public isBotAddress;
    mapping(address => bool) public isSniperAddress;
	uint256 private MarketingTokens;
	uint256 private LiquidityTokens;
    uint256 private AppDevelopmentTokens;
    uint256 private totalBurnedTokens;
    uint256 private MarketingTax = 6;
    uint256 private prevMarketingTax = MarketingTax;
    uint256 private AppDevelopmentTax = 2;
    uint256 private prevAppDevelopmentTax = AppDevelopmentTax;
    uint256 private LiquidityTax = 2; 
    uint256 private prevLiquidityTax = LiquidityTax;
    uint256 private ReflectionsTax = 0; 
    uint256 private prevReflectionsTax = ReflectionsTax;
    uint256 private taxDivision = MarketingTax + AppDevelopmentTax + LiquidityTax;
    uint256 private buyMarketingTax = 6;
    uint256 private buyAppDevelopmentTax = 2; 
    uint256 private buyLiquidityTax = 2;
    uint256 private buyReflectionsTax = 0; 
    uint256 private sellMarketingTax = 6; 
    uint256 private sellAppDevelopmentTax = 2; 
    uint256 private sellLiquidityTax = 2;
    uint256 private sellReflectionsTax = 0; 
    uint256 private maxTokenPercent = 1;
    uint256 public ActiveTradeBlock = 0;
    uint256 public SniperPenaltyEndTime;
    bool public maxWallet = false;
    bool public limitsInEffect = false;
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    bool public live = false;
    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    constructor() payable {
        _rOwned[_msgSender()] = _rTotal / 100 * 5;
        _rOwned[address(this)] = _rTotal / 100 * 95;
        maxTokens = _tTotal * maxTokenPercent / 100;
        minTokensForTaxSwap = _tTotal * 5 / 10000; 
        MarketingAddress = payable(0xf4Fe4C3cF688Ae1eC71609Ea60dD1b4b0Cc4EBd0); 
        AppDevelopAddress = payable(0x83cD2e03378B59A0dc9707a5b1cfC379114f2eA2); 
        DevAddress = payable(0xeF01d68bEc0BC57575c525f15cE9707A75e2296f); 
        // LEAVE AS OWNER
        LiquidityAddress = payable(owner()); //Liquidity Pool Token Owner. Gets set to BURN after inital LP is created.
        Excluded[dead] = true;
        ExcludedFromTax[_msgSender()] = true;
        ExcludedFromTax[dead] = true;
        ExcludedFromTax[address(this)] = true;
        ExcludedFromTax[MarketingAddress] = true;
        ExcludedFromTax[AppDevelopAddress] = true;
        ExcludedFromTax[DevAddress] = true;
        MaxWalletExclude[address(this)] = true;
        MaxWalletExclude[_msgSender()] = true;
        MaxWalletExclude[dead] = true;
        MaxWalletExclude[MarketingAddress] = true;
        MaxWalletExclude[AppDevelopAddress] = true;
        MaxWalletExclude[DevAddress] = true;
        AddBot(0x41B0320bEb1563A048e2431c8C1cC155A0DFA967);
        AddBot(0x91B305F0890Fd0534B66D8d479da6529C35A3eeC);
        AddBot(0x7F5622afb5CEfbA39f96CA3b2814eCF0E383AAA4);
        AddBot(0xfcf6a3d7eb8c62a5256a020e48f153c6D5Dd6909);
        AddBot(0x74BC89a9e831ab5f33b90607Dd9eB5E01452A064);
        AddBot(0x1F53592C3aA6b827C64C4a3174523182c52Ece84);
        AddBot(0x460545C01c4246194C2e511F166D84bbC8a07608);
        AddBot(0x2E5d67a1d15ccCF65152B3A8ec5315E73461fBcd);
        AddBot(0xb5aF12B837aAf602298B3385640F61a0fF0F4E0d);
        AddBot(0xEd3e444A30Bd440FBab5933dCCC652959DfCB5Ba);
        AddBot(0xEC366bbA6266ac8960198075B14FC1D38ea7de88);
        AddBot(0x10Bf6836600D7cFE1c06b145A8Ac774F8Ba91FDD);
        AddBot(0x44ae54e28d082C98D53eF5593CE54bB231e565E7);
        AddBot(0xa3e820006F8553d5AC9F64A2d2B581501eE24FcF);
		AddBot(0x2228476AC5242e38d5864068B8c6aB61d6bA2222);
		AddBot(0xcC7e3c4a8208172CA4c4aB8E1b8B4AE775Ebd5a8);
		AddBot(0x5b3EE79BbBDb5B032eEAA65C689C119748a7192A);
		AddBot(0x4ddA45d3E9BF453dc95fcD7c783Fe6ff9192d1BA);

        emit Transfer(address(0), _msgSender(), _tTotal * 5 / 100);
        emit Transfer(address(0), address(this), _tTotal * 95 / 100);
    }
    receive() external payable {}
    function name() public pure override returns (string memory) {
        return _tokenName;
    }
    function symbol() public pure override returns (string memory) {
        return _tokenSymbol;
    }
    function decimals() public pure override returns (uint8) {
        return _tokenDecimal;
    }
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
    function balanceOf(address account) public view override returns (uint256) {
        if (Excluded[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 reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns (uint256) {
        require(tAmount <= _tTotal, "Amt 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, "Amt must be less than tot refl");
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
    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);
    }
    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 {
        MarketingTokens += tLiquidity * MarketingTax / taxDivision;
        AppDevelopmentTokens += tLiquidity * AppDevelopmentTax / taxDivision;
        LiquidityTokens += tLiquidity * LiquidityTax / taxDivision;
        uint256 currentRate = _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if (Excluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }
    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(ReflectionsTax).div(10**2);
    }
    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(MarketingTax + AppDevelopmentTax + LiquidityTax).div(10**2);
    }
    function GoLive() external onlyOwner returns (bool){
        require(!live, "Trades already Live!");
        maxWallet = true;
        swapAndLiquifyEnabled = true;
        limitsInEffect = true;
        live = true;
        ActiveTradeBlock = block.number;
        SniperPenaltyEndTime = block.timestamp + 96 hours;
        IUniswapV2Router02 _uniV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniV2Router;
        MaxWalletExclude[address(uniswapV2Router)] = true;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniV2Router.factory()).createPair(address(this), _uniV2Router.WETH());
        MaxWalletExclude[address(uniswapV2Pair)] = true;
        require(address(this).balance > 0, "Must have ETH on contract to Open Market!");
        addLiquidity(balanceOf(address(this)), address(this).balance);
        setLiquidityAddress(dead);
        return true;
    }
    function _approve(address owner,address spender,uint256 amount) private {
        require(owner != address(0), "ERC20: approve from zero address");
        require(spender != address(0), "ERC20: approve to 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(!isBotAddress[from]);
        if(!live){
            require(ExcludedFromTax[from] || ExcludedFromTax[to], "Trading Is Not Live!");
        }
        if (maxWallet && !MaxWalletExclude[to]) {
            require(balanceOf(to) + amount <= maxTokens, "Max amount of tokens for wallet reached!");
        }
        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != dead && !inSwapAndLiquify) {
                if(from != owner() && to != uniswapV2Pair) {
                    for (uint x = 0; x < 3; x++) {
                    if(block.number == ActiveTradeBlock + x) {
                        isSniperAddress[to] = true;
                        }
                    }
                }
            }
        }
        uint256 totalTokensToSwap = LiquidityTokens.add(MarketingTokens).add(AppDevelopmentTokens);
        uint256 contractTokenBalance = balanceOf(address(this));
        bool overMinimumTokenBalance = contractTokenBalance >= minTokensForTaxSwap;
        if (!inSwapAndLiquify && swapAndLiquifyEnabled && balanceOf(uniswapV2Pair) > 0 && totalTokensToSwap > 0 && !ExcludedFromTax[to] && !ExcludedFromTax[from] && to == uniswapV2Pair && overMinimumTokenBalance) {
            swapTaxTokens();
            }
        bool takeFee = true;
        if (ExcludedFromTax[from] || ExcludedFromTax[to]) {
            takeFee = false;
        } else {
            if (from == uniswapV2Pair) {
                removeAllFee();
                MarketingTax = buyMarketingTax;
                AppDevelopmentTax = buyAppDevelopmentTax;
                ReflectionsTax = buyReflectionsTax;
                LiquidityTax = buyLiquidityTax;
            } 
            else if (to == uniswapV2Pair) {
                removeAllFee();
                MarketingTax = sellMarketingTax;
                AppDevelopmentTax = sellAppDevelopmentTax;
                ReflectionsTax = sellReflectionsTax;
                LiquidityTax = sellLiquidityTax;
                if(isSniperAddress[from] && SniperPenaltyEndTime > block.timestamp) {
                    MarketingTax = 95;
                }
            } else {
                require(!isSniperAddress[from] || SniperPenaltyEndTime <= block.timestamp);
                removeAllFee();
            }
        }
        _tokenTransfer(from, to, amount, takeFee);
    }
    function swapTaxTokens() private lockTheSwap {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = MarketingTokens + AppDevelopmentTokens + LiquidityTokens;
        uint256 swapLiquidityTokens = LiquidityTokens.div(2);
        uint256 amountToSwapForETH = contractBalance.sub(swapLiquidityTokens);
        uint256 initialETHBalance = address(this).balance;
        swapTokensForETH(amountToSwapForETH); 
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        uint256 ethForMarketing = ethBalance.mul(MarketingTokens).div(totalTokensToSwap);
        uint256 ethForAppDev = ethBalance.mul(AppDevelopmentTokens).div(totalTokensToSwap);
        uint256 ethForLiquidity = ethBalance.sub(ethForMarketing).sub(ethForAppDev);
        MarketingTokens = 0;
        AppDevelopmentTokens = 0;
        LiquidityTokens = 0;
        (bool success,) = address(MarketingAddress).call{value: ethForMarketing}("");
        (success,) = address(AppDevelopAddress).call{value: ethForAppDev}("");
        addLiquidity(swapLiquidityTokens, ethForLiquidity);
        if(address(this).balance > 5 * 10**17){
            (success,) = address(DevAddress).call{value: address(this).balance}("");
        }
    }
    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            LiquidityAddress,
            block.timestamp
        );
    }
    function removeAllFee() private {
        if (LiquidityTax == 0 && MarketingTax == 0 && AppDevelopmentTax == 0 && ReflectionsTax == 0) return;
        prevLiquidityTax = LiquidityTax;
        prevMarketingTax = MarketingTax;
        prevAppDevelopmentTax = AppDevelopmentTax;
        prevReflectionsTax = ReflectionsTax;

        LiquidityTax = 0;
        MarketingTax = 0;
        AppDevelopmentTax = 0;
        ReflectionsTax = 0;
    }
    function restoreAllFee() private {
        MarketingTax = prevMarketingTax;
        AppDevelopmentTax = prevAppDevelopmentTax;
        ReflectionsTax = prevReflectionsTax;
        LiquidityTax = prevLiquidityTax;
    }
    function _tokenTransfer(address sender,address recipient,uint256 amount,bool takeFee) private {
        if (!takeFee) removeAllFee();
        if (Excluded[sender] && !Excluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!Excluded[sender] && Excluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!Excluded[sender] && !Excluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (Excluded[sender] && Excluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        if (!takeFee) restoreAllFee();
    }
    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 _tokenTransferNoFee(address sender,address recipient,uint256 amount) private {
        _rOwned[sender] = _rOwned[sender].sub(amount);
        _rOwned[recipient] = _rOwned[recipient].add(amount);

        if (Excluded[sender]) {
            _tOwned[sender] = _tOwned[sender].sub(amount);
        }
        if (Excluded[recipient]) {
            _tOwned[recipient] = _tOwned[recipient].add(amount);
        }
        emit Transfer(sender, recipient, amount);
    }
    function setLiquidityAddress(address _LPAddress) internal {
        LiquidityAddress = payable(_LPAddress);
        ExcludedFromTax[LiquidityAddress] = true;
    }
    function ownerSetLiquidityAddress(address _LPAddress) external onlyOwner {
        LiquidityAddress = payable(_LPAddress);
        ExcludedFromTax[LiquidityAddress] = true;
    }
    function excludeFromTax(address account) external onlyOwner {
        ExcludedFromTax[account] = true;
    }
    function includeInTax(address account) external onlyOwner {
        ExcludedFromTax[account] = false;
    }
    function excludeFromMaxTokens(address account) external onlyOwner {
        MaxWalletExclude[account] = true;
    }
    function includeInMaxTokens(address account) external onlyOwner {
        MaxWalletExclude[account] = false;
    }
    function AddBot(address _user) public onlyOwner {
        require(!isBotAddress[_user]);
        isBotAddress[_user] = true;
    }
	function RemoveBot(address _user) public onlyOwner {
        require(isBotAddress[_user]);
        isBotAddress[_user] = false;
    }
    function removeSniper(address account) external onlyOwner {
        require(isSniperAddress[account]);
        isSniperAddress[account] = false;
    }
    function removeLimits() external onlyOwner {
        limitsInEffect = true;
    }
    function resumeLimits() external onlyOwner {
        limitsInEffect = false;
    }
    function TaxSwapEnable() external onlyOwner {
        swapAndLiquifyEnabled = true;
    }
    function TaxSwapDisable() external onlyOwner {
        swapAndLiquifyEnabled = false;
    }
    function enableMaxWallet() external onlyOwner {
        maxWallet = true;
    }
    function disableMaxWallet() external onlyOwner {
        maxWallet = false;
    }
    function setMaxWallet(uint256 _percent) external onlyOwner {
        maxTokens = _tTotal * _percent / 100;
        require(maxTokens <= _tTotal * 3 / 100, "Cannot set max wallet to more then 3% of total supply");
    }
    function ManualTaxSwap() external onlyOwner {
        uint256 contractBalance = balanceOf(address(this));
        require(contractBalance >= _tTotal * 1 / 10000, "Can only swap back if more than 0.01% of tokens stuck on contract");
        swapTaxTokens();
    }
    function withdrawETH() public onlyOwner {
        bool success;
        (success,) = address(DevAddress).call{value: address(this).balance}("");
    }
    function withdrawTokens(uint256 _percent, address _address) public onlyOwner {
        MarketingTokens = 0;
        AppDevelopmentTokens = 0;
        LiquidityTokens = 0;
        uint256 amount = balanceOf(address(this)) * _percent / 10**2;
        require(amount > 0, "Must have Tokens on CA");
        _transfer(address(this), _address, amount);
    }
    function setBuyTaxes(uint256 _buyMarketingTax, uint256 _buyAppDevelopmentTax, uint256 _buyLiquidityTax, uint256 _buyReflectionsTax) external onlyOwner {
        buyMarketingTax = _buyMarketingTax;
        buyAppDevelopmentTax = _buyAppDevelopmentTax;
        buyLiquidityTax = _buyLiquidityTax;
        buyReflectionsTax = _buyReflectionsTax;
    }
    function setSellTaxes(uint256 _sellMarketingTax, uint256 _sellAppDevelopmentTax, uint256 _sellLiquidityTax, uint256 _sellReflectionsTax) external onlyOwner {
        sellMarketingTax = _sellMarketingTax;
        sellAppDevelopmentTax = _sellAppDevelopmentTax;
        sellLiquidityTax = _sellLiquidityTax;
        sellReflectionsTax = _sellReflectionsTax;
    }
    function viewBuyTaxes() public view returns(uint256 BuyMarketing, uint256 buyAppDevelopment, uint256 buyLiquidity, uint256 buyReflections) {
        return(buyMarketingTax,buyAppDevelopmentTax,buyLiquidityTax,buyReflections);
    }
    function viewSellTaxes() public view returns(uint256 sellMarketing, uint256 sellAppDevelopment, uint256 sellLiquidity, uint256 sellReflections) {
        return (sellMarketingTax,sellAppDevelopmentTax,sellLiquidityTax,sellReflections);
    }
    function manualBurnTokens(uint256 percent) external onlyOwner returns (bool){
        require(percent <= 10, "May not nuke more than 10% of tokens in LP");
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);
        uint256 amountToBurn = liquidityPairBalance * percent / 10**2;
        if (amountToBurn > 0){
            _transfer(uniswapV2Pair, dead, amountToBurn);
        }
        totalBurnedTokens = balanceOf(dead);
        require(totalBurnedTokens <= _tTotal * 50 / 10**2, "Can not burn more then 50% of supply");
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        return true;
    }
    function AirDrop(address[] memory wallets, uint256[] memory percent) external onlyOwner{
        require(wallets.length < 10, "Can only airdrop 100 wallets per txn due to gas limits");
        for(uint256 i = 0; i < wallets.length; i++){
            address wallet = wallets[i];
            uint256 amount = _tTotal * percent[i] / 100;
            _transfer(msg.sender, wallet, amount);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"ActiveTradeBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"AddBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"percent","type":"uint256[]"}],"name":"AirDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"GoLive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LiquidityAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ManualTaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"RemoveBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SniperPenaltyEndTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TaxSwapDisable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TaxSwapEnable","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":[],"name":"disableMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromMaxTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInMaxTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInTax","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":"","type":"address"}],"name":"isBotAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSniperAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"live","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_LPAddress","type":"address"}],"name":"ownerSetLiquidityAddress","outputs":[],"stateMutability":"nonpayable","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resumeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyMarketingTax","type":"uint256"},{"internalType":"uint256","name":"_buyAppDevelopmentTax","type":"uint256"},{"internalType":"uint256","name":"_buyLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"_buyReflectionsTax","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percent","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellMarketingTax","type":"uint256"},{"internalType":"uint256","name":"_sellAppDevelopmentTax","type":"uint256"},{"internalType":"uint256","name":"_sellLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"_sellReflectionsTax","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewBuyTaxes","outputs":[{"internalType":"uint256","name":"BuyMarketing","type":"uint256"},{"internalType":"uint256","name":"buyAppDevelopment","type":"uint256"},{"internalType":"uint256","name":"buyLiquidity","type":"uint256"},{"internalType":"uint256","name":"buyReflections","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewSellTaxes","outputs":[{"internalType":"uint256","name":"sellMarketing","type":"uint256"},{"internalType":"uint256","name":"sellAppDevelopment","type":"uint256"},{"internalType":"uint256","name":"sellLiquidity","type":"uint256"},{"internalType":"uint256","name":"sellReflections","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"address","name":"_address","type":"address"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001f6c01431e0fae6d7217caa0000000600019620007a5565b6200002d906000196200078b565b600155600980546001600160a01b03191661dead17905560066019819055601a8190556002601b819055601c819055601d819055601e8190556000601f819055602055906200007e90829062000737565b6200008a919062000737565b6021556006602281905560026023819055602481905560006025819055602692909255602781905560285560298190556001602a55602b819055602d805464ffff00ffff1916905580546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350606460015462000122919062000752565b6200012f90600562000769565b336000908152600d6020526040902055600154620001509060649062000752565b6200015d90605f62000769565b306000908152600d6020526040902055602a546064906200018c906c01431e0fae6d7217caa000000062000769565b62000198919062000752565b600355612710620001b86c01431e0fae6d7217caa0000000600562000769565b620001c4919062000752565b600455600580546001600160a01b031990811673f4fe4c3cf688ae1ec71609ea60dd1b4b0cc4ebd0179091556006805482167383cd2e03378b59a0dc9707a5b1cfc379114f2ea21790556007805490911673ef01d68bec0bc57575c525f15ce9707a75e2296f179055620002406000546001600160a01b031690565b600880546001600160a01b0319166001600160a01b03928316179055600954166000908152601060205260408120805460ff1916600190811790915590601190620002883390565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560095482168152601184528281208054861660019081179091553080835284832080548816831790556005548416835284832080548816831790556006548416835284832080548816831790556007549093168252838220805487168217905591815260129384905291822080549094168117909355620003343390565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600954821681526012909352818320805485166001908117909155600554821684528284208054861682179055600654821684528284208054861682179055600754909116835291208054909216179055620003d27341b0320beb1563a048e2431c8c1cc155a0dfa9676200067f565b620003f17391b305f0890fd0534b66d8d479da6529c35a3eec6200067f565b62000410737f5622afb5cefba39f96ca3b2814ecf0e383aaa46200067f565b6200042f73fcf6a3d7eb8c62a5256a020e48f153c6d5dd69096200067f565b6200044e7374bc89a9e831ab5f33b90607dd9eb5e01452a0646200067f565b6200046d731f53592c3aa6b827c64c4a3174523182c52ece846200067f565b6200048c73460545c01c4246194c2e511f166d84bbc8a076086200067f565b620004ab732e5d67a1d15cccf65152b3a8ec5315e73461fbcd6200067f565b620004ca73b5af12b837aaf602298b3385640f61a0ff0f4e0d6200067f565b620004e973ed3e444a30bd440fbab5933dccc652959dfcb5ba6200067f565b6200050873ec366bba6266ac8960198075b14fc1d38ea7de886200067f565b620005277310bf6836600d7cfe1c06b145a8ac774f8ba91fdd6200067f565b620005467344ae54e28d082c98d53ef5593ce54bb231e565e76200067f565b6200056573a3e820006f8553d5ac9f64a2d2b581501ee24fcf6200067f565b62000584732228476ac5242e38d5864068b8c6ab61d6ba22226200067f565b620005a373cc7e3c4a8208172ca4c4ab8e1b8b4ae775ebd5a86200067f565b620005c2735b3ee79bbbdb5b032eeaa65c689c119748a7192a6200067f565b620005e1734dda45d3e9bf453dc95fcd7c783fe6ff9192d1ba6200067f565b33600060008051602062003e108339815191526064620006106c01431e0fae6d7217caa0000000600562000769565b6200061c919062000752565b60405190815260200160405180910390a330600060008051602062003e1083398151915260646200065c6c01431e0fae6d7217caa0000000605f62000769565b62000668919062000752565b60405190815260200160405180910390a3620007e8565b6000546001600160a01b03163314620006ec5760405162461bcd60e51b815260206004820152602560248201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060448201526437bbb732b960d91b606482015260840160405180910390fd5b6001600160a01b03811660009081526013602052604090205460ff16156200071357600080fd5b6001600160a01b03166000908152601360205260409020805460ff19166001179055565b600082198211156200074d576200074d620007bc565b500190565b600082620007645762000764620007d2565b500490565b6000816000190483118215151615620007865762000786620007bc565b500290565b600082821015620007a057620007a0620007bc565b500390565b600082620007b757620007b7620007d2565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b61361880620007f86000396000f3fe60806040526004361061031e5760003560e01c80636e86ea8b116101ab578063cf1e568d116100f7578063e831574211610095578063f2fde38b1161006f578063f2fde38b1461094f578063f480fec21461096f578063f8b45b051461098f578063fe80f454146109a957600080fd5b8063e8315742146108f4578063eaa8f7e31461090a578063eb5e04891461093a57600080fd5b8063e086e5ec116100d1578063e086e5ec14610882578063e17c4c7414610897578063e4bf1bed146108b7578063e64aa779146108d757600080fd5b8063cf1e568d146107e3578063d7aaf5d914610803578063dd62ed3e1461083c57600080fd5b8063957aa58c11610164578063a9059cbb1161013e578063a9059cbb14610783578063a98a934a146107a3578063aee24225146107b8578063b74510e1146107ce57600080fd5b8063957aa58c1461074157806395d89b411461032a578063a457c2d71461076357600080fd5b80636e86ea8b146106af57806370a08231146106c4578063715018a6146106e4578063751039fc146106f95780637f7fe7c21461070e5780638da5cb5b1461072357600080fd5b8063398d92bb1161026a57806351524e5b1161022357806360d1259e116101fd57806360d1259e1461063a578063620b4bfc1461065a5780636656e9831461066f5780636d61ce651461068f57600080fd5b806351524e5b146105da578063553fec0a146105fa5780635d0044ca1461061a57600080fd5b8063398d92bb146105255780633b4e935a146105455780634549b0391461055a57806349bd5a5e1461057a5780634a62bb651461059a5780634a74bb02146105b957600080fd5b806323b872dd116102d75780632d838119116102b15780632d838119146104a9578063313ce567146104c957806333251a0b146104e5578063395093511461050557600080fd5b806323b872dd14610449578063288a0f21146104695780632c3d04b21461048957600080fd5b806306fdde031461032a578063095ea7b3146103665780630a70c919146103965780631694505e146103c657806318160ddd146103fe578063203cb8f11461042757600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5060408051808201825260048152634741574b60e01b6020820152905161035d9190613353565b60405180910390f35b34801561037257600080fd5b5061038661038136600461317d565b6109bf565b604051901515815260200161035d565b3480156103a257600080fd5b506103866103b13660046130c9565b60146020526000908152604090205460ff1681565b3480156103d257600080fd5b50600a546103e6906001600160a01b031681565b6040516001600160a01b03909116815260200161035d565b34801561040a57600080fd5b50680a18f07d736b90be55601d1b5b60405190815260200161035d565b34801561043357600080fd5b506104476104423660046130c9565b6109d6565b005b34801561045557600080fd5b5061038661046436600461313c565b610a2d565b34801561047557600080fd5b506104476104843660046130c9565b610a96565b34801561049557600080fd5b506104476104a43660046130c9565b610b0a565b3480156104b557600080fd5b506104196104c4366004613272565b610b6e565b3480156104d557600080fd5b506040516012815260200161035d565b3480156104f157600080fd5b506104476105003660046130c9565b610bdf565b34801561051157600080fd5b5061038661052036600461317d565b610c4f565b34801561053157600080fd5b506104476105403660046132a4565b610c85565b34801561055157600080fd5b50610386610d3b565b34801561056657600080fd5b506104196105753660046132c9565b61108e565b34801561058657600080fd5b50600b546103e6906001600160a01b031681565b3480156105a657600080fd5b50602d5461038690610100900460ff1681565b3480156105c557600080fd5b50602d54610386906301000000900460ff1681565b3480156105e657600080fd5b506104476105f53660046131a9565b611125565b34801561060657600080fd5b506008546103e6906001600160a01b031681565b34801561062657600080fd5b50610447610635366004613272565b61124a565b34801561064657600080fd5b506104476106553660046130c9565b611331565b34801561066657600080fd5b5061044761137f565b34801561067b57600080fd5b5061044761068a3660046130c9565b6113b8565b34801561069b57600080fd5b506103866106aa366004613272565b611428565b3480156106bb57600080fd5b50610447611679565b3480156106d057600080fd5b506104196106df3660046130c9565b6116b8565b3480156106f057600080fd5b50610447611717565b34801561070557600080fd5b5061044761178b565b34801561071a57600080fd5b506104476117c6565b34801561072f57600080fd5b506000546001600160a01b03166103e6565b34801561074d57600080fd5b50602d5461038690640100000000900460ff1681565b34801561076f57600080fd5b5061038661077e36600461317d565b6117ff565b34801561078f57600080fd5b5061038661079e36600461317d565b61184e565b3480156107af57600080fd5b5061044761185b565b3480156107c457600080fd5b50610419602b5481565b3480156107da57600080fd5b50610447611891565b3480156107ef57600080fd5b506104476107fe3660046130c9565b611973565b34801561080f57600080fd5b5060225460235460245460005b60408051948552602085019390935291830152606082015260800161035d565b34801561084857600080fd5b50610419610857366004613103565b6001600160a01b039182166000908152600f6020908152604080832093909416825291909152205490565b34801561088e57600080fd5b506104476119be565b3480156108a357600080fd5b506104476108b23660046130c9565b611a40565b3480156108c357600080fd5b506104476108d2366004613321565b611a8b565b3480156108e357600080fd5b50602654602754602854600061081c565b34801561090057600080fd5b5061041960035481565b34801561091657600080fd5b506103866109253660046130c9565b60136020526000908152604090205460ff1681565b34801561094657600080fd5b50610447611ac9565b34801561095b57600080fd5b5061044761096a3660046130c9565b611b00565b34801561097b57600080fd5b5061044761098a366004613321565b611bef565b34801561099b57600080fd5b50602d546103869060ff1681565b3480156109b557600080fd5b50610419602c5481565b60006109cc338484611c2d565b5060015b92915050565b6000546001600160a01b03163314610a095760405162461bcd60e51b8152600401610a00906133a8565b60405180910390fd5b6001600160a01b03166000908152601260205260409020805460ff19166001179055565b6000610a3a848484611d3a565b610a8c8433610a8785604051806060016040528060288152602001613596602891396001600160a01b038a166000908152600f60209081526040808320338452909152902054919061231d565b611c2d565b5060019392505050565b6000546001600160a01b03163314610ac05760405162461bcd60e51b8152600401610a00906133a8565b6001600160a01b03811660009081526013602052604090205460ff1615610ae657600080fd5b6001600160a01b03166000908152601360205260409020805460ff19166001179055565b6000546001600160a01b03163314610b345760405162461bcd60e51b8152600401610a00906133a8565b600880546001600160a01b039092166001600160a01b0319909216821790556000908152601160205260409020805460ff19166001179055565b6000600154821115610bc25760405162461bcd60e51b815260206004820152601e60248201527f416d74206d757374206265206c657373207468616e20746f74207265666c00006044820152606401610a00565b6000610bcc612349565b9050610bd8838261236c565b9392505050565b6000546001600160a01b03163314610c095760405162461bcd60e51b8152600401610a00906133a8565b6001600160a01b03811660009081526014602052604090205460ff16610c2e57600080fd5b6001600160a01b03166000908152601460205260409020805460ff19169055565b336000818152600f602090815260408083206001600160a01b038716845290915281205490916109cc918590610a879086612378565b6000546001600160a01b03163314610caf5760405162461bcd60e51b8152600401610a00906133a8565b6000601581905560178190556016819055606483610ccc306116b8565b610cd691906134ed565b610ce091906134cb565b905060008111610d2b5760405162461bcd60e51b81526020600482015260166024820152754d757374206861766520546f6b656e73206f6e20434160501b6044820152606401610a00565b610d36308383611d3a565b505050565b600080546001600160a01b03163314610d665760405162461bcd60e51b8152600401610a00906133a8565b602d54640100000000900460ff1615610db85760405162461bcd60e51b815260206004820152601460248201527354726164657320616c7265616479204c6976652160601b6044820152606401610a00565b602d805464ffff00ffff191664010100010117905543602b55610dde42620546006134b3565b602c55600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155600081905260126020527f3c6737805ae477fd0cfdda13dc5f99b32fcbfecb81e47f9e11e1b03813c08ec2805460ff19166001179055610e573082680a18f07d736b90be55601d1b611c2d565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610e9057600080fd5b505afa158015610ea4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec891906130e6565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f1057600080fd5b505afa158015610f24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4891906130e6565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610f9057600080fd5b505af1158015610fa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc891906130e6565b600b80546001600160a01b0319166001600160a01b039290921691821790556000908152601260205260409020805460ff191660011790554761105f5760405162461bcd60e51b815260206004820152602960248201527f4d757374206861766520455448206f6e20636f6e747261637420746f204f70656044820152686e204d61726b65742160b81b6064820152608401610a00565b61107161106b306116b8565b47612384565b600954611086906001600160a01b0316610b34565b600191505090565b6000680a18f07d736b90be55601d1b8311156110ec5760405162461bcd60e51b815260206004820152601c60248201527f416d74206d757374206265206c657373207468616e20737570706c79000000006044820152606401610a00565b8161110b5760006110fc84612447565b509395506109d0945050505050565b600061111684612447565b509295506109d0945050505050565b6000546001600160a01b0316331461114f5760405162461bcd60e51b8152600401610a00906133a8565b600a8251106111bf5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203130302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610a00565b60005b8251811015610d365760008382815181106111df576111df613554565b60200260200101519050600060648484815181106111ff576111ff613554565b6020026020010151680a18f07d736b90be55601d1b61121e91906134ed565b61122891906134cb565b9050611235338383611d3a565b5050808061124290613523565b9150506111c2565b6000546001600160a01b031633146112745760405162461bcd60e51b8152600401610a00906133a8565b606461128c82680a18f07d736b90be55601d1b6134ed565b61129691906134cb565b60039081556064906112b590680a18f07d736b90be55601d1b906134ed565b6112bf91906134cb565b600354111561132e5760405162461bcd60e51b815260206004820152603560248201527f43616e6e6f7420736574206d61782077616c6c657420746f206d6f7265207468604482015274656e203325206f6620746f74616c20737570706c7960581b6064820152608401610a00565b50565b6000546001600160a01b0316331461135b5760405162461bcd60e51b8152600401610a00906133a8565b6001600160a01b03166000908152601160205260409020805460ff19166001179055565b6000546001600160a01b031633146113a95760405162461bcd60e51b8152600401610a00906133a8565b602d805463ff00000019169055565b6000546001600160a01b031633146113e25760405162461bcd60e51b8152600401610a00906133a8565b6001600160a01b03811660009081526013602052604090205460ff1661140757600080fd5b6001600160a01b03166000908152601360205260409020805460ff19169055565b600080546001600160a01b031633146114535760405162461bcd60e51b8152600401610a00906133a8565b600a8211156114b75760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608401610a00565b600b546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a082319060240160206040518083038186803b1580156114fd57600080fd5b505afa158015611511573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611535919061328b565b90506000606461154585846134ed565b61154f91906134cb565b9050801561157457600b54600954611574916001600160a01b03908116911683611d3a565b600954611589906001600160a01b03166116b8565b60185560646115a5680a18f07d736b90be55601d1b60326134ed565b6115af91906134cb565b601854111561160c5760405162461bcd60e51b8152602060048201526024808201527f43616e206e6f74206275726e206d6f7265207468656e20353025206f6620737560448201526370706c7960e01b6064820152608401610a00565b600b546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b15801561165657600080fd5b505af115801561166a573d6000803e3d6000fd5b50600198975050505050505050565b6000546001600160a01b031633146116a35760405162461bcd60e51b8152600401610a00906133a8565b602d805463ff00000019166301000000179055565b6001600160a01b03811660009081526010602052604081205460ff16156116f557506001600160a01b03166000908152600e602052604090205490565b6001600160a01b0382166000908152600d60205260409020546109d090610b6e565b6000546001600160a01b031633146117415760405162461bcd60e51b8152600401610a00906133a8565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146117b55760405162461bcd60e51b8152600401610a00906133a8565b602d805461ff001916610100179055565b6000546001600160a01b031633146117f05760405162461bcd60e51b8152600401610a00906133a8565b602d805460ff19166001179055565b60006109cc3384610a87856040518060600160405280602581526020016135be60259139336000908152600f602090815260408083206001600160a01b038d168452909152902054919061231d565b60006109cc338484611d3a565b6000546001600160a01b031633146118855760405162461bcd60e51b8152600401610a00906133a8565b602d805460ff19169055565b6000546001600160a01b031633146118bb5760405162461bcd60e51b8152600401610a00906133a8565b60006118c6306116b8565b90506127106118e2680a18f07d736b90be55601d1b60016134ed565b6118ec91906134cb565b81101561196b5760405162461bcd60e51b815260206004820152604160248201527f43616e206f6e6c792073776170206261636b206966206d6f7265207468616e2060448201527f302e303125206f6620746f6b656e7320737475636b206f6e20636f6e747261636064820152601d60fa1b608482015260a401610a00565b61132e612496565b6000546001600160a01b0316331461199d5760405162461bcd60e51b8152600401610a00906133a8565b6001600160a01b03166000908152601260205260409020805460ff19169055565b6000546001600160a01b031633146119e85760405162461bcd60e51b8152600401610a00906133a8565b6007546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611a35576040519150601f19603f3d011682016040523d82523d6000602084013e611a3a565b606091505b50505050565b6000546001600160a01b03163314611a6a5760405162461bcd60e51b8152600401610a00906133a8565b6001600160a01b03166000908152601160205260409020805460ff19169055565b6000546001600160a01b03163314611ab55760405162461bcd60e51b8152600401610a00906133a8565b602293909355602391909155602455602555565b6000546001600160a01b03163314611af35760405162461bcd60e51b8152600401610a00906133a8565b602d805461ff0019169055565b6000546001600160a01b03163314611b2a5760405162461bcd60e51b8152600401610a00906133a8565b6001600160a01b038116611b945760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b6064820152608401610a00565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611c195760405162461bcd60e51b8152600401610a00906133a8565b602693909355602791909155602855602955565b6001600160a01b038316611c835760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f20616464726573736044820152606401610a00565b6001600160a01b038216611cd95760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f206164647265737300006044820152606401610a00565b6001600160a01b038381166000818152600f602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d9e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a00565b6001600160a01b038216611e005760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a00565b60008111611e625760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a00565b6001600160a01b03831660009081526013602052604090205460ff1615611e8857600080fd5b602d54640100000000900460ff16611f1c576001600160a01b03831660009081526011602052604090205460ff1680611ed957506001600160a01b03821660009081526011602052604090205460ff165b611f1c5760405162461bcd60e51b815260206004820152601460248201527354726164696e67204973204e6f74204c6976652160601b6044820152606401610a00565b602d5460ff168015611f4757506001600160a01b03821660009081526012602052604090205460ff16155b15611fc25760035481611f59846116b8565b611f6391906134b3565b1115611fc25760405162461bcd60e51b815260206004820152602860248201527f4d617820616d6f756e74206f6620746f6b656e7320666f722077616c6c657420604482015267726561636865642160c01b6064820152608401610a00565b602d54610100900460ff16156120d0576000546001600160a01b03848116911614801590611ffe57506000546001600160a01b03838116911614155b801561201257506001600160a01b03821615155b801561202c57506009546001600160a01b03838116911614155b80156120415750602d5462010000900460ff16155b156120d0576000546001600160a01b038481169116148015906120725750600b546001600160a01b03838116911614155b156120d05760005b60038110156120ce5780602b5461209191906134b3565b4314156120bc576001600160a01b0383166000908152601460205260409020805460ff191660011790555b806120c681613523565b91505061207a565b505b60006120f56017546120ef60155460165461237890919063ffffffff16565b90612378565b90506000612102306116b8565b600454602d549192508210159062010000900460ff1615801561212e5750602d546301000000900460ff165b801561214f5750600b5460009061214d906001600160a01b03166116b8565b115b801561215b5750600083115b801561218057506001600160a01b03851660009081526011602052604090205460ff16155b80156121a557506001600160a01b03861660009081526011602052604090205460ff16155b80156121be5750600b546001600160a01b038681169116145b80156121c75750805b156121d4576121d4612496565b6001600160a01b03861660009081526011602052604090205460019060ff168061221657506001600160a01b03861660009081526011602052604090205460ff165b1561222357506000612308565b600b546001600160a01b038881169116141561225e576122416126b7565b602254601955602354601b55602554601f55602454601d55612308565b600b546001600160a01b03878116911614156122cd5761227c6126b7565b602654601955602754601b55602954601f55602854601d556001600160a01b03871660009081526014602052604090205460ff1680156122bd575042602c54115b156122c857605f6019555b612308565b6001600160a01b03871660009081526014602052604090205460ff1615806122f7575042602c5411155b61230057600080fd5b6123086126b7565b61231487878784612712565b50505050505050565b600081848411156123415760405162461bcd60e51b8152600401610a009190613353565b505050900390565b6000806000612356612895565b9092509050612365828261236c565b9250505090565b6000610bd882846134cb565b6000610bd882846134b3565b600a5461239c9030906001600160a01b031684611c2d565b600a5460085460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b15801561240757600080fd5b505af115801561241b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061244091906132f3565b5050505050565b600080600080600080600080600061245e8a612a3d565b925092509250600080600061247c8d8686612477612349565b612a79565b919f909e50909c50959a5093985091965092945050505050565b602d805462ff000019166201000017905560006124b2306116b8565b905060006016546017546015546124c991906134b3565b6124d391906134b3565b905060006124ed600260165461236c90919063ffffffff16565b905060006124fb8483612ac9565b90504761250782612ad5565b60006125134783612ac9565b905060006125368661253060155485612c3e90919063ffffffff16565b9061236c565b905060006125538761253060175486612c3e90919063ffffffff16565b9050600061256b826125658686612ac9565b90612ac9565b600060158190556017819055601681905560055460405192935090916001600160a01b039091169085908381818185875af1925050503d80600081146125cd576040519150601f19603f3d011682016040523d82523d6000602084013e6125d2565b606091505b50506006546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114612622576040519150601f19603f3d011682016040523d82523d6000602084013e612627565b606091505b5050809150506126378883612384565b6706f05b59d3b2000047111561269f576007546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612694576040519150601f19603f3d011682016040523d82523d6000602084013e612699565b606091505b50909150505b5050602d805462ff0000191690555050505050505050565b601d541580156126c75750601954155b80156126d35750601b54155b80156126df5750601f54155b156126e657565b601d8054601e5560198054601a55601b8054601c55601f80546020556000938490559183905582905555565b8061271f5761271f6126b7565b6001600160a01b03841660009081526010602052604090205460ff16801561276057506001600160a01b03831660009081526010602052604090205460ff16155b1561277557612770848484612c4a565b612873565b6001600160a01b03841660009081526010602052604090205460ff161580156127b657506001600160a01b03831660009081526010602052604090205460ff165b156127c657612770848484612d70565b6001600160a01b03841660009081526010602052604090205460ff1615801561280857506001600160a01b03831660009081526010602052604090205460ff16155b1561281857612770848484612e19565b6001600160a01b03841660009081526010602052604090205460ff16801561285857506001600160a01b03831660009081526010602052604090205460ff165b1561286857612770848484612e5d565b612873848484612e19565b80611a3a57611a3a601a54601955601c54601b55602054601f55601e54601d55565b6001546000908190680a18f07d736b90be55601d1b825b600c548110156129fa5782600d6000600c84815481106128ce576128ce613554565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612939575081600e6000600c848154811061291257612912613554565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561295857505060015493680a18f07d736b90be55601d1b9350915050565b61299e600d6000600c848154811061297257612972613554565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612ac9565b92506129e6600e6000600c84815481106129ba576129ba613554565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612ac9565b9150806129f281613523565b9150506128ac565b50600154612a1490680a18f07d736b90be55601d1b61236c565b821015612a3457505060015492680a18f07d736b90be55601d1b92509050565b90939092509050565b600080600080612a4c85612ed0565b90506000612a5986612eec565b90506000612a6b826125658986612ac9565b979296509094509092505050565b6000808080612a888886612c3e565b90506000612a968887612c3e565b90506000612aa48888612c3e565b90506000612ab6826125658686612ac9565b939b939a50919850919650505050505050565b6000610bd8828461350c565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612b0a57612b0a613554565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612b5e57600080fd5b505afa158015612b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9691906130e6565b81600181518110612ba957612ba9613554565b6001600160a01b039283166020918202929092010152600a54612bcf9130911684611c2d565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac94790612c089085906000908690309042906004016133ed565b600060405180830381600087803b158015612c2257600080fd5b505af1158015612c36573d6000803e3d6000fd5b505050505050565b6000610bd882846134ed565b600080600080600080612c5c87612447565b6001600160a01b038f166000908152600e6020526040902054959b50939950919750955093509150612c8e9088612ac9565b6001600160a01b038a166000908152600e6020908152604080832093909355600d90522054612cbd9087612ac9565b6001600160a01b03808b166000908152600d602052604080822093909355908a1681522054612cec9086612378565b6001600160a01b0389166000908152600d6020526040902055612d0e81612f1a565b612d188483613033565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612d5d91815260200190565b60405180910390a3505050505050505050565b600080600080600080612d8287612447565b6001600160a01b038f166000908152600d6020526040902054959b50939950919750955093509150612db49087612ac9565b6001600160a01b03808b166000908152600d6020908152604080832094909455918b168152600e9091522054612dea9084612378565b6001600160a01b0389166000908152600e6020908152604080832093909355600d90522054612cec9086612378565b600080600080600080612e2b87612447565b6001600160a01b038f166000908152600d6020526040902054959b50939950919750955093509150612cbd9087612ac9565b600080600080600080612e6f87612447565b6001600160a01b038f166000908152600e6020526040902054959b50939950919750955093509150612ea19088612ac9565b6001600160a01b038a166000908152600e6020908152604080832093909355600d90522054612db49087612ac9565b60006109d06064612530601f5485612c3e90919063ffffffff16565b60006109d06064612530601d54601b54601954612f0991906134b3565b612f1391906134b3565b8590612c3e565b602154601954612f2a90836134ed565b612f3491906134cb565b60156000828254612f4591906134b3565b9091555050602154601b54612f5a90836134ed565b612f6491906134cb565b60176000828254612f7591906134b3565b9091555050602154601d54612f8a90836134ed565b612f9491906134cb565b60166000828254612fa591906134b3565b9091555060009050612fb5612349565b90506000612fc38383612c3e565b306000908152600d6020526040902054909150612fe09082612378565b306000908152600d602090815260408083209390935560109052205460ff1615610d3657306000908152600e602052604090205461301e9084612378565b306000908152600e6020526040902055505050565b6001546130409083612ac9565b6001556002546130509082612378565b6002555050565b600082601f83011261306857600080fd5b8135602061307d6130788361348f565b61345e565b80838252828201915082860187848660051b890101111561309d57600080fd5b60005b858110156130bc578135845292840192908401906001016130a0565b5090979650505050505050565b6000602082840312156130db57600080fd5b8135610bd881613580565b6000602082840312156130f857600080fd5b8151610bd881613580565b6000806040838503121561311657600080fd5b823561312181613580565b9150602083013561313181613580565b809150509250929050565b60008060006060848603121561315157600080fd5b833561315c81613580565b9250602084013561316c81613580565b929592945050506040919091013590565b6000806040838503121561319057600080fd5b823561319b81613580565b946020939093013593505050565b600080604083850312156131bc57600080fd5b823567ffffffffffffffff808211156131d457600080fd5b818501915085601f8301126131e857600080fd5b813560206131f86130788361348f565b8083825282820191508286018a848660051b890101111561321857600080fd5b600096505b8487101561324457803561323081613580565b83526001969096019591830191830161321d565b509650508601359250508082111561325b57600080fd5b5061326885828601613057565b9150509250929050565b60006020828403121561328457600080fd5b5035919050565b60006020828403121561329d57600080fd5b5051919050565b600080604083850312156132b757600080fd5b82359150602083013561313181613580565b600080604083850312156132dc57600080fd5b823591506020830135801515811461313157600080fd5b60008060006060848603121561330857600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561333757600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b8181101561338057858101830151858201604001528201613364565b81811115613392576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561343d5784516001600160a01b031683529383019391830191600101613418565b50506001600160a01b03969096166060850152505050608001529392505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156134875761348761356a565b604052919050565b600067ffffffffffffffff8211156134a9576134a961356a565b5060051b60200190565b600082198211156134c6576134c661353e565b500190565b6000826134e857634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156135075761350761353e565b500290565b60008282101561351e5761351e61353e565b500390565b60006000198214156135375761353761353e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461132e57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ced5982964f50a0d9802adc61992190c7097b4965da89d1f8974a93f12a40e1164736f6c63430008070033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x60806040526004361061031e5760003560e01c80636e86ea8b116101ab578063cf1e568d116100f7578063e831574211610095578063f2fde38b1161006f578063f2fde38b1461094f578063f480fec21461096f578063f8b45b051461098f578063fe80f454146109a957600080fd5b8063e8315742146108f4578063eaa8f7e31461090a578063eb5e04891461093a57600080fd5b8063e086e5ec116100d1578063e086e5ec14610882578063e17c4c7414610897578063e4bf1bed146108b7578063e64aa779146108d757600080fd5b8063cf1e568d146107e3578063d7aaf5d914610803578063dd62ed3e1461083c57600080fd5b8063957aa58c11610164578063a9059cbb1161013e578063a9059cbb14610783578063a98a934a146107a3578063aee24225146107b8578063b74510e1146107ce57600080fd5b8063957aa58c1461074157806395d89b411461032a578063a457c2d71461076357600080fd5b80636e86ea8b146106af57806370a08231146106c4578063715018a6146106e4578063751039fc146106f95780637f7fe7c21461070e5780638da5cb5b1461072357600080fd5b8063398d92bb1161026a57806351524e5b1161022357806360d1259e116101fd57806360d1259e1461063a578063620b4bfc1461065a5780636656e9831461066f5780636d61ce651461068f57600080fd5b806351524e5b146105da578063553fec0a146105fa5780635d0044ca1461061a57600080fd5b8063398d92bb146105255780633b4e935a146105455780634549b0391461055a57806349bd5a5e1461057a5780634a62bb651461059a5780634a74bb02146105b957600080fd5b806323b872dd116102d75780632d838119116102b15780632d838119146104a9578063313ce567146104c957806333251a0b146104e5578063395093511461050557600080fd5b806323b872dd14610449578063288a0f21146104695780632c3d04b21461048957600080fd5b806306fdde031461032a578063095ea7b3146103665780630a70c919146103965780631694505e146103c657806318160ddd146103fe578063203cb8f11461042757600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5060408051808201825260048152634741574b60e01b6020820152905161035d9190613353565b60405180910390f35b34801561037257600080fd5b5061038661038136600461317d565b6109bf565b604051901515815260200161035d565b3480156103a257600080fd5b506103866103b13660046130c9565b60146020526000908152604090205460ff1681565b3480156103d257600080fd5b50600a546103e6906001600160a01b031681565b6040516001600160a01b03909116815260200161035d565b34801561040a57600080fd5b50680a18f07d736b90be55601d1b5b60405190815260200161035d565b34801561043357600080fd5b506104476104423660046130c9565b6109d6565b005b34801561045557600080fd5b5061038661046436600461313c565b610a2d565b34801561047557600080fd5b506104476104843660046130c9565b610a96565b34801561049557600080fd5b506104476104a43660046130c9565b610b0a565b3480156104b557600080fd5b506104196104c4366004613272565b610b6e565b3480156104d557600080fd5b506040516012815260200161035d565b3480156104f157600080fd5b506104476105003660046130c9565b610bdf565b34801561051157600080fd5b5061038661052036600461317d565b610c4f565b34801561053157600080fd5b506104476105403660046132a4565b610c85565b34801561055157600080fd5b50610386610d3b565b34801561056657600080fd5b506104196105753660046132c9565b61108e565b34801561058657600080fd5b50600b546103e6906001600160a01b031681565b3480156105a657600080fd5b50602d5461038690610100900460ff1681565b3480156105c557600080fd5b50602d54610386906301000000900460ff1681565b3480156105e657600080fd5b506104476105f53660046131a9565b611125565b34801561060657600080fd5b506008546103e6906001600160a01b031681565b34801561062657600080fd5b50610447610635366004613272565b61124a565b34801561064657600080fd5b506104476106553660046130c9565b611331565b34801561066657600080fd5b5061044761137f565b34801561067b57600080fd5b5061044761068a3660046130c9565b6113b8565b34801561069b57600080fd5b506103866106aa366004613272565b611428565b3480156106bb57600080fd5b50610447611679565b3480156106d057600080fd5b506104196106df3660046130c9565b6116b8565b3480156106f057600080fd5b50610447611717565b34801561070557600080fd5b5061044761178b565b34801561071a57600080fd5b506104476117c6565b34801561072f57600080fd5b506000546001600160a01b03166103e6565b34801561074d57600080fd5b50602d5461038690640100000000900460ff1681565b34801561076f57600080fd5b5061038661077e36600461317d565b6117ff565b34801561078f57600080fd5b5061038661079e36600461317d565b61184e565b3480156107af57600080fd5b5061044761185b565b3480156107c457600080fd5b50610419602b5481565b3480156107da57600080fd5b50610447611891565b3480156107ef57600080fd5b506104476107fe3660046130c9565b611973565b34801561080f57600080fd5b5060225460235460245460005b60408051948552602085019390935291830152606082015260800161035d565b34801561084857600080fd5b50610419610857366004613103565b6001600160a01b039182166000908152600f6020908152604080832093909416825291909152205490565b34801561088e57600080fd5b506104476119be565b3480156108a357600080fd5b506104476108b23660046130c9565b611a40565b3480156108c357600080fd5b506104476108d2366004613321565b611a8b565b3480156108e357600080fd5b50602654602754602854600061081c565b34801561090057600080fd5b5061041960035481565b34801561091657600080fd5b506103866109253660046130c9565b60136020526000908152604090205460ff1681565b34801561094657600080fd5b50610447611ac9565b34801561095b57600080fd5b5061044761096a3660046130c9565b611b00565b34801561097b57600080fd5b5061044761098a366004613321565b611bef565b34801561099b57600080fd5b50602d546103869060ff1681565b3480156109b557600080fd5b50610419602c5481565b60006109cc338484611c2d565b5060015b92915050565b6000546001600160a01b03163314610a095760405162461bcd60e51b8152600401610a00906133a8565b60405180910390fd5b6001600160a01b03166000908152601260205260409020805460ff19166001179055565b6000610a3a848484611d3a565b610a8c8433610a8785604051806060016040528060288152602001613596602891396001600160a01b038a166000908152600f60209081526040808320338452909152902054919061231d565b611c2d565b5060019392505050565b6000546001600160a01b03163314610ac05760405162461bcd60e51b8152600401610a00906133a8565b6001600160a01b03811660009081526013602052604090205460ff1615610ae657600080fd5b6001600160a01b03166000908152601360205260409020805460ff19166001179055565b6000546001600160a01b03163314610b345760405162461bcd60e51b8152600401610a00906133a8565b600880546001600160a01b039092166001600160a01b0319909216821790556000908152601160205260409020805460ff19166001179055565b6000600154821115610bc25760405162461bcd60e51b815260206004820152601e60248201527f416d74206d757374206265206c657373207468616e20746f74207265666c00006044820152606401610a00565b6000610bcc612349565b9050610bd8838261236c565b9392505050565b6000546001600160a01b03163314610c095760405162461bcd60e51b8152600401610a00906133a8565b6001600160a01b03811660009081526014602052604090205460ff16610c2e57600080fd5b6001600160a01b03166000908152601460205260409020805460ff19169055565b336000818152600f602090815260408083206001600160a01b038716845290915281205490916109cc918590610a879086612378565b6000546001600160a01b03163314610caf5760405162461bcd60e51b8152600401610a00906133a8565b6000601581905560178190556016819055606483610ccc306116b8565b610cd691906134ed565b610ce091906134cb565b905060008111610d2b5760405162461bcd60e51b81526020600482015260166024820152754d757374206861766520546f6b656e73206f6e20434160501b6044820152606401610a00565b610d36308383611d3a565b505050565b600080546001600160a01b03163314610d665760405162461bcd60e51b8152600401610a00906133a8565b602d54640100000000900460ff1615610db85760405162461bcd60e51b815260206004820152601460248201527354726164657320616c7265616479204c6976652160601b6044820152606401610a00565b602d805464ffff00ffff191664010100010117905543602b55610dde42620546006134b3565b602c55600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155600081905260126020527f3c6737805ae477fd0cfdda13dc5f99b32fcbfecb81e47f9e11e1b03813c08ec2805460ff19166001179055610e573082680a18f07d736b90be55601d1b611c2d565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610e9057600080fd5b505afa158015610ea4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec891906130e6565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f1057600080fd5b505afa158015610f24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4891906130e6565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610f9057600080fd5b505af1158015610fa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc891906130e6565b600b80546001600160a01b0319166001600160a01b039290921691821790556000908152601260205260409020805460ff191660011790554761105f5760405162461bcd60e51b815260206004820152602960248201527f4d757374206861766520455448206f6e20636f6e747261637420746f204f70656044820152686e204d61726b65742160b81b6064820152608401610a00565b61107161106b306116b8565b47612384565b600954611086906001600160a01b0316610b34565b600191505090565b6000680a18f07d736b90be55601d1b8311156110ec5760405162461bcd60e51b815260206004820152601c60248201527f416d74206d757374206265206c657373207468616e20737570706c79000000006044820152606401610a00565b8161110b5760006110fc84612447565b509395506109d0945050505050565b600061111684612447565b509295506109d0945050505050565b6000546001600160a01b0316331461114f5760405162461bcd60e51b8152600401610a00906133a8565b600a8251106111bf5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203130302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610a00565b60005b8251811015610d365760008382815181106111df576111df613554565b60200260200101519050600060648484815181106111ff576111ff613554565b6020026020010151680a18f07d736b90be55601d1b61121e91906134ed565b61122891906134cb565b9050611235338383611d3a565b5050808061124290613523565b9150506111c2565b6000546001600160a01b031633146112745760405162461bcd60e51b8152600401610a00906133a8565b606461128c82680a18f07d736b90be55601d1b6134ed565b61129691906134cb565b60039081556064906112b590680a18f07d736b90be55601d1b906134ed565b6112bf91906134cb565b600354111561132e5760405162461bcd60e51b815260206004820152603560248201527f43616e6e6f7420736574206d61782077616c6c657420746f206d6f7265207468604482015274656e203325206f6620746f74616c20737570706c7960581b6064820152608401610a00565b50565b6000546001600160a01b0316331461135b5760405162461bcd60e51b8152600401610a00906133a8565b6001600160a01b03166000908152601160205260409020805460ff19166001179055565b6000546001600160a01b031633146113a95760405162461bcd60e51b8152600401610a00906133a8565b602d805463ff00000019169055565b6000546001600160a01b031633146113e25760405162461bcd60e51b8152600401610a00906133a8565b6001600160a01b03811660009081526013602052604090205460ff1661140757600080fd5b6001600160a01b03166000908152601360205260409020805460ff19169055565b600080546001600160a01b031633146114535760405162461bcd60e51b8152600401610a00906133a8565b600a8211156114b75760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608401610a00565b600b546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a082319060240160206040518083038186803b1580156114fd57600080fd5b505afa158015611511573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611535919061328b565b90506000606461154585846134ed565b61154f91906134cb565b9050801561157457600b54600954611574916001600160a01b03908116911683611d3a565b600954611589906001600160a01b03166116b8565b60185560646115a5680a18f07d736b90be55601d1b60326134ed565b6115af91906134cb565b601854111561160c5760405162461bcd60e51b8152602060048201526024808201527f43616e206e6f74206275726e206d6f7265207468656e20353025206f6620737560448201526370706c7960e01b6064820152608401610a00565b600b546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b15801561165657600080fd5b505af115801561166a573d6000803e3d6000fd5b50600198975050505050505050565b6000546001600160a01b031633146116a35760405162461bcd60e51b8152600401610a00906133a8565b602d805463ff00000019166301000000179055565b6001600160a01b03811660009081526010602052604081205460ff16156116f557506001600160a01b03166000908152600e602052604090205490565b6001600160a01b0382166000908152600d60205260409020546109d090610b6e565b6000546001600160a01b031633146117415760405162461bcd60e51b8152600401610a00906133a8565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146117b55760405162461bcd60e51b8152600401610a00906133a8565b602d805461ff001916610100179055565b6000546001600160a01b031633146117f05760405162461bcd60e51b8152600401610a00906133a8565b602d805460ff19166001179055565b60006109cc3384610a87856040518060600160405280602581526020016135be60259139336000908152600f602090815260408083206001600160a01b038d168452909152902054919061231d565b60006109cc338484611d3a565b6000546001600160a01b031633146118855760405162461bcd60e51b8152600401610a00906133a8565b602d805460ff19169055565b6000546001600160a01b031633146118bb5760405162461bcd60e51b8152600401610a00906133a8565b60006118c6306116b8565b90506127106118e2680a18f07d736b90be55601d1b60016134ed565b6118ec91906134cb565b81101561196b5760405162461bcd60e51b815260206004820152604160248201527f43616e206f6e6c792073776170206261636b206966206d6f7265207468616e2060448201527f302e303125206f6620746f6b656e7320737475636b206f6e20636f6e747261636064820152601d60fa1b608482015260a401610a00565b61132e612496565b6000546001600160a01b0316331461199d5760405162461bcd60e51b8152600401610a00906133a8565b6001600160a01b03166000908152601260205260409020805460ff19169055565b6000546001600160a01b031633146119e85760405162461bcd60e51b8152600401610a00906133a8565b6007546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611a35576040519150601f19603f3d011682016040523d82523d6000602084013e611a3a565b606091505b50505050565b6000546001600160a01b03163314611a6a5760405162461bcd60e51b8152600401610a00906133a8565b6001600160a01b03166000908152601160205260409020805460ff19169055565b6000546001600160a01b03163314611ab55760405162461bcd60e51b8152600401610a00906133a8565b602293909355602391909155602455602555565b6000546001600160a01b03163314611af35760405162461bcd60e51b8152600401610a00906133a8565b602d805461ff0019169055565b6000546001600160a01b03163314611b2a5760405162461bcd60e51b8152600401610a00906133a8565b6001600160a01b038116611b945760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b6064820152608401610a00565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611c195760405162461bcd60e51b8152600401610a00906133a8565b602693909355602791909155602855602955565b6001600160a01b038316611c835760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f20616464726573736044820152606401610a00565b6001600160a01b038216611cd95760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f206164647265737300006044820152606401610a00565b6001600160a01b038381166000818152600f602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d9e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a00565b6001600160a01b038216611e005760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a00565b60008111611e625760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a00565b6001600160a01b03831660009081526013602052604090205460ff1615611e8857600080fd5b602d54640100000000900460ff16611f1c576001600160a01b03831660009081526011602052604090205460ff1680611ed957506001600160a01b03821660009081526011602052604090205460ff165b611f1c5760405162461bcd60e51b815260206004820152601460248201527354726164696e67204973204e6f74204c6976652160601b6044820152606401610a00565b602d5460ff168015611f4757506001600160a01b03821660009081526012602052604090205460ff16155b15611fc25760035481611f59846116b8565b611f6391906134b3565b1115611fc25760405162461bcd60e51b815260206004820152602860248201527f4d617820616d6f756e74206f6620746f6b656e7320666f722077616c6c657420604482015267726561636865642160c01b6064820152608401610a00565b602d54610100900460ff16156120d0576000546001600160a01b03848116911614801590611ffe57506000546001600160a01b03838116911614155b801561201257506001600160a01b03821615155b801561202c57506009546001600160a01b03838116911614155b80156120415750602d5462010000900460ff16155b156120d0576000546001600160a01b038481169116148015906120725750600b546001600160a01b03838116911614155b156120d05760005b60038110156120ce5780602b5461209191906134b3565b4314156120bc576001600160a01b0383166000908152601460205260409020805460ff191660011790555b806120c681613523565b91505061207a565b505b60006120f56017546120ef60155460165461237890919063ffffffff16565b90612378565b90506000612102306116b8565b600454602d549192508210159062010000900460ff1615801561212e5750602d546301000000900460ff165b801561214f5750600b5460009061214d906001600160a01b03166116b8565b115b801561215b5750600083115b801561218057506001600160a01b03851660009081526011602052604090205460ff16155b80156121a557506001600160a01b03861660009081526011602052604090205460ff16155b80156121be5750600b546001600160a01b038681169116145b80156121c75750805b156121d4576121d4612496565b6001600160a01b03861660009081526011602052604090205460019060ff168061221657506001600160a01b03861660009081526011602052604090205460ff165b1561222357506000612308565b600b546001600160a01b038881169116141561225e576122416126b7565b602254601955602354601b55602554601f55602454601d55612308565b600b546001600160a01b03878116911614156122cd5761227c6126b7565b602654601955602754601b55602954601f55602854601d556001600160a01b03871660009081526014602052604090205460ff1680156122bd575042602c54115b156122c857605f6019555b612308565b6001600160a01b03871660009081526014602052604090205460ff1615806122f7575042602c5411155b61230057600080fd5b6123086126b7565b61231487878784612712565b50505050505050565b600081848411156123415760405162461bcd60e51b8152600401610a009190613353565b505050900390565b6000806000612356612895565b9092509050612365828261236c565b9250505090565b6000610bd882846134cb565b6000610bd882846134b3565b600a5461239c9030906001600160a01b031684611c2d565b600a5460085460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b15801561240757600080fd5b505af115801561241b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061244091906132f3565b5050505050565b600080600080600080600080600061245e8a612a3d565b925092509250600080600061247c8d8686612477612349565b612a79565b919f909e50909c50959a5093985091965092945050505050565b602d805462ff000019166201000017905560006124b2306116b8565b905060006016546017546015546124c991906134b3565b6124d391906134b3565b905060006124ed600260165461236c90919063ffffffff16565b905060006124fb8483612ac9565b90504761250782612ad5565b60006125134783612ac9565b905060006125368661253060155485612c3e90919063ffffffff16565b9061236c565b905060006125538761253060175486612c3e90919063ffffffff16565b9050600061256b826125658686612ac9565b90612ac9565b600060158190556017819055601681905560055460405192935090916001600160a01b039091169085908381818185875af1925050503d80600081146125cd576040519150601f19603f3d011682016040523d82523d6000602084013e6125d2565b606091505b50506006546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114612622576040519150601f19603f3d011682016040523d82523d6000602084013e612627565b606091505b5050809150506126378883612384565b6706f05b59d3b2000047111561269f576007546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612694576040519150601f19603f3d011682016040523d82523d6000602084013e612699565b606091505b50909150505b5050602d805462ff0000191690555050505050505050565b601d541580156126c75750601954155b80156126d35750601b54155b80156126df5750601f54155b156126e657565b601d8054601e5560198054601a55601b8054601c55601f80546020556000938490559183905582905555565b8061271f5761271f6126b7565b6001600160a01b03841660009081526010602052604090205460ff16801561276057506001600160a01b03831660009081526010602052604090205460ff16155b1561277557612770848484612c4a565b612873565b6001600160a01b03841660009081526010602052604090205460ff161580156127b657506001600160a01b03831660009081526010602052604090205460ff165b156127c657612770848484612d70565b6001600160a01b03841660009081526010602052604090205460ff1615801561280857506001600160a01b03831660009081526010602052604090205460ff16155b1561281857612770848484612e19565b6001600160a01b03841660009081526010602052604090205460ff16801561285857506001600160a01b03831660009081526010602052604090205460ff165b1561286857612770848484612e5d565b612873848484612e19565b80611a3a57611a3a601a54601955601c54601b55602054601f55601e54601d55565b6001546000908190680a18f07d736b90be55601d1b825b600c548110156129fa5782600d6000600c84815481106128ce576128ce613554565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612939575081600e6000600c848154811061291257612912613554565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561295857505060015493680a18f07d736b90be55601d1b9350915050565b61299e600d6000600c848154811061297257612972613554565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612ac9565b92506129e6600e6000600c84815481106129ba576129ba613554565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612ac9565b9150806129f281613523565b9150506128ac565b50600154612a1490680a18f07d736b90be55601d1b61236c565b821015612a3457505060015492680a18f07d736b90be55601d1b92509050565b90939092509050565b600080600080612a4c85612ed0565b90506000612a5986612eec565b90506000612a6b826125658986612ac9565b979296509094509092505050565b6000808080612a888886612c3e565b90506000612a968887612c3e565b90506000612aa48888612c3e565b90506000612ab6826125658686612ac9565b939b939a50919850919650505050505050565b6000610bd8828461350c565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612b0a57612b0a613554565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612b5e57600080fd5b505afa158015612b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9691906130e6565b81600181518110612ba957612ba9613554565b6001600160a01b039283166020918202929092010152600a54612bcf9130911684611c2d565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac94790612c089085906000908690309042906004016133ed565b600060405180830381600087803b158015612c2257600080fd5b505af1158015612c36573d6000803e3d6000fd5b505050505050565b6000610bd882846134ed565b600080600080600080612c5c87612447565b6001600160a01b038f166000908152600e6020526040902054959b50939950919750955093509150612c8e9088612ac9565b6001600160a01b038a166000908152600e6020908152604080832093909355600d90522054612cbd9087612ac9565b6001600160a01b03808b166000908152600d602052604080822093909355908a1681522054612cec9086612378565b6001600160a01b0389166000908152600d6020526040902055612d0e81612f1a565b612d188483613033565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612d5d91815260200190565b60405180910390a3505050505050505050565b600080600080600080612d8287612447565b6001600160a01b038f166000908152600d6020526040902054959b50939950919750955093509150612db49087612ac9565b6001600160a01b03808b166000908152600d6020908152604080832094909455918b168152600e9091522054612dea9084612378565b6001600160a01b0389166000908152600e6020908152604080832093909355600d90522054612cec9086612378565b600080600080600080612e2b87612447565b6001600160a01b038f166000908152600d6020526040902054959b50939950919750955093509150612cbd9087612ac9565b600080600080600080612e6f87612447565b6001600160a01b038f166000908152600e6020526040902054959b50939950919750955093509150612ea19088612ac9565b6001600160a01b038a166000908152600e6020908152604080832093909355600d90522054612db49087612ac9565b60006109d06064612530601f5485612c3e90919063ffffffff16565b60006109d06064612530601d54601b54601954612f0991906134b3565b612f1391906134b3565b8590612c3e565b602154601954612f2a90836134ed565b612f3491906134cb565b60156000828254612f4591906134b3565b9091555050602154601b54612f5a90836134ed565b612f6491906134cb565b60176000828254612f7591906134b3565b9091555050602154601d54612f8a90836134ed565b612f9491906134cb565b60166000828254612fa591906134b3565b9091555060009050612fb5612349565b90506000612fc38383612c3e565b306000908152600d6020526040902054909150612fe09082612378565b306000908152600d602090815260408083209390935560109052205460ff1615610d3657306000908152600e602052604090205461301e9084612378565b306000908152600e6020526040902055505050565b6001546130409083612ac9565b6001556002546130509082612378565b6002555050565b600082601f83011261306857600080fd5b8135602061307d6130788361348f565b61345e565b80838252828201915082860187848660051b890101111561309d57600080fd5b60005b858110156130bc578135845292840192908401906001016130a0565b5090979650505050505050565b6000602082840312156130db57600080fd5b8135610bd881613580565b6000602082840312156130f857600080fd5b8151610bd881613580565b6000806040838503121561311657600080fd5b823561312181613580565b9150602083013561313181613580565b809150509250929050565b60008060006060848603121561315157600080fd5b833561315c81613580565b9250602084013561316c81613580565b929592945050506040919091013590565b6000806040838503121561319057600080fd5b823561319b81613580565b946020939093013593505050565b600080604083850312156131bc57600080fd5b823567ffffffffffffffff808211156131d457600080fd5b818501915085601f8301126131e857600080fd5b813560206131f86130788361348f565b8083825282820191508286018a848660051b890101111561321857600080fd5b600096505b8487101561324457803561323081613580565b83526001969096019591830191830161321d565b509650508601359250508082111561325b57600080fd5b5061326885828601613057565b9150509250929050565b60006020828403121561328457600080fd5b5035919050565b60006020828403121561329d57600080fd5b5051919050565b600080604083850312156132b757600080fd5b82359150602083013561313181613580565b600080604083850312156132dc57600080fd5b823591506020830135801515811461313157600080fd5b60008060006060848603121561330857600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561333757600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b8181101561338057858101830151858201604001528201613364565b81811115613392576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561343d5784516001600160a01b031683529383019391830191600101613418565b50506001600160a01b03969096166060850152505050608001529392505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156134875761348761356a565b604052919050565b600067ffffffffffffffff8211156134a9576134a961356a565b5060051b60200190565b600082198211156134c6576134c661353e565b500190565b6000826134e857634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156135075761350761353e565b500290565b60008282101561351e5761351e61353e565b500390565b60006000198214156135375761353761353e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461132e57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ced5982964f50a0d9802adc61992190c7097b4965da89d1f8974a93f12a40e1164736f6c63430008070033

Deployed Bytecode Sourcemap

15009:26996:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20349:97;;;;;;;;;;-1:-1:-1;20428:10:0;;;;;;;;;;;-1:-1:-1;;;20428:10:0;;;;20349:97;;;;20428:10;20349:97;:::i;:::-;;;;;;;;21285:161;;;;;;;;;;-1:-1:-1;21285:161:0;;;;;:::i;:::-;;:::i;:::-;;;7082:14:1;;7075:22;7057:41;;7045:2;7030:18;21285:161:0;6917:187:1;16385:47:0;;;;;;;;;;-1:-1:-1;16385:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15886:41;;;;;;;;;;-1:-1:-1;15886:41:0;;;;-1:-1:-1;;;;;15886:41:0;;;;;;-1:-1:-1;;;;;5720:32:1;;;5702:51;;5690:2;5675:18;15886:41:0;5556:203:1;20661:95:0;;;;;;;;;;-1:-1:-1;;;;20661:95:0;;;15568:25:1;;;15556:2;15541:18;20661:95:0;15422:177:1;37450:117:0;;;;;;;;;;-1:-1:-1;37450:117:0;;;;;:::i;:::-;;:::i;:::-;;21452:329;;;;;;;;;;-1:-1:-1;21452:329:0;;;;;:::i;:::-;;:::i;37695:133::-;;;;;;;;;;-1:-1:-1;37695:133:0;;;;;:::i;:::-;;:::i;37032:181::-;;;;;;;;;;-1:-1:-1;37032:181:0;;;;;:::i;:::-;;:::i;22786:241::-;;;;;;;;;;-1:-1:-1;22786:241:0;;;;;:::i;:::-;;:::i;20559:96::-;;;;;;;;;;-1:-1:-1;20559:96:0;;15239:2;17127:36:1;;17115:2;17100:18;20559:96:0;16985:184:1;37973:153:0;;;;;;;;;;-1:-1:-1;37973:153:0;;;;;:::i;:::-;;:::i;21787:218::-;;;;;;;;;;-1:-1:-1;21787:218:0;;;;;:::i;:::-;;:::i;39341:360::-;;;;;;;;;;-1:-1:-1;39341:360:0;;;;;:::i;:::-;;:::i;26001:1000::-;;;;;;;;;;;;;:::i;22336:444::-;;;;;;;;;;-1:-1:-1;22336:444:0;;;;;:::i;:::-;;:::i;15934:28::-;;;;;;;;;;-1:-1:-1;15934:28:0;;;;-1:-1:-1;;;;;15934:28:0;;;17592:34;;;;;;;;;;-1:-1:-1;17592:34:0;;;;;;;;;;;17661:41;;;;;;;;;;-1:-1:-1;17661:41:0;;;;;;;;;;;41593:409;;;;;;;;;;-1:-1:-1;41593:409:0;;;;;:::i;:::-;;:::i;15728:39::-;;;;;;;;;;-1:-1:-1;15728:39:0;;;;-1:-1:-1;;;;;15728:39:0;;;38683:221;;;;;;;;;;-1:-1:-1;38683:221:0;;;;;:::i;:::-;;:::i;37219:110::-;;;;;;;;;;-1:-1:-1;37219:110:0;;;;;:::i;:::-;;:::i;38408:93::-;;;;;;;;;;;;;:::i;37831:136::-;;;;;;;;;;-1:-1:-1;37831:136:0;;;;;:::i;:::-;;:::i;40926:661::-;;;;;;;;;;-1:-1:-1;40926:661:0;;;;;:::i;:::-;;:::i;38311:91::-;;;;;;;;;;;;;:::i;20762:195::-;;;;;;;;;;-1:-1:-1;20762:195:0;;;;;:::i;:::-;;:::i;13793:148::-;;;;;;;;;;;;;:::i;38132:83::-;;;;;;;;;;;;;:::i;38507:81::-;;;;;;;;;;;;;:::i;13569:87::-;;;;;;;;;;-1:-1:-1;13615:7:0;13642:6;-1:-1:-1;;;;;13642:6:0;13569:87;;17709:24;;;;;;;;;;-1:-1:-1;17709:24:0;;;;;;;;;;;22011:319;;;;;;;;;;-1:-1:-1;22011:319:0;;;;;:::i;:::-;;:::i;20963:167::-;;;;;;;;;;-1:-1:-1;20963:167:0;;;;;:::i;:::-;;:::i;38594:83::-;;;;;;;;;;;;;:::i;17472:35::-;;;;;;;;;;;;;;;;38910:266;;;;;;;;;;;;;:::i;37573:116::-;;;;;;;;;;-1:-1:-1;37573:116:0;;;;;:::i;:::-;;:::i;40438:233::-;;;;;;;;;;-1:-1:-1;40595:15:0;;40611:20;;40632:15;;40482:20;40438:233;;;;16820:25:1;;;16876:2;16861:18;;16854:34;;;;16904:18;;;16897:34;16962:2;16947:18;;16940:34;16807:3;16792:19;40438:233:0;16589:391:1;21136:143:0;;;;;;;;;;-1:-1:-1;21136:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;21244:18:0;;;21217:7;21244:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;21136:143;39182:153;;;;;;;;;;;;;:::i;37335:109::-;;;;;;;;;;-1:-1:-1;37335:109:0;;;;;:::i;:::-;;:::i;39707:353::-;;;;;;;;;;-1:-1:-1;39707:353:0;;;;;:::i;:::-;;:::i;40677:243::-;;;;;;;;;;-1:-1:-1;40840:16:0;;40857:21;;40879:16;;40722:21;40677:243;;15446:24;;;;;;;;;;;;;;;;16333:45;;;;;;;;;;-1:-1:-1;16333:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;38221:84;;;;;;;;;;;;;:::i;13947:249::-;;;;;;;;;;-1:-1:-1;13947:249:0;;;;;:::i;:::-;;:::i;40066:366::-;;;;;;;;;;-1:-1:-1;40066:366:0;;;;;:::i;:::-;;:::i;17556:29::-;;;;;;;;;;-1:-1:-1;17556:29:0;;;;;;;;17514:35;;;;;;;;;;;;;;;;21285:161;21360:4;21377:39;13228:10;21400:7;21409:6;21377:8;:39::i;:::-;-1:-1:-1;21434:4:0;21285:161;;;;;:::o;37450:117::-;13615:7;13642:6;-1:-1:-1;;;;;13642:6:0;13228:10;13702:23;13694:73;;;;-1:-1:-1;;;13694:73:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;37527:25:0::1;;::::0;;;:16:::1;:25;::::0;;;;:32;;-1:-1:-1;;37527:32:0::1;37555:4;37527:32;::::0;;37450:117::o;21452:329::-;21548:4;21565:36;21575:6;21583:9;21594:6;21565:9;:36::i;:::-;21612:139;21621:6;13228:10;21651:89;21689:6;21651:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21651:19:0;;;;;;:11;:19;;;;;;;;13228:10;21651:33;;;;;;;;;;:37;:89::i;:::-;21612:8;:139::i;:::-;-1:-1:-1;21769:4:0;21452:329;;;;;:::o;37695:133::-;13615:7;13642:6;-1:-1:-1;;;;;13642:6:0;13228:10;13702:23;13694:73;;;;-1:-1:-1;;;13694:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37763:19:0;::::1;;::::0;;;:12:::1;:19;::::0;;;;;::::1;;37762:20;37754:29;;;::::0;::::1;;-1:-1:-1::0;;;;;37794:19:0::1;;::::0;;;:12:::1;:19;::::0;;;;:26;;-1:-1:-1;;37794:26:0::1;37816:4;37794:26;::::0;;37695:133::o;37032:181::-;13615:7;13642:6;-1:-1:-1;;;;;13642:6:0;13228:10;13702:23;13694:73;;;;-1:-1:-1;;;13694:73:0;;;;;;;:::i;:::-;37116:16:::1;:38:::0;;-1:-1:-1;;;;;37116:38:0;;::::1;-1:-1:-1::0;;;;;;37116:38:0;;::::1;::::0;::::1;::::0;;:16:::1;37165:33:::0;;;:15:::1;:33;::::0;;;;:40;;-1:-1:-1;;37165:40:0::1;37116:38:::0;37165:40:::1;::::0;;37032:181::o;22786:241::-;22853:7;22892;;22881;:18;;22873:61;;;;-1:-1:-1;;;22873:61:0;;10931:2:1;22873:61:0;;;10913:21:1;10970:2;10950:18;;;10943:30;11009:32;10989:18;;;10982:60;11059:18;;22873:61:0;10729:354:1;22873:61:0;22945:19;22967:10;:8;:10::i;:::-;22945:32;-1:-1:-1;22995:24:0;:7;22945:32;22995:11;:24::i;:::-;22988:31;22786:241;-1:-1:-1;;;22786:241:0:o;37973:153::-;13615:7;13642:6;-1:-1:-1;;;;;13642:6:0;13228:10;13702:23;13694:73;;;;-1:-1:-1;;;13694:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38050:24:0;::::1;;::::0;;;:15:::1;:24;::::0;;;;;::::1;;38042:33;;;::::0;::::1;;-1:-1:-1::0;;;;;38086:24:0::1;38113:5;38086:24:::0;;;:15:::1;:24;::::0;;;;:32;;-1:-1:-1;;38086:32:0::1;::::0;;37973:153::o;21787:218::-;13228:10;21875:4;21924:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;21924:34:0;;;;;;;;;;21875:4;;21892:83;;21915:7;;21924:50;;21963:10;21924:38;:50::i;39341:360::-;13615:7;13642:6;-1:-1:-1;;;;;13642:6:0;13228:10;13702:23;13694:73;;;;-1:-1:-1;;;13694:73:0;;;;;;;:::i;:::-;39447:1:::1;39429:15;:19:::0;;;39459:20:::1;:24:::0;;;39494:15:::1;:19:::0;;;39579:5:::1;39568:8:::0;39541:24:::1;39559:4;39541:9;:24::i;:::-;:35;;;;:::i;:::-;:43;;;;:::i;:::-;39524:60;;39612:1;39603:6;:10;39595:45;;;::::0;-1:-1:-1;;;39595:45:0;;12513:2:1;39595:45:0::1;::::0;::::1;12495:21:1::0;12552:2;12532:18;;;12525:30;-1:-1:-1;;;12571:18:1;;;12564:52;12633:18;;39595:45:0::1;12311:346:1::0;39595:45:0::1;39651:42;39669:4;39676:8;39686:6;39651:9;:42::i;:::-;39418:283;39341:360:::0;;:::o;26001:1000::-;26047:4;13642:6;;-1:-1:-1;;;;;13642:6:0;13228:10;13702:23;13694:73;;;;-1:-1:-1;;;13694:73:0;;;;;;;:::i;:::-;26072:4:::1;::::0;;;::::1;;;26071:5;26063:38;;;::::0;-1:-1:-1;;;26063:38:0;;12864:2:1;26063:38:0::1;::::0;::::1;12846:21:1::0;12903:2;12883:18;;;12876:30;-1:-1:-1;;;12922:18:1;;;12915:50;12982:18;;26063:38:0::1;12662:344:1::0;26063:38:0::1;26112:9;:16:::0;;-1:-1:-1;;26210:11:0;;;;;26251:12:::1;26232:16;:31:::0;26297:26:::1;:15;26315:8;26297:26;:::i;:::-;26274:20;:49:::0;26441:15:::1;:30:::0;;-1:-1:-1;;;;;;26441:30:0::1;26387:42;26441:30:::0;;::::1;::::0;;;26334:31:::1;26482:42:::0;;;:16:::1;:42;::::0;;:49;;-1:-1:-1;;26482:49:0::1;26441:30:::0;26482:49:::1;::::0;;26542:58:::1;26559:4;26387:42:::0;-1:-1:-1;;;26542:8:0::1;:58::i;:::-;26645:12;-1:-1:-1::0;;;;;26645:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;26627:52:0::1;;26688:4;26695:12;-1:-1:-1::0;;;;;26695:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26627:88;::::0;-1:-1:-1;;;;;;26627:88:0::1;::::0;;;;;;-1:-1:-1;;;;;6218:15:1;;;26627:88:0::1;::::0;::::1;6200:34:1::0;6270:15;;6250:18;;;6243:43;6135:18;;26627:88:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26611:13;:104:::0;;-1:-1:-1;;;;;;26611:104:0::1;-1:-1:-1::0;;;;;26611:104:0;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;26726:40:0;;;:16:::1;:40;::::0;;;;:47;;-1:-1:-1;;26726:47:0::1;-1:-1:-1::0;26726:47:0::1;::::0;;26792:21:::1;26784:79;;;::::0;-1:-1:-1;;;26784:79:0;;10099:2:1;26784:79:0::1;::::0;::::1;10081:21:1::0;10138:2;10118:18;;;10111:30;10177:34;10157:18;;;10150:62;-1:-1:-1;;;10228:18:1;;;10221:39;10277:19;;26784:79:0::1;9897:405:1::0;26784:79:0::1;26874:61;26887:24;26905:4;26887:9;:24::i;:::-;26913:21;26874:12;:61::i;:::-;26966:4;::::0;26946:25:::1;::::0;-1:-1:-1;;;;;26966:4:0::1;26946:19;:25::i;:::-;26989:4;26982:11;;;26001:1000:::0;:::o;22336:444::-;22427:7;-1:-1:-1;;;22455:7:0;:18;;22447:59;;;;-1:-1:-1;;;22447:59:0;;8910:2:1;22447:59:0;;;8892:21:1;8949:2;8929:18;;;8922:30;8988;8968:18;;;8961:58;9036:18;;22447:59:0;8708:352:1;22447:59:0;22522:17;22517:256;;22557:15;22586:19;22597:7;22586:10;:19::i;:::-;-1:-1:-1;22556:49:0;;-1:-1:-1;22620:14:0;;-1:-1:-1;;;;;22620:14:0;22517:256;22670:23;22705:19;22716:7;22705:10;:19::i;:::-;-1:-1:-1;22667:57:0;;-1:-1:-1;22739:22:0;;-1:-1:-1;;;;;22739:22:0;41593:409;13615:7;13642:6;-1:-1:-1;;;;;13642:6:0;13228:10;13702:23;13694:73;;;;-1:-1:-1;;;13694:73:0;;;;;;;:::i;:::-;41716:2:::1;41699:7;:14;:19;41691:86;;;::::0;-1:-1:-1;;;41691:86:0;;9676:2:1;41691:86:0::1;::::0;::::1;9658:21:1::0;9715:2;9695:18;;;9688:30;9754:34;9734:18;;;9727:62;-1:-1:-1;;;9805:18:1;;;9798:52;9867:19;;41691:86:0::1;9474:418:1::0;41691:86:0::1;41792:9;41788:207;41811:7;:14;41807:1;:18;41788:207;;;41846:14;41863:7;41871:1;41863:10;;;;;;;;:::i;:::-;;;;;;;41846:27;;41888:14;41928:3;41915:7;41923:1;41915:10;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;41905:20:0::1;;;;:::i;:::-;:26;;;;:::i;:::-;41888:43;;41946:37;41956:10;41968:6;41976;41946:9;:37::i;:::-;41831:164;;41827:3;;;;;:::i;:::-;;;;41788:207;;38683:221:::0;13615:7;13642:6;-1:-1:-1;;;;;13642:6:0;13228:10;13702:23;13694:73;;;;-1:-1:-1;;;13694:73:0;;;;;;;:::i;:::-;38786:3:::1;38765:18;38775:8:::0;-1:-1:-1;;;38765:18:0::1;:::i;:::-;:24;;;;:::i;:::-;38753:9;:36:::0;;;38835:3:::1;::::0;38821:11:::1;::::0;-1:-1:-1;;;15335:13:0;38821:11:::1;:::i;:::-;:17;;;;:::i;:::-;38808:9;;:30;;38800:96;;;::::0;-1:-1:-1;;;38800:96:0;;10509:2:1;38800:96:0::1;::::0;::::1;10491:21:1::0;10548:2;10528:18;;;10521:30;10587:34;10567:18;;;10560:62;-1:-1:-1;;;10638:18:1;;;10631:51;10699:19;;38800:96:0::1;10307:417:1::0;38800:96:0::1;38683:221:::0;:::o;37219:110::-;13615:7;13642:6;-1:-1:-1;;;;;13642:6:0;13228:10;13702:23;13694:73;;;;-1:-1:-1;;;13694:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37290:24:0::1;;::::0;;;:15:::1;:24;::::0;;;;:31;;-1:-1:-1;;37290:31:0::1;37317:4;37290:31;::::0;;37219:110::o;38408:93::-;13615:7;13642:6;-1:-1:-1;;;;;13642:6:0;13228:10;13702:23;13694:73;;;;-1:-1:-1;;;13694:73:0;;;;;;;:::i;:::-;38464:21:::1;:29:::0;;-1:-1:-1;;38464:29:0::1;::::0;;38408:93::o;37831:136::-;13615:7;13642:6;-1:-1:-1;;;;;13642:6:0;13228:10;13702:23;13694:73;;;;-1:-1:-1;;;13694:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37901:19:0;::::1;;::::0;;;:12:::1;:19;::::0;;;;;::::1;;37893:28;;;::::0;::::1;;-1:-1:-1::0;;;;;37932:19:0::1;37954:5;37932:19:::0;;;:12:::1;:19;::::0;;;;:27;;-1:-1:-1;;37932:27:0::1;::::0;;37831:136::o;40926:661::-;40997:4;13642:6;;-1:-1:-1;;;;;13642:6:0;13228:10;13702:23;13694:73;;;;-1:-1:-1;;;13694:73:0;;;;;;;:::i;:::-;41032:2:::1;41021:7;:13;;41013:68;;;::::0;-1:-1:-1;;;41013:68:0;;13972:2:1;41013:68:0::1;::::0;::::1;13954:21:1::0;14011:2;13991:18;;;13984:30;14050:34;14030:18;;;14023:62;-1:-1:-1;;;14101:18:1;;;14094:40;14151:19;;41013:68:0::1;13770:406:1::0;41013:68:0::1;41138:13;::::0;41123:29:::1;::::0;-1:-1:-1;;;41123:29:0;;-1:-1:-1;;;;;41138:13:0;;::::1;41123:29;::::0;::::1;5702:51:1::0;41092:28:0::1;::::0;41123:4:::1;::::0;:14:::1;::::0;5675:18:1;;41123:29:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41092:60:::0;-1:-1:-1;41163:20:0::1;41219:5;41186:30;41209:7:::0;41092:60;41186:30:::1;:::i;:::-;:38;;;;:::i;:::-;41163:61:::0;-1:-1:-1;41239:16:0;;41235:92:::1;;41281:13;::::0;41296:4:::1;::::0;41271:44:::1;::::0;-1:-1:-1;;;;;41281:13:0;;::::1;::::0;41296:4:::1;41302:12:::0;41271:9:::1;:44::i;:::-;41367:4;::::0;41357:15:::1;::::0;-1:-1:-1;;;;;41367:4:0::1;41357:9;:15::i;:::-;41337:17;:35:::0;41427:5:::1;41412:12;-1:-1:-1::0;;;41422:2:0::1;41412:12;:::i;:::-;:20;;;;:::i;:::-;41391:17;;:41;;41383:90;;;::::0;-1:-1:-1;;;41383:90:0;;11702:2:1;41383:90:0::1;::::0;::::1;11684:21:1::0;11741:2;11721:18;;;11714:30;11780:34;11760:18;;;11753:62;-1:-1:-1;;;11831:18:1;;;11824:34;11875:19;;41383:90:0::1;11500:400:1::0;41383:90:0::1;41521:13;::::0;41546:11:::1;::::0;;-1:-1:-1;;;;;;41546:11:0;;;;-1:-1:-1;;;;;41521:13:0;;::::1;::::0;;;41546:9:::1;::::0;:11:::1;::::0;;::::1;::::0;41484:19:::1;::::0;41546:11;;;;;;;41484:19;41521:13;41546:11;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;41575:4:0::1;::::0;40926:661;-1:-1:-1;;;;;;;;40926:661:0:o;38311:91::-;13615:7;13642:6;-1:-1:-1;;;;;13642:6:0;13228:10;13702:23;13694:73;;;;-1:-1:-1;;;13694:73:0;;;;;;;:::i;:::-;38366:21:::1;:28:::0;;-1:-1:-1;;38366:28:0::1;::::0;::::1;::::0;;38311:91::o;20762:195::-;-1:-1:-1;;;;;20852:17:0;;20828:7;20852:17;;;:8;:17;;;;;;;;20848:46;;;-1:-1:-1;;;;;;20878:16:0;;;;;:7;:16;;;;;;;20762:195::o;20848:46::-;-1:-1:-1;;;;;20932:16:0;;;;;;:7;:16;;;;;;20912:37;;:19;:37::i;13793:148::-;13615:7;13642:6;-1:-1:-1;;;;;13642:6:0;13228:10;13702:23;13694:73;;;;-1:-1:-1;;;13694:73:0;;;;;;;:::i;:::-;13900:1:::1;13884:6:::0;;13863:40:::1;::::0;-1:-1:-1;;;;;13884:6:0;;::::1;::::0;13863:40:::1;::::0;13900:1;;13863:40:::1;13931:1;13914:19:::0;;-1:-1:-1;;;;;;13914:19:0::1;::::0;;13793:148::o;38132:83::-;13615:7;13642:6;-1:-1:-1;;;;;13642:6:0;13228:10;13702:23;13694:73;;;;-1:-1:-1;;;13694:73:0;;;;;;;:::i;:::-;38186:14:::1;:21:::0;;-1:-1:-1;;38186:21:0::1;;;::::0;;38132:83::o;38507:81::-;13615:7;13642:6;-1:-1:-1;;;;;13642:6:0;13228:10;13702:23;13694:73;;;;-1:-1:-1;;;13694:73:0;;;;;;;:::i;:::-;38564:9:::1;:16:::0;;-1:-1:-1;;38564:16:0::1;38576:4;38564:16;::::0;;38507:81::o;22011:319::-;22104:4;22121:179;13228:10;22171:7;22193:96;22232:15;22193:96;;;;;;;;;;;;;;;;;13228:10;22193:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;22193:34:0;;;;;;;;;;;;:38;:96::i;20963:167::-;21041:4;21058:42;13228:10;21082:9;21093:6;21058:9;:42::i;38594:83::-;13615:7;13642:6;-1:-1:-1;;;;;13642:6:0;13228:10;13702:23;13694:73;;;;-1:-1:-1;;;13694:73:0;;;;;;;:::i;:::-;38652:9:::1;:17:::0;;-1:-1:-1;;38652:17:0::1;::::0;;38594:83::o;38910:266::-;13615:7;13642:6;-1:-1:-1;;;;;13642:6:0;13228:10;13702:23;13694:73;;;;-1:-1:-1;;;13694:73:0;;;;;;;:::i;:::-;38965:23:::1;38991:24;39009:4;38991:9;:24::i;:::-;38965:50:::0;-1:-1:-1;39067:5:0::1;39053:11;-1:-1:-1::0;;;39063:1:0::1;39053:11;:::i;:::-;:19;;;;:::i;:::-;39034:15;:38;;39026:116;;;::::0;-1:-1:-1;;;39026:116:0;;14789:2:1;39026:116:0::1;::::0;::::1;14771:21:1::0;14828:2;14808:18;;;14801:30;14867:34;14847:18;;;14840:62;14938:34;14918:18;;;14911:62;-1:-1:-1;;;14989:19:1;;;14982:32;15031:19;;39026:116:0::1;14587:469:1::0;39026:116:0::1;39153:15;:13;:15::i;37573:116::-:0;13615:7;13642:6;-1:-1:-1;;;;;13642:6:0;13228:10;13702:23;13694:73;;;;-1:-1:-1;;;13694:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37648:25:0::1;37676:5;37648:25:::0;;;:16:::1;:25;::::0;;;;:33;;-1:-1:-1;;37648:33:0::1;::::0;;37573:116::o;39182:153::-;13615:7;13642:6;-1:-1:-1;;;;;13642:6:0;13228:10;13702:23;13694:73;;;;-1:-1:-1;;;13694:73:0;;;;;;;:::i;:::-;39277:10:::1;::::0;39269:58:::1;::::0;39233:12:::1;::::0;-1:-1:-1;;;;;39277:10:0::1;::::0;39301:21:::1;::::0;39233:12;39269:58;39233:12;39269:58;39301:21;39277:10;39269:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;39182:153:0:o;37335:109::-;13615:7;13642:6;-1:-1:-1;;;;;13642:6:0;13228:10;13702:23;13694:73;;;;-1:-1:-1;;;13694:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37404:24:0::1;37431:5;37404:24:::0;;;:15:::1;:24;::::0;;;;:32;;-1:-1:-1;;37404:32:0::1;::::0;;37335:109::o;39707:353::-;13615:7;13642:6;-1:-1:-1;;;;;13642:6:0;13228:10;13702:23;13694:73;;;;-1:-1:-1;;;13694:73:0;;;;;;;:::i;:::-;39869:15:::1;:34:::0;;;;39914:20:::1;:44:::0;;;;39969:15:::1;:34:::0;40014:17:::1;:38:::0;39707:353::o;38221:84::-;13615:7;13642:6;-1:-1:-1;;;;;13642:6:0;13228:10;13702:23;13694:73;;;;-1:-1:-1;;;13694:73:0;;;;;;;:::i;:::-;38275:14:::1;:22:::0;;-1:-1:-1;;38275:22:0::1;::::0;;38221:84::o;13947:249::-;13615:7;13642:6;-1:-1:-1;;;;;13642:6:0;13228:10;13702:23;13694:73;;;;-1:-1:-1;;;13694:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14036:22:0;::::1;14028:78;;;::::0;-1:-1:-1;;;14028:78:0;;11290:2:1;14028:78:0::1;::::0;::::1;11272:21:1::0;11329:2;11309:18;;;11302:30;11368:34;11348:18;;;11341:62;-1:-1:-1;;;11419:18:1;;;11412:41;11470:19;;14028:78:0::1;11088:407:1::0;14028:78:0::1;14143:6;::::0;;14122:38:::1;::::0;-1:-1:-1;;;;;14122:38:0;;::::1;::::0;14143:6;::::1;::::0;14122:38:::1;::::0;::::1;14171:6;:17:::0;;-1:-1:-1;;;;;;14171:17:0::1;-1:-1:-1::0;;;;;14171:17:0;;;::::1;::::0;;;::::1;::::0;;13947:249::o;40066:366::-;13615:7;13642:6;-1:-1:-1;;;;;13642:6:0;13228:10;13702:23;13694:73;;;;-1:-1:-1;;;13694:73:0;;;;;;;:::i;:::-;40233:16:::1;:36:::0;;;;40280:21:::1;:46:::0;;;;40337:16:::1;:36:::0;40384:18:::1;:40:::0;40066:366::o;27007:325::-;-1:-1:-1;;;;;27098:19:0;;27090:64;;;;-1:-1:-1;;;27090:64:0;;15263:2:1;27090:64:0;;;15245:21:1;;;15282:18;;;15275:30;15341:34;15321:18;;;15314:62;15393:18;;27090:64:0;15061:356:1;27090:64:0;-1:-1:-1;;;;;27173:21:0;;27165:64;;;;-1:-1:-1;;;27165:64:0;;8551:2:1;27165:64:0;;;8533:21:1;8590:2;8570:18;;;8563:30;8629:32;8609:18;;;8602:60;8679:18;;27165:64:0;8349:354:1;27165:64:0;-1:-1:-1;;;;;27240:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;27292:32;;15568:25:1;;;27292:32:0;;15541:18:1;27292:32:0;;;;;;;27007:325;;;:::o;27338:2713::-;-1:-1:-1;;;;;27426:18:0;;27418:68;;;;-1:-1:-1;;;27418:68:0;;14383:2:1;27418:68:0;;;14365:21:1;14422:2;14402:18;;;14395:30;14461:34;14441:18;;;14434:62;-1:-1:-1;;;14512:18:1;;;14505:35;14557:19;;27418:68:0;14181:401:1;27418:68:0;-1:-1:-1;;;;;27505:16:0;;27497:64;;;;-1:-1:-1;;;27497:64:0;;8147:2:1;27497:64:0;;;8129:21:1;8186:2;8166:18;;;8159:30;8225:34;8205:18;;;8198:62;-1:-1:-1;;;8276:18:1;;;8269:33;8319:19;;27497:64:0;7945:399:1;27497:64:0;27589:1;27580:6;:10;27572:64;;;;-1:-1:-1;;;27572:64:0;;13213:2:1;27572:64:0;;;13195:21:1;13252:2;13232:18;;;13225:30;13291:34;13271:18;;;13264:62;-1:-1:-1;;;13342:18:1;;;13335:39;13391:19;;27572:64:0;13011:405:1;27572:64:0;-1:-1:-1;;;;;27656:18:0;;;;;;:12;:18;;;;;;;;27655:19;27647:28;;;;;;27690:4;;;;;;;27686:113;;-1:-1:-1;;;;;27718:21:0;;;;;;:15;:21;;;;;;;;;:44;;-1:-1:-1;;;;;;27743:19:0;;;;;;:15;:19;;;;;;;;27718:44;27710:77;;;;-1:-1:-1;;;27710:77:0;;13623:2:1;27710:77:0;;;13605:21:1;13662:2;13642:18;;;13635:30;-1:-1:-1;;;13681:18:1;;;13674:50;13741:18;;27710:77:0;13421:344:1;27710:77:0;27813:9;;;;:34;;;;-1:-1:-1;;;;;;27827:20:0;;;;;;:16;:20;;;;;;;;27826:21;27813:34;27809:155;;;27898:9;;27888:6;27872:13;27882:2;27872:9;:13::i;:::-;:22;;;;:::i;:::-;:35;;27864:88;;;;-1:-1:-1;;;27864:88:0;;9267:2:1;27864:88:0;;;9249:21:1;9306:2;9286:18;;;9279:30;9345:34;9325:18;;;9318:62;-1:-1:-1;;;9396:18:1;;;9389:38;9444:19;;27864:88:0;9065:404:1;27864:88:0;27977:14;;;;;;;27974:453;;;13615:7;13642:6;-1:-1:-1;;;;;28011:15:0;;;13642:6;;28011:15;;;;:32;;-1:-1:-1;13615:7:0;13642:6;-1:-1:-1;;;;;28030:13:0;;;13642:6;;28030:13;;28011:32;:52;;;;-1:-1:-1;;;;;;28047:16:0;;;;28011:52;:66;;;;-1:-1:-1;28073:4:0;;-1:-1:-1;;;;;28067:10:0;;;28073:4;;28067:10;;28011:66;:87;;;;-1:-1:-1;28082:16:0;;;;;;;28081:17;28011:87;28007:409;;;13615:7;13642:6;-1:-1:-1;;;;;28122:15:0;;;13642:6;;28122:15;;;;:38;;-1:-1:-1;28147:13:0;;-1:-1:-1;;;;;28141:19:0;;;28147:13;;28141:19;;28122:38;28119:282;;;28190:6;28185:197;28206:1;28202;:5;28185:197;;;28275:1;28256:16;;:20;;;;:::i;:::-;28240:12;:36;28237:122;;;-1:-1:-1;;;;;28305:19:0;;;;;;:15;:19;;;;;:26;;-1:-1:-1;;28305:26:0;28327:4;28305:26;;;28237:122;28209:3;;;;:::i;:::-;;;;28185:197;;;;28119:282;28437:25;28465:62;28506:20;;28465:36;28485:15;;28465;;:19;;:36;;;;:::i;:::-;:40;;:62::i;:::-;28437:90;;28538:28;28569:24;28587:4;28569:9;:24::i;:::-;28659:19;;28694:16;;28538:55;;-1:-1:-1;28635:43:0;;;;28694:16;;;;;28693:17;:42;;;;-1:-1:-1;28714:21:0;;;;;;;28693:42;:74;;;;-1:-1:-1;28749:13:0;;28766:1;;28739:24;;-1:-1:-1;;;;;28749:13:0;28739:9;:24::i;:::-;:28;28693:74;:99;;;;;28791:1;28771:17;:21;28693:99;:123;;;;-1:-1:-1;;;;;;28797:19:0;;;;;;:15;:19;;;;;;;;28796:20;28693:123;:149;;;;-1:-1:-1;;;;;;28821:21:0;;;;;;:15;:21;;;;;;;;28820:22;28693:149;:172;;;;-1:-1:-1;28852:13:0;;-1:-1:-1;;;;;28846:19:0;;;28852:13;;28846:19;28693:172;:199;;;;;28869:23;28693:199;28689:251;;;28909:15;:13;:15::i;:::-;-1:-1:-1;;;;;28984:21:0;;28950:12;28984:21;;;:15;:21;;;;;;28965:4;;28984:21;;;:44;;-1:-1:-1;;;;;;29009:19:0;;;;;;:15;:19;;;;;;;;28984:44;28980:1012;;;-1:-1:-1;29055:5:0;28980:1012;;;29105:13;;-1:-1:-1;;;;;29097:21:0;;;29105:13;;29097:21;29093:888;;;29139:14;:12;:14::i;:::-;29187:15;;29172:12;:30;29241:20;;29221:17;:40;29297:17;;29280:14;:34;29348:15;;29333:12;:30;29093:888;;;29409:13;;-1:-1:-1;;;;;29403:19:0;;;29409:13;;29403:19;29399:582;;;29443:14;:12;:14::i;:::-;29491:16;;29476:12;:31;29546:21;;29526:17;:41;29603:18;;29586:14;:35;29655:16;;29640:12;:31;-1:-1:-1;;;;;29693:21:0;;-1:-1:-1;29693:21:0;;;:15;:21;;;;;;;;:63;;;;;29741:15;29718:20;;:38;29693:63;29690:128;;;29796:2;29781:12;:17;29690:128;29399:582;;;-1:-1:-1;;;;;29867:21:0;;;;;;:15;:21;;;;;;;;29866:22;;:65;;;29916:15;29892:20;;:39;;29866:65;29858:74;;;;;;29951:14;:12;:14::i;:::-;30002:41;30017:4;30023:2;30027:6;30035:7;30002:14;:41::i;:::-;27407:2644;;;;27338:2713;;;:::o;1948:206::-;2034:7;2095:12;2087:6;;;;2079:29;;;;-1:-1:-1;;;2079:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2130:5:0;;;1948:206::o;24369:164::-;24411:7;24432:15;24449;24468:19;:17;:19::i;:::-;24431:56;;-1:-1:-1;24431:56:0;-1:-1:-1;24505:20:0;24431:56;;24505:11;:20::i;:::-;24498:27;;;;24369:164;:::o;1740:98::-;1798:7;1825:5;1829:1;1825;:5;:::i;1428:98::-;1486:7;1513:5;1517:1;1513;:5;:::i;31843:423::-;31956:15;;31924:62;;31941:4;;-1:-1:-1;;;;;31956:15:0;31974:11;31924:8;:62::i;:::-;31997:15;;32201:16;;31997:261;;-1:-1:-1;;;31997:261:0;;32069:4;31997:261;;;6646:34:1;6696:18;;;6689:34;;;31997:15:0;6739:18:1;;;6732:34;;;6782:18;;;6775:34;-1:-1:-1;;;;;32201:16:0;;;6825:19:1;;;6818:44;32232:15:0;6878:19:1;;;6871:35;31997:15:0;;;:31;;32036:9;;6580:19:1;;31997:261:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31843:423;;:::o;23186:414::-;23245:7;23253;23261;23269;23277;23285;23306:23;23331:12;23345:18;23367:20;23379:7;23367:11;:20::i;:::-;23305:82;;;;;;23399:15;23416:23;23441:12;23457:50;23469:7;23478:4;23484:10;23496;:8;:10::i;:::-;23457:11;:50::i;:::-;23398:109;;;;-1:-1:-1;23398:109:0;;-1:-1:-1;23558:15:0;;-1:-1:-1;23575:4:0;;-1:-1:-1;23581:10:0;;-1:-1:-1;23186:414:0;;-1:-1:-1;;;;;23186:414:0:o;30057:1275::-;17774:16;:23;;-1:-1:-1;;17774:23:0;;;;;;30139:24:::1;30157:4;30139:9;:24::i;:::-;30113:50;;30174:25;30243:15;;30220:20;;30202:15;;:38;;;;:::i;:::-;:56;;;;:::i;:::-;30174:84;;30269:27;30299:22;30319:1;30299:15;;:19;;:22;;;;:::i;:::-;30269:52:::0;-1:-1:-1;30332:26:0::1;30361:40;:15:::0;30269:52;30361:19:::1;:40::i;:::-;30332:69:::0;-1:-1:-1;30440:21:0::1;30472:36;30332:69:::0;30472:16:::1;:36::i;:::-;30520:18;30541:44;:21;30567:17:::0;30541:25:::1;:44::i;:::-;30520:65;;30596:23;30622:54;30658:17;30622:31;30637:15;;30622:10;:14;;:31;;;;:::i;:::-;:35:::0;::::1;:54::i;:::-;30596:80;;30687:20;30710:59;30751:17;30710:36;30725:20;;30710:10;:14;;:36;;;;:::i;:59::-;30687:82:::0;-1:-1:-1;30780:23:0::1;30806:49;30687:82:::0;30806:31:::1;:10:::0;30821:15;30806:14:::1;:31::i;:::-;:35:::0;::::1;:49::i;:::-;30884:1;30866:15;:19:::0;;;30896:20:::1;:24:::0;;;30931:15:::1;:19:::0;;;30987:16:::1;::::0;30979:58:::1;::::0;30780:75;;-1:-1:-1;30884:1:0;;-1:-1:-1;;;;;30987:16:0;;::::1;::::0;31017:15;;30884:1;30979:58;30884:1;30979:58;31017:15;30987:16;30979:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;31069:17:0::1;::::0;31061:56:::1;::::0;30961:76;;-1:-1:-1;;;;;;31069:17:0::1;::::0;31100:12;;31061:56:::1;::::0;;;31100:12;31069:17;31061:56:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31048:69;;;;;31128:50;31141:19;31162:15;31128:12;:50::i;:::-;31216:10;31192:21;:34;31189:136;;;31263:10;::::0;31255:58:::1;::::0;-1:-1:-1;;;;;31263:10:0;;::::1;::::0;31287:21:::1;::::0;31255:58:::1;::::0;;;31287:21;31263:10;31255:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;31242:71:0;;-1:-1:-1;;31189:136:0::1;-1:-1:-1::0;;17820:16:0;:24;;-1:-1:-1;;17820:24:0;;;-1:-1:-1;;;;;;;;30057:1275:0:o;32272:449::-;32319:12;;:17;:38;;;;-1:-1:-1;32340:12:0;;:17;32319:38;:64;;;;-1:-1:-1;32361:17:0;;:22;32319:64;:87;;;;-1:-1:-1;32387:14:0;;:19;32319:87;32315:100;;;32272:449::o;32315:100::-;32444:12;;;32425:16;:31;32486:12;;;32467:16;:31;32533:17;;;32509:21;:41;32582:14;;;32561:18;:35;-1:-1:-1;32609:16:0;;;;32636;;;;32663:21;;;32695:18;32272:449::o;32956:764::-;33066:7;33061:28;;33075:14;:12;:14::i;:::-;-1:-1:-1;;;;;33104:16:0;;;;;;:8;:16;;;;;;;;:40;;;;-1:-1:-1;;;;;;33125:19:0;;;;;;:8;:19;;;;;;;;33124:20;33104:40;33100:573;;;33161:48;33183:6;33191:9;33202:6;33161:21;:48::i;:::-;33100:573;;;-1:-1:-1;;;;;33232:16:0;;;;;;:8;:16;;;;;;;;33231:17;:40;;;;-1:-1:-1;;;;;;33252:19:0;;;;;;:8;:19;;;;;;;;33231:40;33227:446;;;33288:46;33308:6;33316:9;33327:6;33288:19;:46::i;33227:446::-;-1:-1:-1;;;;;33357:16:0;;;;;;:8;:16;;;;;;;;33356:17;:41;;;;-1:-1:-1;;;;;;33378:19:0;;;;;;:8;:19;;;;;;;;33377:20;33356:41;33352:321;;;33414:44;33432:6;33440:9;33451:6;33414:17;:44::i;33352:321::-;-1:-1:-1;;;;;33480:16:0;;;;;;:8;:16;;;;;;;;:39;;;;-1:-1:-1;;;;;;33500:19:0;;;;;;:8;:19;;;;;;;;33480:39;33476:197;;;33536:48;33558:6;33566:9;33577:6;33536:21;:48::i;33476:197::-;33617:44;33635:6;33643:9;33654:6;33617:17;:44::i;:::-;33688:7;33683:29;;33697:15;32786:16;;32771:12;:31;32833:21;;32813:17;:41;32882:18;;32865:14;:35;32926:16;;32911:12;:31;32727:223;24539:556;24637:7;;24590;;;;-1:-1:-1;;;24590:7:0;24691:289;24715:9;:16;24711:20;;24691:289;;;24781:7;24757;:21;24765:9;24775:1;24765:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;24765:12:0;24757:21;;;;;;;;;;;;;:31;;:66;;;24816:7;24792;:21;24800:9;24810:1;24800:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;24800:12:0;24792:21;;;;;;;;;;;;;:31;24757:66;24753:97;;;-1:-1:-1;;24833:7:0;;;-1:-1:-1;;;15335:13:0;-1:-1:-1;24539:556:0;-1:-1:-1;;24539:556:0:o;24753:97::-;24875:34;24887:7;:21;24895:9;24905:1;24895:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;24895:12:0;24887:21;;;;;;;;;;;;;24875:7;;:11;:34::i;:::-;24865:44;;24934:34;24946:7;:21;24954:9;24964:1;24954:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;24954:12:0;24946:21;;;;;;;;;;;;;24934:7;;:11;:34::i;:::-;24924:44;-1:-1:-1;24733:3:0;;;;:::i;:::-;;;;24691:289;;;-1:-1:-1;25004:7:0;;:20;;-1:-1:-1;;;25004:11:0;:20::i;:::-;24994:7;:30;24990:61;;;-1:-1:-1;;25034:7:0;;;-1:-1:-1;;;15335:13:0;-1:-1:-1;24539:556:0;-1:-1:-1;24539:556:0:o;24990:61::-;25070:7;;25079;;-1:-1:-1;24539:556:0;-1:-1:-1;24539:556:0:o;23606:327::-;23665:7;23673;23681;23701:12;23716:24;23732:7;23716:15;:24::i;:::-;23701:39;;23751:18;23772:30;23794:7;23772:21;:30::i;:::-;23751:51;-1:-1:-1;23813:23:0;23839:33;23751:51;23839:17;:7;23851:4;23839:11;:17::i;:33::-;23813:59;23908:4;;-1:-1:-1;23914:10:0;;-1:-1:-1;23606:327:0;;-1:-1:-1;;;23606:327:0:o;23939:424::-;24051:7;;;;24105:24;:7;24117:11;24105;:24::i;:::-;24087:42;-1:-1:-1;24140:12:0;24155:21;:4;24164:11;24155:8;:21::i;:::-;24140:36;-1:-1:-1;24187:18:0;24208:27;:10;24223:11;24208:14;:27::i;:::-;24187:48;-1:-1:-1;24246:23:0;24272:33;24187:48;24272:17;:7;24284:4;24272:11;:17::i;:33::-;24324:7;;;;-1:-1:-1;24350:4:0;;-1:-1:-1;23939:424:0;;-1:-1:-1;;;;;;;23939:424:0:o;1532:98::-;1590:7;1617:5;1621:1;1617;:5;:::i;31338:499::-;31428:16;;;31442:1;31428:16;;;;;;;;31404:21;;31428:16;;;;;;;;;;-1:-1:-1;31428:16:0;31404:40;;31473:4;31455;31460:1;31455:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31455:23:0;;;:7;;;;;;;;;;:23;;;;31499:15;;:22;;;-1:-1:-1;;;31499:22:0;;;;:15;;;;;:20;;:22;;;;;31455:7;;31499:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31489:4;31494:1;31489:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31489:32:0;;;:7;;;;;;;;;:32;31564:15;;31532:62;;31549:4;;31564:15;31582:11;31532:8;:62::i;:::-;31605:15;;:224;;-1:-1:-1;;;31605:224:0;;-1:-1:-1;;;;;31605:15:0;;;;:66;;:224;;31686:11;;31605:15;;31756:4;;31783;;31803:15;;31605:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31393:444;31338:499;:::o;1636:98::-;1694:7;1721:5;1725:1;1721;:5;:::i;34989:650::-;35104:15;35134:23;35172:12;35199:23;35237:12;35264:18;35296:19;35307:7;35296:10;:19::i;:::-;-1:-1:-1;;;;;35344:15:0;;;;;;:7;:15;;;;;;35089:226;;-1:-1:-1;35089:226:0;;-1:-1:-1;35089:226:0;;-1:-1:-1;35089:226:0;-1:-1:-1;35089:226:0;-1:-1:-1;35089:226:0;-1:-1:-1;35344:28:0;;35364:7;35344:19;:28::i;:::-;-1:-1:-1;;;;;35326:15:0;;;;;;:7;:15;;;;;;;;:46;;;;35401:7;:15;;;;:28;;35421:7;35401:19;:28::i;:::-;-1:-1:-1;;;;;35383:15:0;;;;;;;:7;:15;;;;;;:46;;;;35461:18;;;;;;;:39;;35484:15;35461:22;:39::i;:::-;-1:-1:-1;;;;;35440:18:0;;;;;;:7;:18;;;;;:60;35511:26;35526:10;35511:14;:26::i;:::-;35548:23;35560:4;35566;35548:11;:23::i;:::-;35604:9;-1:-1:-1;;;;;35587:44:0;35596:6;-1:-1:-1;;;;;35587:44:0;;35615:15;35587:44;;;;15568:25:1;;15556:2;15541:18;;15422:177;35587:44:0;;;;;;;;35078:561;;;;;;34989:650;;;:::o;34321:662::-;34434:15;34464:23;34502:12;34529:23;34567:12;34594:18;34626:19;34637:7;34626:10;:19::i;:::-;-1:-1:-1;;;;;34674:15:0;;;;;;:7;:15;;;;;;34419:226;;-1:-1:-1;34419:226:0;;-1:-1:-1;34419:226:0;;-1:-1:-1;34419:226:0;-1:-1:-1;34419:226:0;-1:-1:-1;34419:226:0;-1:-1:-1;34674:28:0;;34419:226;34674:19;:28::i;:::-;-1:-1:-1;;;;;34656:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;34734:18;;;;;:7;:18;;;;;:39;;34757:15;34734:22;:39::i;:::-;-1:-1:-1;;;;;34713:18:0;;;;;;:7;:18;;;;;;;;:60;;;;34805:7;:18;;;;:39;;34828:15;34805:22;:39::i;33726:589::-;33837:15;33867:23;33905:12;33932:23;33970:12;33997:18;34029:19;34040:7;34029:10;:19::i;:::-;-1:-1:-1;;;;;34077:15:0;;;;;;:7;:15;;;;;;33822:226;;-1:-1:-1;33822:226:0;;-1:-1:-1;33822:226:0;;-1:-1:-1;33822:226:0;-1:-1:-1;33822:226:0;-1:-1:-1;33822:226:0;-1:-1:-1;34077:28:0;;33822:226;34077:19;:28::i;35645:721::-;35760:15;35790:23;35828:12;35855:23;35893:12;35920:18;35952:19;35963:7;35952:10;:19::i;:::-;-1:-1:-1;;;;;36000:15:0;;;;;;:7;:15;;;;;;35745:226;;-1:-1:-1;35745:226:0;;-1:-1:-1;35745:226:0;;-1:-1:-1;35745:226:0;-1:-1:-1;35745:226:0;-1:-1:-1;35745:226:0;-1:-1:-1;36000:28:0;;36020:7;36000:19;:28::i;:::-;-1:-1:-1;;;;;35982:15:0;;;;;;:7;:15;;;;;;;;:46;;;;36057:7;:15;;;;:28;;36077:7;36057:19;:28::i;25676:137::-;25740:7;25767:38;25799:5;25767:27;25779:14;;25767:7;:11;;:27;;;;:::i;25819:176::-;25889:7;25916:71;25981:5;25916:60;25963:12;;25943:17;;25928:12;;:32;;;;:::i;:::-;:47;;;;:::i;:::-;25916:7;;:11;:60::i;25101:569::-;25211:11;;25196:12;;25183:25;;:10;:25;:::i;:::-;:39;;;;:::i;:::-;25164:15;;:58;;;;;;;:::i;:::-;;;;-1:-1:-1;;25290:11:0;;25270:17;;25257:30;;:10;:30;:::i;:::-;:44;;;;:::i;:::-;25233:20;;:68;;;;;;;:::i;:::-;;;;-1:-1:-1;;25359:11:0;;25344:12;;25331:25;;:10;:25;:::i;:::-;:39;;;;:::i;:::-;25312:15;;:58;;;;;;;:::i;:::-;;;;-1:-1:-1;25381:19:0;;-1:-1:-1;25403:10:0;:8;:10::i;:::-;25381:32;-1:-1:-1;25424:18:0;25445:27;:10;25381:32;25445:14;:27::i;:::-;25524:4;25508:22;;;;:7;:22;;;;;;25424:48;;-1:-1:-1;25508:38:0;;25424:48;25508:26;:38::i;:::-;25499:4;25483:22;;;;:7;:22;;;;;;;;:63;;;;25561:8;:23;;;;;;25557:105;;;25640:4;25624:22;;;;:7;:22;;;;;;:38;;25651:10;25624:26;:38::i;:::-;25615:4;25599:22;;;;:7;:22;;;;;:63;25153:517;;25101:569;:::o;23033:147::-;23111:7;;:17;;23123:4;23111:11;:17::i;:::-;23101:7;:27;23152:10;;:20;;23167:4;23152:14;:20::i;:::-;23139:10;:33;-1:-1:-1;;23033:147:0:o;14:673:1:-;68:5;121:3;114:4;106:6;102:17;98:27;88:55;;139:1;136;129:12;88:55;175:6;162:20;201:4;225:60;241:43;281:2;241:43;:::i;:::-;225:60;:::i;:::-;307:3;331:2;326:3;319:15;359:2;354:3;350:12;343:19;;394:2;386:6;382:15;446:3;441:2;435;432:1;428:10;420:6;416:23;412:32;409:41;406:61;;;463:1;460;453:12;406:61;485:1;495:163;509:2;506:1;503:9;495:163;;;566:17;;554:30;;604:12;;;;636;;;;527:1;520:9;495:163;;;-1:-1:-1;676:5:1;;14:673;-1:-1:-1;;;;;;;14:673:1:o;692:247::-;751:6;804:2;792:9;783:7;779:23;775:32;772:52;;;820:1;817;810:12;772:52;859:9;846:23;878:31;903:5;878:31;:::i;944:251::-;1014:6;1067:2;1055:9;1046:7;1042:23;1038:32;1035:52;;;1083:1;1080;1073:12;1035:52;1115:9;1109:16;1134:31;1159:5;1134:31;:::i;1200:388::-;1268:6;1276;1329:2;1317:9;1308:7;1304:23;1300:32;1297:52;;;1345:1;1342;1335:12;1297:52;1384:9;1371:23;1403:31;1428:5;1403:31;:::i;:::-;1453:5;-1:-1:-1;1510:2:1;1495:18;;1482:32;1523:33;1482:32;1523:33;:::i;:::-;1575:7;1565:17;;;1200:388;;;;;:::o;1593:456::-;1670:6;1678;1686;1739:2;1727:9;1718:7;1714:23;1710:32;1707:52;;;1755:1;1752;1745:12;1707:52;1794:9;1781:23;1813:31;1838:5;1813:31;:::i;:::-;1863:5;-1:-1:-1;1920:2:1;1905:18;;1892:32;1933:33;1892:32;1933:33;:::i;:::-;1593:456;;1985:7;;-1:-1:-1;;;2039:2:1;2024:18;;;;2011:32;;1593:456::o;2054:315::-;2122:6;2130;2183:2;2171:9;2162:7;2158:23;2154:32;2151:52;;;2199:1;2196;2189:12;2151:52;2238:9;2225:23;2257:31;2282:5;2257:31;:::i;:::-;2307:5;2359:2;2344:18;;;;2331:32;;-1:-1:-1;;;2054:315:1:o;2374:1226::-;2492:6;2500;2553:2;2541:9;2532:7;2528:23;2524:32;2521:52;;;2569:1;2566;2559:12;2521:52;2609:9;2596:23;2638:18;2679:2;2671:6;2668:14;2665:34;;;2695:1;2692;2685:12;2665:34;2733:6;2722:9;2718:22;2708:32;;2778:7;2771:4;2767:2;2763:13;2759:27;2749:55;;2800:1;2797;2790:12;2749:55;2836:2;2823:16;2858:4;2882:60;2898:43;2938:2;2898:43;:::i;2882:60::-;2964:3;2988:2;2983:3;2976:15;3016:2;3011:3;3007:12;3000:19;;3047:2;3043;3039:11;3095:7;3090:2;3084;3081:1;3077:10;3073:2;3069:19;3065:28;3062:41;3059:61;;;3116:1;3113;3106:12;3059:61;3138:1;3129:10;;3148:238;3162:2;3159:1;3156:9;3148:238;;;3233:3;3220:17;3250:31;3275:5;3250:31;:::i;:::-;3294:18;;3180:1;3173:9;;;;;3332:12;;;;3364;;3148:238;;;-1:-1:-1;3405:5:1;-1:-1:-1;;3448:18:1;;3435:32;;-1:-1:-1;;3479:16:1;;;3476:36;;;3508:1;3505;3498:12;3476:36;;3531:63;3586:7;3575:8;3564:9;3560:24;3531:63;:::i;:::-;3521:73;;;2374:1226;;;;;:::o;3605:180::-;3664:6;3717:2;3705:9;3696:7;3692:23;3688:32;3685:52;;;3733:1;3730;3723:12;3685:52;-1:-1:-1;3756:23:1;;3605:180;-1:-1:-1;3605:180:1:o;3790:184::-;3860:6;3913:2;3901:9;3892:7;3888:23;3884:32;3881:52;;;3929:1;3926;3919:12;3881:52;-1:-1:-1;3952:16:1;;3790:184;-1:-1:-1;3790:184:1:o;3979:315::-;4047:6;4055;4108:2;4096:9;4087:7;4083:23;4079:32;4076:52;;;4124:1;4121;4114:12;4076:52;4160:9;4147:23;4137:33;;4220:2;4209:9;4205:18;4192:32;4233:31;4258:5;4233:31;:::i;4299:341::-;4364:6;4372;4425:2;4413:9;4404:7;4400:23;4396:32;4393:52;;;4441:1;4438;4431:12;4393:52;4477:9;4464:23;4454:33;;4537:2;4526:9;4522:18;4509:32;4584:5;4577:13;4570:21;4563:5;4560:32;4550:60;;4606:1;4603;4596:12;4645:306;4733:6;4741;4749;4802:2;4790:9;4781:7;4777:23;4773:32;4770:52;;;4818:1;4815;4808:12;4770:52;4847:9;4841:16;4831:26;;4897:2;4886:9;4882:18;4876:25;4866:35;;4941:2;4930:9;4926:18;4920:25;4910:35;;4645:306;;;;;:::o;4956:385::-;5042:6;5050;5058;5066;5119:3;5107:9;5098:7;5094:23;5090:33;5087:53;;;5136:1;5133;5126:12;5087:53;-1:-1:-1;;5159:23:1;;;5229:2;5214:18;;5201:32;;-1:-1:-1;5280:2:1;5265:18;;5252:32;;5331:2;5316:18;5303:32;;-1:-1:-1;4956:385:1;-1:-1:-1;4956:385:1:o;7343:597::-;7455:4;7484:2;7513;7502:9;7495:21;7545:6;7539:13;7588:6;7583:2;7572:9;7568:18;7561:34;7613:1;7623:140;7637:6;7634:1;7631:13;7623:140;;;7732:14;;;7728:23;;7722:30;7698:17;;;7717:2;7694:26;7687:66;7652:10;;7623:140;;;7781:6;7778:1;7775:13;7772:91;;;7851:1;7846:2;7837:6;7826:9;7822:22;7818:31;7811:42;7772:91;-1:-1:-1;7924:2:1;7903:15;-1:-1:-1;;7899:29:1;7884:45;;;;7931:2;7880:54;;7343:597;-1:-1:-1;;;7343:597:1:o;11905:401::-;12107:2;12089:21;;;12146:2;12126:18;;;12119:30;12185:34;12180:2;12165:18;;12158:62;-1:-1:-1;;;12251:2:1;12236:18;;12229:35;12296:3;12281:19;;11905:401::o;15604:980::-;15866:4;15914:3;15903:9;15899:19;15945:6;15934:9;15927:25;15971:2;16009:6;16004:2;15993:9;15989:18;15982:34;16052:3;16047:2;16036:9;16032:18;16025:31;16076:6;16111;16105:13;16142:6;16134;16127:22;16180:3;16169:9;16165:19;16158:26;;16219:2;16211:6;16207:15;16193:29;;16240:1;16250:195;16264:6;16261:1;16258:13;16250:195;;;16329:13;;-1:-1:-1;;;;;16325:39:1;16313:52;;16420:15;;;;16385:12;;;;16361:1;16279:9;16250:195;;;-1:-1:-1;;;;;;;16501:32:1;;;;16496:2;16481:18;;16474:60;-1:-1:-1;;;16565:3:1;16550:19;16543:35;16462:3;15604:980;-1:-1:-1;;;15604:980:1:o;17174:275::-;17245:2;17239:9;17310:2;17291:13;;-1:-1:-1;;17287:27:1;17275:40;;17345:18;17330:34;;17366:22;;;17327:62;17324:88;;;17392:18;;:::i;:::-;17428:2;17421:22;17174:275;;-1:-1:-1;17174:275:1:o;17454:183::-;17514:4;17547:18;17539:6;17536:30;17533:56;;;17569:18;;:::i;:::-;-1:-1:-1;17614:1:1;17610:14;17626:4;17606:25;;17454:183::o;17642:128::-;17682:3;17713:1;17709:6;17706:1;17703:13;17700:39;;;17719:18;;:::i;:::-;-1:-1:-1;17755:9:1;;17642:128::o;17775:217::-;17815:1;17841;17831:132;;17885:10;17880:3;17876:20;17873:1;17866:31;17920:4;17917:1;17910:15;17948:4;17945:1;17938:15;17831:132;-1:-1:-1;17977:9:1;;17775:217::o;17997:168::-;18037:7;18103:1;18099;18095:6;18091:14;18088:1;18085:21;18080:1;18073:9;18066:17;18062:45;18059:71;;;18110:18;;:::i;:::-;-1:-1:-1;18150:9:1;;17997:168::o;18170:125::-;18210:4;18238:1;18235;18232:8;18229:34;;;18243:18;;:::i;:::-;-1:-1:-1;18280:9:1;;18170:125::o;18300:135::-;18339:3;-1:-1:-1;;18360:17:1;;18357:43;;;18380:18;;:::i;:::-;-1:-1:-1;18427:1:1;18416:13;;18300:135::o;18440:127::-;18501:10;18496:3;18492:20;18489:1;18482:31;18532:4;18529:1;18522:15;18556:4;18553:1;18546:15;18572:127;18633:10;18628:3;18624:20;18621:1;18614:31;18664:4;18661:1;18654:15;18688:4;18685:1;18678:15;18704:127;18765:10;18760:3;18756:20;18753:1;18746:31;18796:4;18793:1;18786:15;18820:4;18817:1;18810:15;18836:131;-1:-1:-1;;;;;18911:31:1;;18901:42;;18891:70;;18957:1;18954;18947:12

Swarm Source

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