ETH Price: $3,216.38 (+3.71%)
 

Overview

Max Total Supply

1,000,000 VDT

Holders

10

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
14,569.009138147722429662 VDT

Value
$0.00
0xdce10fa83b3bbb1c68c67c5d40afdea81f05d4ea
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:
Vendetta

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-25
*/

/**

https://vforvendetta.live/
https://twitter.com/VendettaERC
https://t.me/vendetta_eth

*/

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

abstract contract Context {

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

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

interface IERC20 {

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

library SafeMath {

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

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

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

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

        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

contract Ownable 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 returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD));
        _owner = address(0x000000000000000000000000000000000000dEaD);
    }

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

}

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

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

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

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

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

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

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

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

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

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

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

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

    function initialize(address, address) external;
}

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

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

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

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

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

contract Vendetta is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    
    string private _name = "Vendetta";
    string private _symbol = "VDT";
    uint8 private _decimals = 18;

    address payable public marketingWallet = payable(0x74545645Dd4FFEa0645cD4bBC00A93538100A5A2); 
    address payable public DeveloperWallet = payable(0x18C838AFEA49725F826C2f510FDA8490113Be917); //Community Sniper Wallet
    
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public blacklist;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;

    uint256 public _buyLiquidityFee = 0;
    uint256 public _buyMarketingFee = 3;
    uint256 public _buyDeveloperFee = 1;
    
    uint256 public _sellLiquidityFee = 0;
    uint256 public _sellMarketingFee = 3;
    uint256 public _sellDeveloperFee = 1;

    uint256 public _totalTaxIfBuying;
    uint256 public _totalTaxIfSelling;

    uint256 private _totalSupply = 1000000 * 10**_decimals;

    uint256 public minimumTokensBeforeSwap = _totalSupply.mul(1).div(100);

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

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    bool public checkWalletLimit = true;
    bool public EnableTransactionLimit = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        
        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        
        _allowances[address(this)][address(uniswapV2Router)] = ~uint256(0);

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[marketingWallet] = true;
        isExcludedFromFee[DeveloperWallet] = true;
        isExcludedFromFee[address(this)] = true;

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[marketingWallet] = true;
        isWalletLimitExempt[DeveloperWallet] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[marketingWallet] = true;
        isTxLimitExempt[DeveloperWallet] = true;
        isTxLimitExempt[address(this)] = true;
        
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);

        isMarketPair[address(uniswapPair)] = true;

        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

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

    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 approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

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

    function setMarketPairStatus(address account, bool newValue) public onlyOwner {
        isMarketPair[account] = newValue;
    }

    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }
    
    function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
        isWalletLimitExempt[holder] = exempt;
    }

    function enableTxLimit(bool _status) external onlyOwner {
        EnableTransactionLimit = _status;
    }

    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }

    function enableDisableWalletLimit(bool newValue) external onlyOwner {
       checkWalletLimit = newValue;
    }

    function setWalletLimit(uint256 newLimit) external onlyOwner {
        _walletMax  = newLimit;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        marketingWallet = payable(newAddress);
    }

    function setDeveloperWalletAddress(address newAddress) external onlyOwner() {
        DeveloperWallet = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

    function setBlacklist(address _adr, bool _status) external onlyOwner {
        blacklist[_adr] = _status;
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if(newPairAddress == address(0)) 
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapPair = newPairAddress; 
        uniswapV2Router = _uniswapV2Router; 

        isMarketPair[address(uniswapPair)] = true;
    }

    function setBuyTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
        _buyLiquidityFee = _Liquidity;
        _buyMarketingFee = _Marketing;
        _buyDeveloperFee = _Developer;
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
    }

    function setSellTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
        _sellLiquidityFee = _Liquidity;
        _sellMarketingFee = _Marketing;
        _sellDeveloperFee = _Developer;
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);
    }

     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, 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 _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(!blacklist[sender] && !blacklist[recipient], "Bot Enemy address Restricted!");

        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {

            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTransactionLimit) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);    
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? 
                                         amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
                require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Amount Exceed From Max Wallet Limit!!");
            }

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
        
    }

    function rescueStuckedToken(address _token, uint _amount) external onlyOwner {
        IERC20(_token).transfer(msg.sender,_amount);
    }

    function rescueFunds() external onlyOwner {
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os);
    }

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

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {

        uint256 totalShares = _totalTaxIfBuying.add(_totalTaxIfSelling);

        uint256 liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee);
        uint256 MarketingShare = _buyMarketingFee.add(_sellMarketingFee);
        // uint256 DeveloperShare = _buyDeveloperFee.add(_sellDeveloperFee);
        
        uint256 tokenForLp = tAmount.mul(liquidityShare).div(totalShares).div(2);
        uint256 tokenForSwap = tAmount.sub(tokenForLp);

        uint256 initialBalance =  address(this).balance;
        swapTokensForEth(tokenForSwap);
        uint256 recievedBalance =  address(this).balance.sub(initialBalance);

        uint256 totalETHFee = totalShares.sub(liquidityShare.div(2));

        uint256 amountETHLiquidity = recievedBalance.mul(liquidityShare).div(totalETHFee).div(2);
        uint256 amountETHMarketing = recievedBalance.mul(MarketingShare).div(totalETHFee);
        uint256 amountETHDeveloper = recievedBalance.sub(amountETHLiquidity).sub(amountETHMarketing);

        if(amountETHMarketing > 0) {
            payable(marketingWallet).transfer(amountETHMarketing);
        }

        if(amountETHDeveloper > 0) {
            payable(DeveloperWallet).transfer(amountETHDeveloper);
        }         

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

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

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = 0;
        
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }
        
        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    /* AirDrop Function*/

    function airdrop(address[] calldata _address,uint[] calldata _tokens) external onlyOwner {
        address account = msg.sender;
        require(_address.length == _tokens.length,"Error: Mismatch Length");
        uint tokenCount;
        for(uint i = 0; i < _tokens.length; i++) {
            tokenCount += _tokens[i];
        }
        require(balanceOf(account) >= tokenCount,"Error: Insufficient Error!!");
        _balances[account] = _balances[account].sub(tokenCount); 
        for(uint j = 0; j < _address.length; j++) {
            _balances[_address[j]] = _balances[_address[j]].add(_tokens[j]);
            emit Transfer(account, _address[j], _tokens[j]);
        }

    }

    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DeveloperWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableTransactionLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"},{"internalType":"uint256[]","name":"_tokens","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueStuckedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDeveloperWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"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":"uniswapPair","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":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

610100604052600860c09081526756656e646574746160c01b60e0526001906200002a9082620007f6565b5060408051808201909152600381526215911560ea1b6020820152600290620000549082620007f6565b50600380547474545645dd4ffea0645cd4bbc00a93538100a5a2126001600160a81b0319909116178155600480546001600160a01b0319167318c838afea49725f826c2f510fda8490113be91717905561dead6080525f60a0819052600c819055600d8290556001600e819055600f91909155601091909155601155620000de6012600a620009cb565b620000ed90620f4240620009db565b60148190556200010e9060649062000107906001620005de565b9062000671565b601555601454620001299060649062000107906002620005de565b601655601454620001449060649062000107906002620005de565b6017556019805463ffffffff60a81b1916630101000160a81b1790553480156200016c575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000202573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002289190620009f5565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000274573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200029a9190620009f5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002e5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200030b9190620009f5565b601980546001600160a01b039283166001600160a01b031991821617909155601880549284169290911682179055305f9081526006602090815260408083209383529290529081205f1990556001906007906200036f5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905560035461010090048216815260079093528183208054851660019081179091556004549091168352818320805485168217905530835290822080549093168117909255600a90620003f45f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055600354610100900482168152600a9093528183208054851660019081179091556004548216845282842080548616821790556019549091168352818320805485168217905530835290822080549093168117909255600b906200048b5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055600354610100900482168152600b9093528183208054851660019081179091556004549091168352818320805485168217905530835291208054909216179055600e54600d54600c546200051a9291620005139190620006ba565b90620006ba565b601255601154601054600f54620005389291620005139190620006ba565b6013556019546001600160a01b03165f908152600860205260408120805460ff19166001179055601454906005906200056e3390565b6001600160a01b0316815260208101919091526040015f2055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601454604051620005cf91815260200190565b60405180910390a35062000aa0565b5f825f03620005ef57505f6200066b565b5f620005fc8385620009db565b9050826200060b858362000a1d565b14620006685760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f6200066883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200071c60201b60201c565b5f80620006c8838562000a3d565b905083811015620006685760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016200065f565b5f81836200073f5760405162461bcd60e51b81526004016200065f919062000a53565b505f6200074d848662000a1d565b95945050505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200077f57607f821691505b6020821081036200079e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620007f1575f81815260208120601f850160051c81016020861015620007cc5750805b601f850160051c820191505b81811015620007ed57828155600101620007d8565b5050505b505050565b81516001600160401b0381111562000812576200081262000756565b6200082a816200082384546200076a565b84620007a4565b602080601f83116001811462000860575f8415620008485750858301515b5f19600386901b1c1916600185901b178555620007ed565b5f85815260208120601f198616915b8281101562000890578886015182559484019460019091019084016200086f565b5085821015620008ae57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200091257815f1904821115620008f657620008f6620008be565b808516156200090457918102915b93841c9390800290620008d7565b509250929050565b5f826200092a575060016200066b565b816200093857505f6200066b565b81600181146200095157600281146200095c576200097c565b60019150506200066b565b60ff841115620009705762000970620008be565b50506001821b6200066b565b5060208310610133831016604e8410600b8410161715620009a1575081810a6200066b565b620009ad8383620008d2565b805f1904821115620009c357620009c3620008be565b029392505050565b5f6200066860ff8416836200091a565b80820281158282048414176200066b576200066b620008be565b5f6020828403121562000a06575f80fd5b81516001600160a01b038116811462000668575f80fd5b5f8262000a3857634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156200066b576200066b620008be565b5f6020808352835180828501525f5b8181101562000a805785810183015185820160400152820162000a62565b505f604082860101526040601f19601f8301168501019250505092915050565b60805160a051612cc162000ad05f395f81816103fc0152610e0301525f81816105630152610e3d0152612cc15ff3fe608060405260043610610395575f3560e01c8063844d591c116101de578063da00097d11610108578063f1d5f5171161009d578063f872858a1161006d578063f872858a14610ac6578063f8f6329014610ae6578063f9f92be414610b05578063fb4b8e6c14610b33575f80fd5b8063f1d5f51714610a4a578063f2fde38b14610a69578063f455444614610a88578063f84ba65d14610aa7575f80fd5b8063ec28438a116100d8578063ec28438a146109d8578063ee828db3146109f7578063ef422a1814610a16578063f0cd1dac14610a35575f80fd5b8063da00097d1461094b578063dc44b6a01461096b578063dd62ed3e14610980578063e6b2603b146109c4575f80fd5b8063a5d69d1f1161017e578063c816841b1161014e578063c816841b146108d4578063c8607952146108f3578063c867d60b14610908578063d2d7ad8314610936575f80fd5b8063a5d69d1f14610862578063a9059cbb14610881578063c49b9a80146108a0578063c5d24189146108bf575f80fd5b80638b42507f116101b95780638b42507f146107e55780638da5cb5b1461081357806395d89b411461082f578063a457c2d714610843575f80fd5b8063844d591c1461079157806385261485146107b057806388790a68146107d0575f80fd5b806339509351116102bf5780635881f3ef1161025f57806375f0a8741161022f57806375f0a8741461072e5780637d1db4a514610752578063807c2d9c1461076757806382eefb431461077c575f80fd5b80635881f3ef146106a857806367243482146106c757806370a08231146106e6578063715018a61461071a575f80fd5b80634a74bb021161029a5780634a74bb02146106265780634cb80fd5146106465780635194f9bf146106655780635342acb41461067a575f80fd5b806339509351146105ba5780633b97084a146105d95780633ecad271146105f8575f80fd5b80631870517a116103355780632563ae83116103055780632563ae831461053357806327c8f835146105525780632b112e4914610585578063313ce56714610599575f80fd5b80631870517a146104c15780632198cf6c146104e057806323555d57146104ff57806323b872dd14610514575f80fd5b8063095ea7b311610370578063095ea7b314610436578063153b0d1e146104655780631694505e1461048457806318160ddd146104a3575f80fd5b806306fdde03146103a057806308733214146103ca5780630930907b146103eb575f80fd5b3661039c57005b5f80fd5b3480156103ab575f80fd5b506103b4610b52565b6040516103c191906127bb565b60405180910390f35b3480156103d5575f80fd5b506103e96103e4366004612806565b610be2565b005b3480156103f6575f80fd5b5061041e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103c1565b348015610441575f80fd5b50610455610450366004612843565b610c3f565b60405190151581526020016103c1565b348015610470575f80fd5b506103e961047f36600461287a565b610c55565b34801561048f575f80fd5b5060185461041e906001600160a01b031681565b3480156104ae575f80fd5b506014545b6040519081526020016103c1565b3480156104cc575f80fd5b506103e96104db366004612806565b610ca8565b3480156104eb575f80fd5b506103e96104fa36600461287a565b610cf6565b34801561050a575f80fd5b506104b3600e5481565b34801561051f575f80fd5b5061045561052e3660046128b1565b610d49565b34801561053e575f80fd5b506103e961054d3660046128ef565b610db2565b34801561055d575f80fd5b5061041e7f000000000000000000000000000000000000000000000000000000000000000081565b348015610590575f80fd5b506104b3610df9565b3480156105a4575f80fd5b5060035460405160ff90911681526020016103c1565b3480156105c5575f80fd5b506104556105d4366004612843565b610e8a565b3480156105e4575f80fd5b506103e96105f336600461290a565b610ebf565b348015610603575f80fd5b50610455610612366004612921565b60086020525f908152604090205460ff1681565b348015610631575f80fd5b5060195461045590600160a81b900460ff1681565b348015610651575f80fd5b506103e9610660366004612921565b610eed565b348015610670575f80fd5b506104b360115481565b348015610685575f80fd5b50610455610694366004612921565b60076020525f908152604090205460ff1681565b3480156106b3575f80fd5b5061041e6106c2366004612921565b610f3e565b3480156106d2575f80fd5b506103e96106e1366004612984565b611248565b3480156106f1575f80fd5b506104b3610700366004612921565b6001600160a01b03165f9081526005602052604090205490565b348015610725575f80fd5b506103e96114ec565b348015610739575f80fd5b5060035461041e9061010090046001600160a01b031681565b34801561075d575f80fd5b506104b360165481565b348015610772575f80fd5b506104b360175481565b348015610787575f80fd5b506104b360135481565b34801561079c575f80fd5b506103e96107ab36600461287a565b611563565b3480156107bb575f80fd5b5060195461045590600160c01b900460ff1681565b3480156107db575f80fd5b506104b3600f5481565b3480156107f0575f80fd5b506104556107ff366004612921565b600b6020525f908152604090205460ff1681565b34801561081e575f80fd5b505f546001600160a01b031661041e565b34801561083a575f80fd5b506103b46115b6565b34801561084e575f80fd5b5061045561085d366004612843565b6115c5565b34801561086d575f80fd5b506103e961087c3660046128ef565b611612565b34801561088c575f80fd5b5061045561089b366004612843565b611659565b3480156108ab575f80fd5b506103e96108ba3660046128ef565b611665565b3480156108ca575f80fd5b506104b3600d5481565b3480156108df575f80fd5b5060195461041e906001600160a01b031681565b3480156108fe575f80fd5b506104b360105481565b348015610913575f80fd5b50610455610922366004612921565b600a6020525f908152604090205460ff1681565b348015610941575f80fd5b506104b360155481565b348015610956575f80fd5b5060195461045590600160b01b900460ff1681565b348015610976575f80fd5b506104b3600c5481565b34801561098b575f80fd5b506104b361099a3660046129eb565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b3480156109cf575f80fd5b506103e96116e6565b3480156109e3575f80fd5b506103e96109f236600461290a565b611763565b348015610a02575f80fd5b506103e9610a113660046128ef565b611791565b348015610a21575f80fd5b506103e9610a3036600461287a565b6117d8565b348015610a40575f80fd5b506104b360125481565b348015610a55575f80fd5b506103e9610a6436600461290a565b61182b565b348015610a74575f80fd5b506103e9610a83366004612921565b611859565b348015610a93575f80fd5b506103e9610aa2366004612843565b611940565b348015610ab2575f80fd5b506103e9610ac136600461287a565b6119dc565b348015610ad1575f80fd5b5060195461045590600160b81b900460ff1681565b348015610af1575f80fd5b5060045461041e906001600160a01b031681565b348015610b10575f80fd5b50610455610b1f366004612921565b60096020525f908152604090205460ff1681565b348015610b3e575f80fd5b506103e9610b4d366004612921565b611a2f565b606060018054610b6190612a17565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8d90612a17565b8015610bd85780601f10610baf57610100808354040283529160200191610bd8565b820191905f5260205f20905b815481529060010190602001808311610bbb57829003601f168201915b5050505050905090565b5f546001600160a01b03163314610c145760405162461bcd60e51b8152600401610c0b90612a4f565b60405180910390fd5b600f83905560108290556011819055610c3781610c318585611a7a565b90611a7a565b601355505050565b5f610c4b338484611ad8565b5060015b92915050565b5f546001600160a01b03163314610c7e5760405162461bcd60e51b8152600401610c0b90612a4f565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610cd15760405162461bcd60e51b8152600401610c0b90612a4f565b600c839055600d829055600e819055610cee81610c318585611a7a565b601255505050565b5f546001600160a01b03163314610d1f5760405162461bcd60e51b8152600401610c0b90612a4f565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b5f610d55848484611bfb565b50610da78433610da285604051806060016040528060288152602001612c1f602891396001600160a01b038a165f908152600660209081526040808320338452909152902054919061209d565b611ad8565b5060015b9392505050565b5f546001600160a01b03163314610ddb5760405162461bcd60e51b8152600401610c0b90612a4f565b60198054911515600160b81b0260ff60b81b19909216919091179055565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165f90815260056020526040812054610e8590610e7f610e767f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165f9081526005602052604090205490565b601454906120d5565b906120d5565b905090565b335f8181526006602090815260408083206001600160a01b03871684529091528120549091610c4b918590610da29086611a7a565b5f546001600160a01b03163314610ee85760405162461bcd60e51b8152600401610c0b90612a4f565b601555565b5f546001600160a01b03163314610f165760405162461bcd60e51b8152600401610c0b90612a4f565b600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b5f80546001600160a01b03163314610f685760405162461bcd60e51b8152600401610c0b90612a4f565b5f829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fa8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fcc9190612a84565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611017573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103b9190612a84565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611084573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110a89190612a84565b91506001600160a01b0382166111f857806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111189190612a84565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611163573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111879190612a84565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156111d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111f59190612a84565b91505b601980546001600160a01b038085166001600160a01b03199283168117909355601880549490911693909116929092179091555f908152600860205260409020805460ff19166001179055919050565b5f546001600160a01b031633146112715760405162461bcd60e51b8152600401610c0b90612a4f565b338382146112ba5760405162461bcd60e51b815260206004820152601660248201527508ae4e4dee474409ad2e6dac2e8c6d04098cadccee8d60531b6044820152606401610c0b565b5f805b838110156112fd578484828181106112d7576112d7612a9f565b90506020020135826112e99190612ac7565b9150806112f581612ada565b9150506112bd565b508061131d836001600160a01b03165f9081526005602052604090205490565b101561136b5760405162461bcd60e51b815260206004820152601b60248201527f4572726f723a20496e73756666696369656e74204572726f72212100000000006044820152606401610c0b565b6001600160a01b0382165f9081526005602052604090205461138d90826120d5565b6001600160a01b0383165f908152600560205260408120919091555b858110156114e3576114168585838181106113c6576113c6612a9f565b9050602002013560055f8a8a868181106113e2576113e2612a9f565b90506020020160208101906113f79190612921565b6001600160a01b0316815260208101919091526040015f205490611a7a565b60055f89898581811061142b5761142b612a9f565b90506020020160208101906114409190612921565b6001600160a01b0316815260208101919091526040015f205586868281811061146b5761146b612a9f565b90506020020160208101906114809190612921565b6001600160a01b0316836001600160a01b03165f80516020612c478339815191528787858181106114b3576114b3612a9f565b905060200201356040516114c991815260200190565b60405180910390a3806114db81612ada565b9150506113a9565b50505050505050565b5f546001600160a01b031633146115155760405162461bcd60e51b8152600401610c0b90612a4f565b5f805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b03191661dead179055565b5f546001600160a01b0316331461158c5760405162461bcd60e51b8152600401610c0b90612a4f565b6001600160a01b03919091165f908152600860205260409020805460ff1916911515919091179055565b606060028054610b6190612a17565b5f610c4b3384610da285604051806060016040528060258152602001612c6760259139335f9081526006602090815260408083206001600160a01b038d168452909152902054919061209d565b5f546001600160a01b0316331461163b5760405162461bcd60e51b8152600401610c0b90612a4f565b60198054911515600160b01b0260ff60b01b19909216919091179055565b5f610da7338484611bfb565b5f546001600160a01b0316331461168e5760405162461bcd60e51b8152600401610c0b90612a4f565b60198054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906116db90831515815260200190565b60405180910390a150565b5f546001600160a01b0316331461170f5760405162461bcd60e51b8152600401610c0b90612a4f565b6040515f90339047908381818185875af1925050503d805f811461174e576040519150601f19603f3d011682016040523d82523d5f602084013e611753565b606091505b5050905080611760575f80fd5b50565b5f546001600160a01b0316331461178c5760405162461bcd60e51b8152600401610c0b90612a4f565b601655565b5f546001600160a01b031633146117ba5760405162461bcd60e51b8152600401610c0b90612a4f565b60198054911515600160c01b0260ff60c01b19909216919091179055565b5f546001600160a01b031633146118015760405162461bcd60e51b8152600401610c0b90612a4f565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146118545760405162461bcd60e51b8152600401610c0b90612a4f565b601755565b5f546001600160a01b031633146118825760405162461bcd60e51b8152600401610c0b90612a4f565b6001600160a01b0381166118e75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c0b565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146119695760405162461bcd60e51b8152600401610c0b90612a4f565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303815f875af11580156119b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119d79190612af2565b505050565b5f546001600160a01b03163314611a055760405162461bcd60e51b8152600401610c0b90612a4f565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314611a585760405162461bcd60e51b8152600401610c0b90612a4f565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b5f80611a868385612ac7565b905083811015610dab5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c0b565b6001600160a01b038316611b3a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c0b565b6001600160a01b038216611b9b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c0b565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b038416611c605760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c0b565b6001600160a01b038316611cc25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c0b565b6001600160a01b0384165f9081526009602052604090205460ff16158015611d0257506001600160a01b0383165f9081526009602052604090205460ff16155b611d4e5760405162461bcd60e51b815260206004820152601d60248201527f426f7420456e656d7920616464726573732052657374726963746564210000006044820152606401610c0b565b601954600160a01b900460ff1615611d7257611d6b848484612116565b9050610dab565b6001600160a01b0384165f908152600b602052604090205460ff16158015611db257506001600160a01b0383165f908152600b602052604090205460ff16155b8015611dc75750601954600160c01b900460ff165b15611e2f57601654821115611e2f5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c0b565b305f9081526005602052604090205460155481108015908190611e5c5750601954600160a01b900460ff16155b8015611e8057506001600160a01b0386165f9081526008602052604090205460ff16155b8015611e955750601954600160a81b900460ff165b15611ebb57601954600160b01b900460ff1615611eb25760155491505b611ebb826121e6565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f90815260059091529190912054611f0c91869061209d565b6001600160a01b0387165f90815260056020908152604080832093909355600790529081205460ff1680611f5757506001600160a01b0386165f9081526007602052604090205460ff165b611f6b57611f66878787612387565b611f6d565b845b601954909150600160b81b900460ff168015611fa157506001600160a01b0386165f908152600a602052604090205460ff16155b1561202757601754611fcb82610c31896001600160a01b03165f9081526005602052604090205490565b11156120275760405162461bcd60e51b815260206004820152602560248201527f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c696044820152646d6974212160d81b6064820152608401610c0b565b6001600160a01b0386165f908152600560205260409020546120499082611a7a565b6001600160a01b038088165f8181526005602052604090819020939093559151908916905f80516020612c47833981519152906120899085815260200190565b60405180910390a360019350505050610dab565b5f81848411156120c05760405162461bcd60e51b8152600401610c0b91906127bb565b505f6120cc8486612b0d565b95945050505050565b5f610dab83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061209d565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f90815260059091529182205461216691849061209d565b6001600160a01b038086165f9081526005602052604080822093909355908516815220546121949083611a7a565b6001600160a01b038085165f8181526005602052604090819020939093559151908616905f80516020612c47833981519152906121d49086815260200190565b60405180910390a35060019392505050565b6019805460ff60a01b1916600160a01b1790556013546012545f9161220b9190611a7a565b90505f612225600f54600c54611a7a90919063ffffffff16565b90505f61223f601054600d54611a7a90919063ffffffff16565b90505f612259600261225386818988612476565b906124f4565b90505f61226686836120d5565b90504761227282612535565b5f61227d47836120d5565b90505f61229561228e8860026124f4565b89906120d5565b90505f6122a960026122538481878d612476565b90505f6122ba83612253868b612476565b90505f6122cb82610e7f87866120d5565b90508115612310576003546040516101009091046001600160a01b0316906108fc8415029084905f818181858888f1935050505015801561230e573d5f803e3d5ffd5b505b801561234f576004546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561234d573d5f803e3d5ffd5b505b5f8311801561235d57505f88115b1561236c5761236c88846126be565b50506019805460ff60a01b1916905550505050505050505050565b6001600160a01b0383165f90815260086020526040812054819060ff16156123ca576123c360646122536012548661247690919063ffffffff16565b9050612407565b6001600160a01b0384165f9081526008602052604090205460ff16156124075761240460646122536013548661247690919063ffffffff16565b90505b801561246c57305f908152600560205260409020546124269082611a7a565b305f81815260056020526040908190209290925590516001600160a01b038716905f80516020612c47833981519152906124639085815260200190565b60405180910390a35b6120cc83826120d5565b5f825f0361248557505f610c4f565b5f6124908385612b20565b90508261249d8583612b37565b14610dab5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c0b565b5f610dab83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061278f565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061256857612568612a9f565b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156125bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125e39190612a84565b816001815181106125f6576125f6612a9f565b6001600160a01b03928316602091820292909201015260185461261c9130911684611ad8565b60185460405163791ac94760e01b81526001600160a01b039091169063791ac947906126549085905f90869030904290600401612b98565b5f604051808303815f87803b15801561266b575f80fd5b505af115801561267d573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516126b2929190612bd3565b60405180910390a15050565b6018546126d69030906001600160a01b031684611ad8565b6018546001600160a01b031663f305d7198230855f806126fd5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612763573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906127889190612bf3565b5050505050565b5f81836127af5760405162461bcd60e51b8152600401610c0b91906127bb565b505f6120cc8486612b37565b5f6020808352835180828501525f5b818110156127e6578581018301518582016040015282016127ca565b505f604082860101526040601f19601f8301168501019250505092915050565b5f805f60608486031215612818575f80fd5b505081359360208301359350604090920135919050565b6001600160a01b0381168114611760575f80fd5b5f8060408385031215612854575f80fd5b823561285f8161282f565b946020939093013593505050565b8015158114611760575f80fd5b5f806040838503121561288b575f80fd5b82356128968161282f565b915060208301356128a68161286d565b809150509250929050565b5f805f606084860312156128c3575f80fd5b83356128ce8161282f565b925060208401356128de8161282f565b929592945050506040919091013590565b5f602082840312156128ff575f80fd5b8135610dab8161286d565b5f6020828403121561291a575f80fd5b5035919050565b5f60208284031215612931575f80fd5b8135610dab8161282f565b5f8083601f84011261294c575f80fd5b50813567ffffffffffffffff811115612963575f80fd5b6020830191508360208260051b850101111561297d575f80fd5b9250929050565b5f805f8060408587031215612997575f80fd5b843567ffffffffffffffff808211156129ae575f80fd5b6129ba8883890161293c565b909650945060208701359150808211156129d2575f80fd5b506129df8782880161293c565b95989497509550505050565b5f80604083850312156129fc575f80fd5b8235612a078161282f565b915060208301356128a68161282f565b600181811c90821680612a2b57607f821691505b602082108103612a4957634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215612a94575f80fd5b8151610dab8161282f565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c4f57610c4f612ab3565b5f60018201612aeb57612aeb612ab3565b5060010190565b5f60208284031215612b02575f80fd5b8151610dab8161286d565b81810381811115610c4f57610c4f612ab3565b8082028115828204841417610c4f57610c4f612ab3565b5f82612b5157634e487b7160e01b5f52601260045260245ffd5b500490565b5f8151808452602080850194508084015f5b83811015612b8d5781516001600160a01b031687529582019590820190600101612b68565b509495945050505050565b85815284602082015260a060408201525f612bb660a0830186612b56565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f612beb6040830184612b56565b949350505050565b5f805f60608486031215612c05575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205f4ee0f12213943e5f6479ea6d4a54f6f77ed2da7c6373d81731e68ff361f24464736f6c63430008150033

Deployed Bytecode

0x608060405260043610610395575f3560e01c8063844d591c116101de578063da00097d11610108578063f1d5f5171161009d578063f872858a1161006d578063f872858a14610ac6578063f8f6329014610ae6578063f9f92be414610b05578063fb4b8e6c14610b33575f80fd5b8063f1d5f51714610a4a578063f2fde38b14610a69578063f455444614610a88578063f84ba65d14610aa7575f80fd5b8063ec28438a116100d8578063ec28438a146109d8578063ee828db3146109f7578063ef422a1814610a16578063f0cd1dac14610a35575f80fd5b8063da00097d1461094b578063dc44b6a01461096b578063dd62ed3e14610980578063e6b2603b146109c4575f80fd5b8063a5d69d1f1161017e578063c816841b1161014e578063c816841b146108d4578063c8607952146108f3578063c867d60b14610908578063d2d7ad8314610936575f80fd5b8063a5d69d1f14610862578063a9059cbb14610881578063c49b9a80146108a0578063c5d24189146108bf575f80fd5b80638b42507f116101b95780638b42507f146107e55780638da5cb5b1461081357806395d89b411461082f578063a457c2d714610843575f80fd5b8063844d591c1461079157806385261485146107b057806388790a68146107d0575f80fd5b806339509351116102bf5780635881f3ef1161025f57806375f0a8741161022f57806375f0a8741461072e5780637d1db4a514610752578063807c2d9c1461076757806382eefb431461077c575f80fd5b80635881f3ef146106a857806367243482146106c757806370a08231146106e6578063715018a61461071a575f80fd5b80634a74bb021161029a5780634a74bb02146106265780634cb80fd5146106465780635194f9bf146106655780635342acb41461067a575f80fd5b806339509351146105ba5780633b97084a146105d95780633ecad271146105f8575f80fd5b80631870517a116103355780632563ae83116103055780632563ae831461053357806327c8f835146105525780632b112e4914610585578063313ce56714610599575f80fd5b80631870517a146104c15780632198cf6c146104e057806323555d57146104ff57806323b872dd14610514575f80fd5b8063095ea7b311610370578063095ea7b314610436578063153b0d1e146104655780631694505e1461048457806318160ddd146104a3575f80fd5b806306fdde03146103a057806308733214146103ca5780630930907b146103eb575f80fd5b3661039c57005b5f80fd5b3480156103ab575f80fd5b506103b4610b52565b6040516103c191906127bb565b60405180910390f35b3480156103d5575f80fd5b506103e96103e4366004612806565b610be2565b005b3480156103f6575f80fd5b5061041e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103c1565b348015610441575f80fd5b50610455610450366004612843565b610c3f565b60405190151581526020016103c1565b348015610470575f80fd5b506103e961047f36600461287a565b610c55565b34801561048f575f80fd5b5060185461041e906001600160a01b031681565b3480156104ae575f80fd5b506014545b6040519081526020016103c1565b3480156104cc575f80fd5b506103e96104db366004612806565b610ca8565b3480156104eb575f80fd5b506103e96104fa36600461287a565b610cf6565b34801561050a575f80fd5b506104b3600e5481565b34801561051f575f80fd5b5061045561052e3660046128b1565b610d49565b34801561053e575f80fd5b506103e961054d3660046128ef565b610db2565b34801561055d575f80fd5b5061041e7f000000000000000000000000000000000000000000000000000000000000dead81565b348015610590575f80fd5b506104b3610df9565b3480156105a4575f80fd5b5060035460405160ff90911681526020016103c1565b3480156105c5575f80fd5b506104556105d4366004612843565b610e8a565b3480156105e4575f80fd5b506103e96105f336600461290a565b610ebf565b348015610603575f80fd5b50610455610612366004612921565b60086020525f908152604090205460ff1681565b348015610631575f80fd5b5060195461045590600160a81b900460ff1681565b348015610651575f80fd5b506103e9610660366004612921565b610eed565b348015610670575f80fd5b506104b360115481565b348015610685575f80fd5b50610455610694366004612921565b60076020525f908152604090205460ff1681565b3480156106b3575f80fd5b5061041e6106c2366004612921565b610f3e565b3480156106d2575f80fd5b506103e96106e1366004612984565b611248565b3480156106f1575f80fd5b506104b3610700366004612921565b6001600160a01b03165f9081526005602052604090205490565b348015610725575f80fd5b506103e96114ec565b348015610739575f80fd5b5060035461041e9061010090046001600160a01b031681565b34801561075d575f80fd5b506104b360165481565b348015610772575f80fd5b506104b360175481565b348015610787575f80fd5b506104b360135481565b34801561079c575f80fd5b506103e96107ab36600461287a565b611563565b3480156107bb575f80fd5b5060195461045590600160c01b900460ff1681565b3480156107db575f80fd5b506104b3600f5481565b3480156107f0575f80fd5b506104556107ff366004612921565b600b6020525f908152604090205460ff1681565b34801561081e575f80fd5b505f546001600160a01b031661041e565b34801561083a575f80fd5b506103b46115b6565b34801561084e575f80fd5b5061045561085d366004612843565b6115c5565b34801561086d575f80fd5b506103e961087c3660046128ef565b611612565b34801561088c575f80fd5b5061045561089b366004612843565b611659565b3480156108ab575f80fd5b506103e96108ba3660046128ef565b611665565b3480156108ca575f80fd5b506104b3600d5481565b3480156108df575f80fd5b5060195461041e906001600160a01b031681565b3480156108fe575f80fd5b506104b360105481565b348015610913575f80fd5b50610455610922366004612921565b600a6020525f908152604090205460ff1681565b348015610941575f80fd5b506104b360155481565b348015610956575f80fd5b5060195461045590600160b01b900460ff1681565b348015610976575f80fd5b506104b3600c5481565b34801561098b575f80fd5b506104b361099a3660046129eb565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b3480156109cf575f80fd5b506103e96116e6565b3480156109e3575f80fd5b506103e96109f236600461290a565b611763565b348015610a02575f80fd5b506103e9610a113660046128ef565b611791565b348015610a21575f80fd5b506103e9610a3036600461287a565b6117d8565b348015610a40575f80fd5b506104b360125481565b348015610a55575f80fd5b506103e9610a6436600461290a565b61182b565b348015610a74575f80fd5b506103e9610a83366004612921565b611859565b348015610a93575f80fd5b506103e9610aa2366004612843565b611940565b348015610ab2575f80fd5b506103e9610ac136600461287a565b6119dc565b348015610ad1575f80fd5b5060195461045590600160b81b900460ff1681565b348015610af1575f80fd5b5060045461041e906001600160a01b031681565b348015610b10575f80fd5b50610455610b1f366004612921565b60096020525f908152604090205460ff1681565b348015610b3e575f80fd5b506103e9610b4d366004612921565b611a2f565b606060018054610b6190612a17565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8d90612a17565b8015610bd85780601f10610baf57610100808354040283529160200191610bd8565b820191905f5260205f20905b815481529060010190602001808311610bbb57829003601f168201915b5050505050905090565b5f546001600160a01b03163314610c145760405162461bcd60e51b8152600401610c0b90612a4f565b60405180910390fd5b600f83905560108290556011819055610c3781610c318585611a7a565b90611a7a565b601355505050565b5f610c4b338484611ad8565b5060015b92915050565b5f546001600160a01b03163314610c7e5760405162461bcd60e51b8152600401610c0b90612a4f565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610cd15760405162461bcd60e51b8152600401610c0b90612a4f565b600c839055600d829055600e819055610cee81610c318585611a7a565b601255505050565b5f546001600160a01b03163314610d1f5760405162461bcd60e51b8152600401610c0b90612a4f565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b5f610d55848484611bfb565b50610da78433610da285604051806060016040528060288152602001612c1f602891396001600160a01b038a165f908152600660209081526040808320338452909152902054919061209d565b611ad8565b5060015b9392505050565b5f546001600160a01b03163314610ddb5760405162461bcd60e51b8152600401610c0b90612a4f565b60198054911515600160b81b0260ff60b81b19909216919091179055565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165f90815260056020526040812054610e8590610e7f610e767f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b03165f9081526005602052604090205490565b601454906120d5565b906120d5565b905090565b335f8181526006602090815260408083206001600160a01b03871684529091528120549091610c4b918590610da29086611a7a565b5f546001600160a01b03163314610ee85760405162461bcd60e51b8152600401610c0b90612a4f565b601555565b5f546001600160a01b03163314610f165760405162461bcd60e51b8152600401610c0b90612a4f565b600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b5f80546001600160a01b03163314610f685760405162461bcd60e51b8152600401610c0b90612a4f565b5f829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fa8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fcc9190612a84565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611017573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103b9190612a84565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611084573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110a89190612a84565b91506001600160a01b0382166111f857806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111189190612a84565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611163573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111879190612a84565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156111d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111f59190612a84565b91505b601980546001600160a01b038085166001600160a01b03199283168117909355601880549490911693909116929092179091555f908152600860205260409020805460ff19166001179055919050565b5f546001600160a01b031633146112715760405162461bcd60e51b8152600401610c0b90612a4f565b338382146112ba5760405162461bcd60e51b815260206004820152601660248201527508ae4e4dee474409ad2e6dac2e8c6d04098cadccee8d60531b6044820152606401610c0b565b5f805b838110156112fd578484828181106112d7576112d7612a9f565b90506020020135826112e99190612ac7565b9150806112f581612ada565b9150506112bd565b508061131d836001600160a01b03165f9081526005602052604090205490565b101561136b5760405162461bcd60e51b815260206004820152601b60248201527f4572726f723a20496e73756666696369656e74204572726f72212100000000006044820152606401610c0b565b6001600160a01b0382165f9081526005602052604090205461138d90826120d5565b6001600160a01b0383165f908152600560205260408120919091555b858110156114e3576114168585838181106113c6576113c6612a9f565b9050602002013560055f8a8a868181106113e2576113e2612a9f565b90506020020160208101906113f79190612921565b6001600160a01b0316815260208101919091526040015f205490611a7a565b60055f89898581811061142b5761142b612a9f565b90506020020160208101906114409190612921565b6001600160a01b0316815260208101919091526040015f205586868281811061146b5761146b612a9f565b90506020020160208101906114809190612921565b6001600160a01b0316836001600160a01b03165f80516020612c478339815191528787858181106114b3576114b3612a9f565b905060200201356040516114c991815260200190565b60405180910390a3806114db81612ada565b9150506113a9565b50505050505050565b5f546001600160a01b031633146115155760405162461bcd60e51b8152600401610c0b90612a4f565b5f805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b03191661dead179055565b5f546001600160a01b0316331461158c5760405162461bcd60e51b8152600401610c0b90612a4f565b6001600160a01b03919091165f908152600860205260409020805460ff1916911515919091179055565b606060028054610b6190612a17565b5f610c4b3384610da285604051806060016040528060258152602001612c6760259139335f9081526006602090815260408083206001600160a01b038d168452909152902054919061209d565b5f546001600160a01b0316331461163b5760405162461bcd60e51b8152600401610c0b90612a4f565b60198054911515600160b01b0260ff60b01b19909216919091179055565b5f610da7338484611bfb565b5f546001600160a01b0316331461168e5760405162461bcd60e51b8152600401610c0b90612a4f565b60198054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906116db90831515815260200190565b60405180910390a150565b5f546001600160a01b0316331461170f5760405162461bcd60e51b8152600401610c0b90612a4f565b6040515f90339047908381818185875af1925050503d805f811461174e576040519150601f19603f3d011682016040523d82523d5f602084013e611753565b606091505b5050905080611760575f80fd5b50565b5f546001600160a01b0316331461178c5760405162461bcd60e51b8152600401610c0b90612a4f565b601655565b5f546001600160a01b031633146117ba5760405162461bcd60e51b8152600401610c0b90612a4f565b60198054911515600160c01b0260ff60c01b19909216919091179055565b5f546001600160a01b031633146118015760405162461bcd60e51b8152600401610c0b90612a4f565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146118545760405162461bcd60e51b8152600401610c0b90612a4f565b601755565b5f546001600160a01b031633146118825760405162461bcd60e51b8152600401610c0b90612a4f565b6001600160a01b0381166118e75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c0b565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146119695760405162461bcd60e51b8152600401610c0b90612a4f565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303815f875af11580156119b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119d79190612af2565b505050565b5f546001600160a01b03163314611a055760405162461bcd60e51b8152600401610c0b90612a4f565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314611a585760405162461bcd60e51b8152600401610c0b90612a4f565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b5f80611a868385612ac7565b905083811015610dab5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c0b565b6001600160a01b038316611b3a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c0b565b6001600160a01b038216611b9b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c0b565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b038416611c605760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c0b565b6001600160a01b038316611cc25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c0b565b6001600160a01b0384165f9081526009602052604090205460ff16158015611d0257506001600160a01b0383165f9081526009602052604090205460ff16155b611d4e5760405162461bcd60e51b815260206004820152601d60248201527f426f7420456e656d7920616464726573732052657374726963746564210000006044820152606401610c0b565b601954600160a01b900460ff1615611d7257611d6b848484612116565b9050610dab565b6001600160a01b0384165f908152600b602052604090205460ff16158015611db257506001600160a01b0383165f908152600b602052604090205460ff16155b8015611dc75750601954600160c01b900460ff165b15611e2f57601654821115611e2f5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c0b565b305f9081526005602052604090205460155481108015908190611e5c5750601954600160a01b900460ff16155b8015611e8057506001600160a01b0386165f9081526008602052604090205460ff16155b8015611e955750601954600160a81b900460ff165b15611ebb57601954600160b01b900460ff1615611eb25760155491505b611ebb826121e6565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f90815260059091529190912054611f0c91869061209d565b6001600160a01b0387165f90815260056020908152604080832093909355600790529081205460ff1680611f5757506001600160a01b0386165f9081526007602052604090205460ff165b611f6b57611f66878787612387565b611f6d565b845b601954909150600160b81b900460ff168015611fa157506001600160a01b0386165f908152600a602052604090205460ff16155b1561202757601754611fcb82610c31896001600160a01b03165f9081526005602052604090205490565b11156120275760405162461bcd60e51b815260206004820152602560248201527f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c696044820152646d6974212160d81b6064820152608401610c0b565b6001600160a01b0386165f908152600560205260409020546120499082611a7a565b6001600160a01b038088165f8181526005602052604090819020939093559151908916905f80516020612c47833981519152906120899085815260200190565b60405180910390a360019350505050610dab565b5f81848411156120c05760405162461bcd60e51b8152600401610c0b91906127bb565b505f6120cc8486612b0d565b95945050505050565b5f610dab83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061209d565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f90815260059091529182205461216691849061209d565b6001600160a01b038086165f9081526005602052604080822093909355908516815220546121949083611a7a565b6001600160a01b038085165f8181526005602052604090819020939093559151908616905f80516020612c47833981519152906121d49086815260200190565b60405180910390a35060019392505050565b6019805460ff60a01b1916600160a01b1790556013546012545f9161220b9190611a7a565b90505f612225600f54600c54611a7a90919063ffffffff16565b90505f61223f601054600d54611a7a90919063ffffffff16565b90505f612259600261225386818988612476565b906124f4565b90505f61226686836120d5565b90504761227282612535565b5f61227d47836120d5565b90505f61229561228e8860026124f4565b89906120d5565b90505f6122a960026122538481878d612476565b90505f6122ba83612253868b612476565b90505f6122cb82610e7f87866120d5565b90508115612310576003546040516101009091046001600160a01b0316906108fc8415029084905f818181858888f1935050505015801561230e573d5f803e3d5ffd5b505b801561234f576004546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561234d573d5f803e3d5ffd5b505b5f8311801561235d57505f88115b1561236c5761236c88846126be565b50506019805460ff60a01b1916905550505050505050505050565b6001600160a01b0383165f90815260086020526040812054819060ff16156123ca576123c360646122536012548661247690919063ffffffff16565b9050612407565b6001600160a01b0384165f9081526008602052604090205460ff16156124075761240460646122536013548661247690919063ffffffff16565b90505b801561246c57305f908152600560205260409020546124269082611a7a565b305f81815260056020526040908190209290925590516001600160a01b038716905f80516020612c47833981519152906124639085815260200190565b60405180910390a35b6120cc83826120d5565b5f825f0361248557505f610c4f565b5f6124908385612b20565b90508261249d8583612b37565b14610dab5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c0b565b5f610dab83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061278f565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061256857612568612a9f565b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156125bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125e39190612a84565b816001815181106125f6576125f6612a9f565b6001600160a01b03928316602091820292909201015260185461261c9130911684611ad8565b60185460405163791ac94760e01b81526001600160a01b039091169063791ac947906126549085905f90869030904290600401612b98565b5f604051808303815f87803b15801561266b575f80fd5b505af115801561267d573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516126b2929190612bd3565b60405180910390a15050565b6018546126d69030906001600160a01b031684611ad8565b6018546001600160a01b031663f305d7198230855f806126fd5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612763573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906127889190612bf3565b5050505050565b5f81836127af5760405162461bcd60e51b8152600401610c0b91906127bb565b505f6120cc8486612b37565b5f6020808352835180828501525f5b818110156127e6578581018301518582016040015282016127ca565b505f604082860101526040601f19601f8301168501019250505092915050565b5f805f60608486031215612818575f80fd5b505081359360208301359350604090920135919050565b6001600160a01b0381168114611760575f80fd5b5f8060408385031215612854575f80fd5b823561285f8161282f565b946020939093013593505050565b8015158114611760575f80fd5b5f806040838503121561288b575f80fd5b82356128968161282f565b915060208301356128a68161286d565b809150509250929050565b5f805f606084860312156128c3575f80fd5b83356128ce8161282f565b925060208401356128de8161282f565b929592945050506040919091013590565b5f602082840312156128ff575f80fd5b8135610dab8161286d565b5f6020828403121561291a575f80fd5b5035919050565b5f60208284031215612931575f80fd5b8135610dab8161282f565b5f8083601f84011261294c575f80fd5b50813567ffffffffffffffff811115612963575f80fd5b6020830191508360208260051b850101111561297d575f80fd5b9250929050565b5f805f8060408587031215612997575f80fd5b843567ffffffffffffffff808211156129ae575f80fd5b6129ba8883890161293c565b909650945060208701359150808211156129d2575f80fd5b506129df8782880161293c565b95989497509550505050565b5f80604083850312156129fc575f80fd5b8235612a078161282f565b915060208301356128a68161282f565b600181811c90821680612a2b57607f821691505b602082108103612a4957634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215612a94575f80fd5b8151610dab8161282f565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c4f57610c4f612ab3565b5f60018201612aeb57612aeb612ab3565b5060010190565b5f60208284031215612b02575f80fd5b8151610dab8161286d565b81810381811115610c4f57610c4f612ab3565b8082028115828204841417610c4f57610c4f612ab3565b5f82612b5157634e487b7160e01b5f52601260045260245ffd5b500490565b5f8151808452602080850194508084015f5b83811015612b8d5781516001600160a01b031687529582019590820190600101612b68565b509495945050505050565b85815284602082015260a060408201525f612bb660a0830186612b56565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f612beb6040830184612b56565b949350505050565b5f805f60608486031215612c05575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205f4ee0f12213943e5f6479ea6d4a54f6f77ed2da7c6373d81731e68ff361f24464736f6c63430008150033

Deployed Bytecode Sourcemap

11536:16260:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15456:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20317:317;;;;;;;;;;-1:-1:-1;20317:317:0;;;;;:::i;:::-;;:::i;:::-;;12067:81;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1052:32:1;;;1034:51;;1022:2;1007:18;12067:81:0;888:203:1;16622:161:0;;;;;;;;;;-1:-1:-1;16622:161:0;;;;;:::i;:::-;;:::i;:::-;;;1717:14:1;;1710:22;1692:41;;1680:2;1665:18;16622:161:0;1552:187:1;19055:113:0;;;;;;;;;;-1:-1:-1;19055:113:0;;;;;:::i;:::-;;:::i;13178:41::-;;;;;;;;;;-1:-1:-1;13178:41:0;;;;-1:-1:-1;;;;;13178:41:0;;;15733:100;;;;;;;;;;-1:-1:-1;15813:12:0;;15733:100;;;2635:25:1;;;2623:2;2608:18;15733:100:0;2489:177:1;20000:309:0;;;;;;;;;;-1:-1:-1;20000:309:0;;;;;:::i;:::-;;:::i;17555:135::-;;;;;;;;;;-1:-1:-1;17555:135:0;;;;;:::i;:::-;;:::i;12642:35::-;;;;;;;;;;;;;;;;20911:313;;;;;;;;;;-1:-1:-1;20911:313:0;;;;;:::i;:::-;;:::i;17932:113::-;;;;;;;;;;-1:-1:-1;17932:113:0;;;;;:::i;:::-;;:::i;11979:81::-;;;;;;;;;;;;;;;18891:156;;;;;;;;;;;;;:::i;15642:83::-;;;;;;;;;;-1:-1:-1;15708:9:0;;15642:83;;15708:9;;;;3520:36:1;;3508:2;3493:18;15642:83:0;3378:184:1;16119:218:0;;;;;;;;;;-1:-1:-1;16119:218:0;;;;;:::i;:::-;;:::i;18163:124::-;;;;;;;;;;-1:-1:-1;18163:124:0;;;;;:::i;:::-;;:::i;12341:45::-;;;;;;;;;;-1:-1:-1;12341:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13293:40;;;;;;;;;;-1:-1:-1;13293:40:0;;;;-1:-1:-1;;;13293:40:0;;;;;;18295:132;;;;;;;;;;-1:-1:-1;18295:132:0;;;;;:::i;:::-;;:::i;12776:36::-;;;;;;;;;;;;;;;;12284:50;;;;;;;;;;-1:-1:-1;12284:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19314:678;;;;;;;;;;-1:-1:-1;19314:678:0;;;;;:::i;:::-;;:::i;27088:697::-;;;;;;;;;;-1:-1:-1;27088:697:0;;;;;:::i;:::-;;:::i;15841:119::-;;;;;;;;;;-1:-1:-1;15841:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;15934:18:0;15907:7;15934:18;;;:9;:18;;;;;;;15841:119;3213:230;;;;;;;;;;;;;:::i;11748:92::-;;;;;;;;;;-1:-1:-1;11748:92:0;;;;;;;-1:-1:-1;;;;;11748:92:0;;;13043:59;;;;;;;;;;;;;;;;13109:58;;;;;;;;;;;;;;;;12860:33;;;;;;;;;;;;;;;;17136:129;;;;;;;;;;-1:-1:-1;17136:129:0;;;;;:::i;:::-;;:::i;13436:41::-;;;;;;;;;;-1:-1:-1;13436:41:0;;;;-1:-1:-1;;;13436:41:0;;;;;;12690:36;;;;;;;;;;;;;;;;12501:48;;;;;;;;;;-1:-1:-1;12501:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2988:79;;;;;;;;;;-1:-1:-1;3026:7:0;3053:6;-1:-1:-1;;;;;3053:6:0;2988:79;;15547:87;;;;;;;;;;;;;:::i;16345:269::-;;;;;;;;;;-1:-1:-1;16345:269:0;;;;;:::i;:::-;;:::i;18754:125::-;;;;;;;;;;-1:-1:-1;18754:125:0;;;;;:::i;:::-;;:::i;20736:167::-;;;;;;;;;;-1:-1:-1;20736:167:0;;;;;:::i;:::-;;:::i;18575:171::-;;;;;;;;;;-1:-1:-1;18575:171:0;;;;;:::i;:::-;;:::i;12600:35::-;;;;;;;;;;;;;;;;13226:26;;;;;;;;;;-1:-1:-1;13226:26:0;;;;-1:-1:-1;;;;;13226:26:0;;;12733:36;;;;;;;;;;;;;;;;12442:52;;;;;;;;;;-1:-1:-1;12442:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12965:69;;;;;;;;;;;;;;;;13340:45;;;;;;;;;;-1:-1:-1;13340:45:0;;;;-1:-1:-1;;;13340:45:0;;;;;;12558:35;;;;;;;;;;;;;;;;15968:143;;;;;;;;;;-1:-1:-1;15968:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;16076:18:0;;;16049:7;16076:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;15968:143;23273:154;;;;;;;;;;;;;:::i;17813:111::-;;;;;;;;;;-1:-1:-1;17813:111:0;;;;;:::i;:::-;;:::i;17698:107::-;;;;;;;;;;-1:-1:-1;17698:107:0;;;;;:::i;:::-;;:::i;17273:135::-;;;;;;;;;;-1:-1:-1;17273:135:0;;;;;:::i;:::-;;:::i;12821:32::-;;;;;;;;;;;;;;;;18053:102;;;;;;;;;;-1:-1:-1;18053:102:0;;;;;:::i;:::-;;:::i;3451:244::-;;;;;;;;;;-1:-1:-1;3451:244:0;;;;;:::i;:::-;;:::i;23126:139::-;;;;;;;;;;-1:-1:-1;23126:139:0;;;;;:::i;:::-;;:::i;17416:127::-;;;;;;;;;;-1:-1:-1;17416:127:0;;;;;:::i;:::-;;:::i;13394:35::-;;;;;;;;;;-1:-1:-1;13394:35:0;;;;-1:-1:-1;;;13394:35:0;;;;;;11848:92;;;;;;;;;;-1:-1:-1;11848:92:0;;;;-1:-1:-1;;;;;11848:92:0;;;12393:42;;;;;;;;;;-1:-1:-1;12393:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18435:132;;;;;;;;;;-1:-1:-1;18435:132:0;;;;;:::i;:::-;;:::i;15456:83::-;15493:13;15526:5;15519:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15456:83;:::o;20317:317::-;3122:6;;-1:-1:-1;;;;;3122:6:0;294:10;3122:22;3114:67;;;;-1:-1:-1;;;3114:67:0;;;;;;;:::i;:::-;;;;;;;;;20419:17:::1;:30:::0;;;20460:17:::1;:30:::0;;;20501:17:::1;:30:::0;;;20563:63:::1;20521:10:::0;20563:40:::1;20439:10:::0;20480;20563:21:::1;:40::i;:::-;:44:::0;::::1;:63::i;:::-;20542:18;:84:::0;-1:-1:-1;;;20317:317:0:o;16622:161::-;16697:4;16714:39;294:10;16737:7;16746:6;16714:8;:39::i;:::-;-1:-1:-1;16771:4:0;16622:161;;;;;:::o;19055:113::-;3122:6;;-1:-1:-1;;;;;3122:6:0;294:10;3122:22;3114:67;;;;-1:-1:-1;;;3114:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19135:15:0;;;::::1;;::::0;;;:9:::1;:15;::::0;;;;:25;;-1:-1:-1;;19135:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19055:113::o;20000:309::-;3122:6;;-1:-1:-1;;;;;3122:6:0;294:10;3122:22;3114:67;;;;-1:-1:-1;;;3114:67:0;;;;;;;:::i;:::-;20101:16:::1;:29:::0;;;20141:16:::1;:29:::0;;;20181:16:::1;:29:::0;;;20241:60:::1;20200:10:::0;20241:38:::1;20120:10:::0;20160;20241:20:::1;:38::i;:60::-;20221:17;:80:::0;-1:-1:-1;;;20000:309:0:o;17555:135::-;3122:6;;-1:-1:-1;;;;;3122:6:0;294:10;3122:22;3114:67;;;;-1:-1:-1;;;3114:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17646:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;17646:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17555:135::o;20911:313::-;21009:4;21026:36;21036:6;21044:9;21055:6;21026:9;:36::i;:::-;-1:-1:-1;21073:121:0;21082:6;294:10;21104:89;21142:6;21104:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21104:19:0;;;;;;:11;:19;;;;;;;;294:10;21104:33;;;;;;;;;;:37;:89::i;:::-;21073:8;:121::i;:::-;-1:-1:-1;21212:4:0;20911:313;;;;;;:::o;17932:113::-;3122:6;;-1:-1:-1;;;;;3122:6:0;294:10;3122:22;3114:67;;;;-1:-1:-1;;;3114:67:0;;;;;;;:::i;:::-;18010:16:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;18010:27:0::1;-1:-1:-1::0;;;;18010:27:0;;::::1;::::0;;;::::1;::::0;;17932:113::o;18891:156::-;-1:-1:-1;;;;;19026:11:0;15934:18;18944:7;15934:18;;;:9;:18;;;;;;18971:68;;:40;18988:22;18998:11;-1:-1:-1;;;;;15934:18:0;15907:7;15934:18;;;:9;:18;;;;;;;15841:119;18988:22;18971:12;;;:16;:40::i;:::-;:44;;:68::i;:::-;18964:75;;18891:156;:::o;16119:218::-;294:10;16207:4;16256:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16256:34:0;;;;;;;;;;16207:4;;16224:83;;16247:7;;16256:50;;16295:10;16256:38;:50::i;18163:124::-;3122:6;;-1:-1:-1;;;;;3122:6:0;294:10;3122:22;3114:67;;;;-1:-1:-1;;;3114:67:0;;;;;;;:::i;:::-;18245:23:::1;:34:::0;18163:124::o;18295:132::-;3122:6;;-1:-1:-1;;;;;3122:6:0;294:10;3122:22;3114:67;;;;-1:-1:-1;;;3114:67:0;;;;;;;:::i;:::-;18382:15:::1;:37:::0;;-1:-1:-1;;;;;18382:37:0;;::::1;;;-1:-1:-1::0;;;;;;18382:37:0;;::::1;::::0;;;::::1;::::0;;18295:132::o;19314:678::-;19394:22;3122:6;;-1:-1:-1;;;;;3122:6:0;294:10;3122:22;3114:67;;;;-1:-1:-1;;;3114:67:0;;;;;;;:::i;:::-;19431:35:::1;19488:16;19431:74;;19554:16;-1:-1:-1::0;;;;;19554:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19536:53:0::1;;19598:4;19605:16;-1:-1:-1::0;;;;;19605:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19536:93;::::0;-1:-1:-1;;;;;;19536:93:0::1;::::0;;;;;;-1:-1:-1;;;;;7003:15:1;;;19536:93:0::1;::::0;::::1;6985:34:1::0;7055:15;;7035:18;;;7028:43;6920:18;;19536:93:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19519:110:::0;-1:-1:-1;;;;;;19645:28:0;::::1;19642:201;;19735:16;-1:-1:-1::0;;;;;19735:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19717:74:0::1;;19800:4;19807:16;-1:-1:-1::0;;;;;19807:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19717:114;::::0;-1:-1:-1;;;;;;19717:114:0::1;::::0;;;;;;-1:-1:-1;;;;;7003:15:1;;;19717:114:0::1;::::0;::::1;6985:34:1::0;7055:15;;7035:18;;;7028:43;6920:18;;19717:114:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19700:131;;19642:201;19855:11;:28:::0;;-1:-1:-1;;;;;19855:28:0;;::::1;-1:-1:-1::0;;;;;;19855:28:0;;::::1;::::0;::::1;::::0;;;19895:15:::1;:34:::0;;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;19855:11:::1;19943:34:::0;;;:12:::1;:34;::::0;;;;:41;;-1:-1:-1;;19943:41:0::1;19855:28:::0;19943:41:::1;::::0;;19869:14;19314:678;-1:-1:-1;19314:678:0:o;27088:697::-;3122:6;;-1:-1:-1;;;;;3122:6:0;294:10;3122:22;3114:67;;;;-1:-1:-1;;;3114:67:0;;;;;;;:::i;:::-;27206:10:::1;27235:33:::0;;::::1;27227:67;;;::::0;-1:-1:-1;;;27227:67:0;;7284:2:1;27227:67:0::1;::::0;::::1;7266:21:1::0;7323:2;7303:18;;;7296:30;-1:-1:-1;;;7342:18:1;;;7335:52;7404:18;;27227:67:0::1;7082:346:1::0;27227:67:0::1;27305:15;::::0;27331:92:::1;27347:18:::0;;::::1;27331:92;;;27401:7;;27409:1;27401:10;;;;;;;:::i;:::-;;;;;;;27387:24;;;;;:::i;:::-;::::0;-1:-1:-1;27367:3:0;::::1;::::0;::::1;:::i;:::-;;;;27331:92;;;;27463:10;27441:18;27451:7;-1:-1:-1::0;;;;;15934:18:0;15907:7;15934:18;;;:9;:18;;;;;;;15841:119;27441:18:::1;:32;;27433:71;;;::::0;-1:-1:-1;;;27433:71:0;;8169:2:1;27433:71:0::1;::::0;::::1;8151:21:1::0;8208:2;8188:18;;;8181:30;8247:29;8227:18;;;8220:57;8294:18;;27433:71:0::1;7967:351:1::0;27433:71:0::1;-1:-1:-1::0;;;;;27536:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;:34:::1;::::0;27559:10;27536:22:::1;:34::i;:::-;-1:-1:-1::0;;;;;27515:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;:55;;;;27582:194:::1;27598:19:::0;;::::1;27582:194;;;27664:38;27691:7;;27699:1;27691:10;;;;;;;:::i;:::-;;;;;;;27664:9;:22;27674:8;;27683:1;27674:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27664:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;27664:22:0;;;:26:::1;:38::i;:::-;27639:9;:22;27649:8;;27658:1;27649:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27639:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;27639:22:0;:63;27740:8;;27749:1;27740:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27722:42:0::1;27731:7;-1:-1:-1::0;;;;;27722:42:0::1;-1:-1:-1::0;;;;;;;;;;;27753:7:0::1;;27761:1;27753:10;;;;;;;:::i;:::-;;;;;;;27722:42;;;;2635:25:1::0;;2623:2;2608:18;;2489:177;27722:42:0::1;;;;;;;;27619:3:::0;::::1;::::0;::::1;:::i;:::-;;;;27582:194;;;;27177:608;;27088:697:::0;;;;:::o;3213:230::-;3122:6;;-1:-1:-1;;;;;3122:6:0;294:10;3122:22;3114:67;;;;-1:-1:-1;;;3114:67:0;;;;;;;:::i;:::-;3304:6:::1;::::0;;3283:81:::1;::::0;3320:42:::1;::::0;-1:-1:-1;;;;;3304:6:0;;::::1;::::0;3283:81:::1;::::0;::::1;3375:6;:60:::0;;-1:-1:-1;;;;;;3375:60:0::1;3392:42;3375:60;::::0;;3213:230::o;17136:129::-;3122:6;;-1:-1:-1;;;;;3122:6:0;294:10;3122:22;3114:67;;;;-1:-1:-1;;;3114:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17225:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:32;;-1:-1:-1;;17225:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17136:129::o;15547:87::-;15586:13;15619:7;15612:14;;;;;:::i;16345:269::-;16438:4;16455:129;294:10;16478:7;16487:96;16526:15;16487:96;;;;;;;;;;;;;;;;;294:10;16487:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16487:34:0;;;;;;;;;;;;:38;:96::i;18754:125::-;3122:6;;-1:-1:-1;;;;;3122:6:0;294:10;3122:22;3114:67;;;;-1:-1:-1;;;3114:67:0;;;;;;;:::i;:::-;18835:25:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;18835:36:0::1;-1:-1:-1::0;;;;18835:36:0;;::::1;::::0;;;::::1;::::0;;18754:125::o;20736:167::-;20814:4;20831:42;294:10;20855:9;20866:6;20831:9;:42::i;18575:171::-;3122:6;;-1:-1:-1;;;;;3122:6:0;294:10;3122:22;3114:67;;;;-1:-1:-1;;;3114:67:0;;;;;;;:::i;:::-;18652:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;18652:32:0::1;-1:-1:-1::0;;;;18652:32:0;;::::1;;::::0;;18700:38:::1;::::0;::::1;::::0;::::1;::::0;18676:8;1717:14:1;1710:22;1692:41;;1680:2;1665:18;;1552:187;18700:38:0::1;;;;;;;;18575:171:::0;:::o;23273:154::-;3122:6;;-1:-1:-1;;;;;3122:6:0;294:10;3122:22;3114:67;;;;-1:-1:-1;;;3114:67:0;;;;;;;:::i;:::-;23339:58:::1;::::0;23327:7:::1;::::0;23347:10:::1;::::0;23371:21:::1;::::0;23327:7;23339:58;23327:7;23339:58;23371:21;23347:10;23339:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23326:71;;;23416:2;23408:11;;;::::0;::::1;;23315:112;23273:154::o:0;17813:111::-;3122:6;;-1:-1:-1;;;;;3122:6:0;294:10;3122:22;3114:67;;;;-1:-1:-1;;;3114:67:0;;;;;;;:::i;:::-;17890:12:::1;:26:::0;17813:111::o;17698:107::-;3122:6;;-1:-1:-1;;;;;3122:6:0;294:10;3122:22;3114:67;;;;-1:-1:-1;;;3114:67:0;;;;;;;:::i;:::-;17765:22:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;17765:32:0::1;-1:-1:-1::0;;;;17765:32:0;;::::1;::::0;;;::::1;::::0;;17698:107::o;17273:135::-;3122:6;;-1:-1:-1;;;;;3122:6:0;294:10;3122:22;3114:67;;;;-1:-1:-1;;;3114:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17363:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:37;;-1:-1:-1;;17363:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17273:135::o;18053:102::-;3122:6;;-1:-1:-1;;;;;3122:6:0;294:10;3122:22;3114:67;;;;-1:-1:-1;;;3114:67:0;;;;;;;:::i;:::-;18125:10:::1;:22:::0;18053:102::o;3451:244::-;3122:6;;-1:-1:-1;;;;;3122:6:0;294:10;3122:22;3114:67;;;;-1:-1:-1;;;3114:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3540:22:0;::::1;3532:73;;;::::0;-1:-1:-1;;;3532:73:0;;8735:2:1;3532:73:0::1;::::0;::::1;8717:21:1::0;8774:2;8754:18;;;8747:30;8813:34;8793:18;;;8786:62;-1:-1:-1;;;8864:18:1;;;8857:36;8910:19;;3532:73:0::1;8533:402:1::0;3532:73:0::1;3642:6;::::0;;3621:38:::1;::::0;-1:-1:-1;;;;;3621:38:0;;::::1;::::0;3642:6;::::1;::::0;3621:38:::1;::::0;::::1;3670:6;:17:::0;;-1:-1:-1;;;;;;3670:17:0::1;-1:-1:-1::0;;;;;3670:17:0;;;::::1;::::0;;;::::1;::::0;;3451:244::o;23126:139::-;3122:6;;-1:-1:-1;;;;;3122:6:0;294:10;3122:22;3114:67;;;;-1:-1:-1;;;3114:67:0;;;;;;;:::i;:::-;23214:43:::1;::::0;-1:-1:-1;;;23214:43:0;;23238:10:::1;23214:43;::::0;::::1;9114:51:1::0;9181:18;;;9174:34;;;-1:-1:-1;;;;;23214:23:0;::::1;::::0;::::1;::::0;9087:18:1;;23214:43:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23126:139:::0;;:::o;17416:127::-;3122:6;;-1:-1:-1;;;;;3122:6:0;294:10;3122:22;3114:67;;;;-1:-1:-1;;;3114:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17503:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;17503:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17416:127::o;18435:132::-;3122:6;;-1:-1:-1;;;;;3122:6:0;294:10;3122:22;3114:67;;;;-1:-1:-1;;;3114:67:0;;;;;;;:::i;:::-;18522:15:::1;:37:::0;;-1:-1:-1;;;;;;18522:37:0::1;-1:-1:-1::0;;;;;18522:37:0;;;::::1;::::0;;;::::1;::::0;;18435:132::o;1140:181::-;1198:7;;1230:5;1234:1;1230;:5;:::i;:::-;1218:17;;1259:1;1254;:6;;1246:46;;;;-1:-1:-1;;;1246:46:0;;9671:2:1;1246:46:0;;;9653:21:1;9710:2;9690:18;;;9683:30;9749:29;9729:18;;;9722:57;9796:18;;1246:46:0;9469:351:1;16791:337:0;-1:-1:-1;;;;;16884:19:0;;16876:68;;;;-1:-1:-1;;;16876:68:0;;10027:2:1;16876:68:0;;;10009:21:1;10066:2;10046:18;;;10039:30;10105:34;10085:18;;;10078:62;-1:-1:-1;;;10156:18:1;;;10149:34;10200:19;;16876:68:0;9825:400:1;16876:68:0;-1:-1:-1;;;;;16963:21:0;;16955:68;;;;-1:-1:-1;;;16955:68:0;;10432:2:1;16955:68:0;;;10414:21:1;10471:2;10451:18;;;10444:30;10510:34;10490:18;;;10483:62;-1:-1:-1;;;10561:18:1;;;10554:32;10603:19;;16955:68:0;10230:398:1;16955:68:0;-1:-1:-1;;;;;17036:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17088:32;;2635:25:1;;;17088:32:0;;2608:18:1;17088:32:0;;;;;;;16791:337;;;:::o;21232:1886::-;21319:4;-1:-1:-1;;;;;21346:20:0;;21338:70;;;;-1:-1:-1;;;21338:70:0;;10835:2:1;21338:70:0;;;10817:21:1;10874:2;10854:18;;;10847:30;10913:34;10893:18;;;10886:62;-1:-1:-1;;;10964:18:1;;;10957:35;11009:19;;21338:70:0;10633:401:1;21338:70:0;-1:-1:-1;;;;;21427:23:0;;21419:71;;;;-1:-1:-1;;;21419:71:0;;11241:2:1;21419:71:0;;;11223:21:1;11280:2;11260:18;;;11253:30;11319:34;11299:18;;;11292:62;-1:-1:-1;;;11370:18:1;;;11363:33;11413:19;;21419:71:0;11039:399:1;21419:71:0;-1:-1:-1;;;;;21510:17:0;;;;;;:9;:17;;;;;;;;21509:18;:43;;;;-1:-1:-1;;;;;;21532:20:0;;;;;;:9;:20;;;;;;;;21531:21;21509:43;21501:85;;;;-1:-1:-1;;;21501:85:0;;11645:2:1;21501:85:0;;;11627:21:1;11684:2;11664:18;;;11657:30;11723:31;11703:18;;;11696:59;11772:18;;21501:85:0;11443:353:1;21501:85:0;21602:16;;-1:-1:-1;;;21602:16:0;;;;21599:1502;;;21652:41;21667:6;21675:9;21686:6;21652:14;:41::i;:::-;21645:48;;;;21599:1502;-1:-1:-1;;;;;21751:23:0;;;;;;:15;:23;;;;;;;;21750:24;:55;;;;-1:-1:-1;;;;;;21779:26:0;;;;;;:15;:26;;;;;;;;21778:27;21750:55;:81;;;;-1:-1:-1;21809:22:0;;-1:-1:-1;;;21809:22:0;;;;21750:81;21747:196;;;21870:12;;21860:6;:22;;21852:75;;;;-1:-1:-1;;;21852:75:0;;12003:2:1;21852:75:0;;;11985:21:1;12042:2;12022:18;;;12015:30;12081:34;12061:18;;;12054:62;-1:-1:-1;;;12132:18:1;;;12125:38;12180:19;;21852:75:0;11801:404:1;21852:75:0;22008:4;21959:28;15934:18;;;:9;:18;;;;;;22084:23;;22060:47;;;;;;;22140:44;;-1:-1:-1;22168:16:0;;-1:-1:-1;;;22168:16:0;;;;22167:17;22140:44;:69;;;;-1:-1:-1;;;;;;22189:20:0;;;;;;:12;:20;;;;;;;;22188:21;22140:69;:94;;;;-1:-1:-1;22213:21:0;;-1:-1:-1;;;22213:21:0;;;;22140:94;22136:305;;;22272:25;;-1:-1:-1;;;22272:25:0;;;;22269:97;;;22343:23;;22320:46;;22269:97;22385:36;22400:20;22385:14;:36::i;:::-;22477:53;;;;;;;;;;;-1:-1:-1;;;22477:53:0;;;;;;;;-1:-1:-1;;;;;22477:17:0;;-1:-1:-1;22477:17:0;;;:9;:17;;;;;;;;:53;;22499:6;;22477:21;:53::i;:::-;-1:-1:-1;;;;;22457:17:0;;;;;;:9;:17;;;;;;;;:73;;;;22570:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;22599:28:0;;;;;;:17;:28;;;;;;;;22570:57;22569:148;;22683:34;22691:6;22699:9;22710:6;22683:7;:34::i;:::-;22569:148;;;22674:6;22569:148;22737:16;;22547:170;;-1:-1:-1;;;;22737:16:0;;;;:51;;;;-1:-1:-1;;;;;;22758:30:0;;;;;;:19;:30;;;;;;;;22757:31;22737:51;22734:191;;;22858:10;;22817:37;22842:11;22817:20;22827:9;-1:-1:-1;;;;;15934:18:0;15907:7;15934:18;;;:9;:18;;;;;;;15841:119;22817:37;:51;;22809:100;;;;-1:-1:-1;;;22809:100:0;;12412:2:1;22809:100:0;;;12394:21:1;12451:2;12431:18;;;12424:30;12490:34;12470:18;;;12463:62;-1:-1:-1;;;12541:18:1;;;12534:35;12586:19;;22809:100:0;12210:401:1;22809:100:0;-1:-1:-1;;;;;22964:20:0;;;;;;:9;:20;;;;;;:37;;22989:11;22964:24;:37::i;:::-;-1:-1:-1;;;;;22941:20:0;;;;;;;:9;:20;;;;;;;:60;;;;23023:40;;;;;;-1:-1:-1;;;;;;;;;;;23023:40:0;;;23051:11;2635:25:1;;2623:2;2608:18;;2489:177;23023:40:0;;;;;;;;23085:4;23078:11;;;;;;;1473:192;1559:7;1595:12;1587:6;;;;1579:29;;;;-1:-1:-1;;;1579:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1619:9:0;1631:5;1635:1;1631;:5;:::i;:::-;1619:17;1473:192;-1:-1:-1;;;;;1473:192:0:o;1329:136::-;1387:7;1414:43;1418:1;1421;1414:43;;;;;;;;;;;;;;;;;:3;:43::i;23435:330::-;23565:53;;;;;;;;;;;-1:-1:-1;;;23565:53:0;;;;;;;;-1:-1:-1;;;;;23565:17:0;;23528:4;23565:17;;;:9;:17;;;;;;;:53;;23587:6;;23565:21;:53::i;:::-;-1:-1:-1;;;;;23545:17:0;;;;;;;:9;:17;;;;;;:73;;;;23652:20;;;;;;;:32;;23677:6;23652:24;:32::i;:::-;-1:-1:-1;;;;;23629:20:0;;;;;;;:9;:20;;;;;;;:55;;;;23700:35;;;;;;-1:-1:-1;;;;;;;;;;;23700:35:0;;;23728:6;2635:25:1;;2623:2;2608:18;;2489:177;23700:35:0;;;;;;;;-1:-1:-1;23753:4:0;23435:330;;;;;:::o;23773:1449::-;13902:16;:23;;-1:-1:-1;;;;13902:23:0;-1:-1:-1;;;13902:23:0;;;23891:18:::1;::::0;23869:17:::1;::::0;13902:23;;23869:41:::1;::::0;:17;:21:::1;:41::i;:::-;23847:63;;23923:22;23948:39;23969:17;;23948:16;;:20;;:39;;;;:::i;:::-;23923:64;;23998:22;24023:39;24044:17;;24023:16;;:20;;:39;;;;:::i;:::-;23998:64:::0;-1:-1:-1;24161:18:0::1;24182:51;24231:1;24182:44;24214:11:::0;24182:44;:7;24194:14;24182:11:::1;:27::i;:::-;:31:::0;::::1;:44::i;:51::-;24161:72:::0;-1:-1:-1;24244:20:0::1;24267:23;:7:::0;24161:72;24267:11:::1;:23::i;:::-;24244:46:::0;-1:-1:-1;24329:21:0::1;24361:30;24244:46:::0;24361:16:::1;:30::i;:::-;24402:23;24429:41;:21;24455:14:::0;24429:25:::1;:41::i;:::-;24402:68:::0;-1:-1:-1;24483:19:0::1;24505:38;24521:21;:14:::0;24540:1:::1;24521:18;:21::i;:::-;24505:11:::0;;:15:::1;:38::i;:::-;24483:60:::0;-1:-1:-1;24556:26:0::1;24585:59;24642:1;24585:52;24483:60:::0;24585:52;:15;24605:14;24585:19:::1;:35::i;:59::-;24556:88:::0;-1:-1:-1;24655:26:0::1;24684:52;24724:11:::0;24684:35:::1;:15:::0;24704:14;24684:19:::1;:35::i;:52::-;24655:81:::0;-1:-1:-1;24747:26:0::1;24776:63;24655:81:::0;24776:39:::1;:15:::0;24796:18;24776:19:::1;:39::i;:63::-;24747:92:::0;-1:-1:-1;24855:22:0;;24852:107:::1;;24902:15;::::0;24894:53:::1;::::0;24902:15:::1;::::0;;::::1;-1:-1:-1::0;;;;;24902:15:0::1;::::0;24894:53:::1;::::0;::::1;;::::0;;;::::1;::::0;;;;24902:15;24894:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;24852:107;24974:22:::0;;24971:107:::1;;25021:15;::::0;25013:53:::1;::::0;-1:-1:-1;;;;;25021:15:0;;::::1;::::0;25013:53;::::1;;;::::0;25047:18;;25021:15:::1;25013:53:::0;25021:15;25013:53;25047:18;25021:15;25013:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;24971:107;25123:1;25102:18;:22;:40;;;;;25141:1;25128:10;:14;25102:40;25099:116;;;25159:44;25172:10;25184:18;25159:12;:44::i;:::-;-1:-1:-1::0;;13948:16:0;:24;;-1:-1:-1;;;;13948:24:0;;;-1:-1:-1;;;;;;;;;;23773:1449:0:o;26429:622::-;-1:-1:-1;;;;;26590:20:0;;26515:7;26590:20;;;:12;:20;;;;;;26515:7;;26590:20;;26587:223;;;26639:38;26673:3;26639:29;26650:17;;26639:6;:10;;:29;;;;:::i;:38::-;26627:50;;26587:223;;;-1:-1:-1;;;;;26707:23:0;;;;;;:12;:23;;;;;;;;26704:106;;;26759:39;26794:3;26759:30;26770:18;;26759:6;:10;;:30;;;;:::i;:39::-;26747:51;;26704:106;26833:13;;26830:173;;26908:4;26890:24;;;;:9;:24;;;;;;:39;;26919:9;26890:28;:39::i;:::-;26881:4;26863:24;;;;:9;:24;;;;;;;:66;;;;26949:42;;-1:-1:-1;;;;;26949:42:0;;;-1:-1:-1;;;;;;;;;;;26949:42:0;;;26981:9;2635:25:1;;2623:2;2608:18;;2489:177;26949:42:0;;;;;;;;26830:173;27022:21;:6;27033:9;27022:10;:21::i;1673:250::-;1731:7;1755:1;1760;1755:6;1751:47;;-1:-1:-1;1785:1:0;1778:8;;1751:47;1810:9;1822:5;1826:1;1822;:5;:::i;:::-;1810:17;-1:-1:-1;1855:1:0;1846:5;1850:1;1810:17;1846:5;:::i;:::-;:10;1838:56;;;;-1:-1:-1;;;1838:56:0;;13346:2:1;1838:56:0;;;13328:21:1;13385:2;13365:18;;;13358:30;13424:34;13404:18;;;13397:62;-1:-1:-1;;;13475:18:1;;;13468:31;13516:19;;1838:56:0;13144:397:1;1931:132:0;1989:7;2016:39;2020:1;2023;2016:39;;;;;;;;;;;;;;;;;:3;:39::i;25234:666::-;25384:16;;;25398:1;25384:16;;;;;;;;25360:21;;25384:16;;;;;;;;;;-1:-1:-1;25384:16:0;25360:40;;25429:4;25411;25416:1;25411:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25411:23:0;;;:7;;;;;;;;;;:23;;;;25455:15;;:22;;;-1:-1:-1;;;25455:22:0;;;;:15;;;;;:20;;:22;;;;;25411:7;;25455:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25445:4;25450:1;25445:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25445:32:0;;;:7;;;;;;;;;:32;25522:15;;25490:62;;25507:4;;25522:15;25540:11;25490:8;:62::i;:::-;25591:15;;:240;;-1:-1:-1;;;25591:240:0;;-1:-1:-1;;;;;25591:15:0;;;;:66;;:240;;25672:11;;25591:15;;25742:4;;25769;;25805:15;;25591:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25857:35;25874:11;25887:4;25857:35;;;;;;;:::i;:::-;;;;;;;;25289:611;25234:666;:::o;25908:513::-;26088:15;;26056:62;;26073:4;;-1:-1:-1;;;;;26088:15:0;26106:11;26056:8;:62::i;:::-;26161:15;;-1:-1:-1;;;;;26161:15:0;:31;26200:9;26233:4;26253:11;26161:15;;26365:7;3026;3053:6;-1:-1:-1;;;;;3053:6:0;;2988:79;26365:7;26161:252;;;;;;-1:-1:-1;;;;;;26161:252:0;;;-1:-1:-1;;;;;15427:15:1;;;26161:252:0;;;15409:34:1;15459:18;;;15452:34;;;;15502:18;;;15495:34;;;;15545:18;;;15538:34;15609:15;;;15588:19;;;15581:44;26387:15:0;15641:19:1;;;15634:35;15343:19;;26161:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25908:513;;:::o;2071:278::-;2157:7;2192:12;2185:5;2177:28;;;;-1:-1:-1;;;2177:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2216:9:0;2228:5;2232:1;2228;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:316::-;644:6;652;660;713:2;701:9;692:7;688:23;684:32;681:52;;;729:1;726;719:12;681:52;-1:-1:-1;;752:23:1;;;822:2;807:18;;794:32;;-1:-1:-1;873:2:1;858:18;;;845:32;;567:316;-1:-1:-1;567:316:1:o;1096:131::-;-1:-1:-1;;;;;1171:31:1;;1161:42;;1151:70;;1217:1;1214;1207:12;1232:315;1300:6;1308;1361:2;1349:9;1340:7;1336:23;1332:32;1329:52;;;1377:1;1374;1367:12;1329:52;1416:9;1403:23;1435:31;1460:5;1435:31;:::i;:::-;1485:5;1537:2;1522:18;;;;1509:32;;-1:-1:-1;;;1232:315:1:o;1744:118::-;1830:5;1823:13;1816:21;1809:5;1806:32;1796:60;;1852:1;1849;1842:12;1867:382;1932:6;1940;1993:2;1981:9;1972:7;1968:23;1964:32;1961:52;;;2009:1;2006;1999:12;1961:52;2048:9;2035:23;2067:31;2092:5;2067:31;:::i;:::-;2117:5;-1:-1:-1;2174:2:1;2159:18;;2146:32;2187:30;2146:32;2187:30;:::i;:::-;2236:7;2226:17;;;1867:382;;;;;:::o;2671:456::-;2748:6;2756;2764;2817:2;2805:9;2796:7;2792:23;2788:32;2785:52;;;2833:1;2830;2823:12;2785:52;2872:9;2859:23;2891:31;2916:5;2891:31;:::i;:::-;2941:5;-1:-1:-1;2998:2:1;2983:18;;2970:32;3011:33;2970:32;3011:33;:::i;:::-;2671:456;;3063:7;;-1:-1:-1;;;3117:2:1;3102:18;;;;3089:32;;2671:456::o;3132:241::-;3188:6;3241:2;3229:9;3220:7;3216:23;3212:32;3209:52;;;3257:1;3254;3247:12;3209:52;3296:9;3283:23;3315:28;3337:5;3315:28;:::i;3567:180::-;3626:6;3679:2;3667:9;3658:7;3654:23;3650:32;3647:52;;;3695:1;3692;3685:12;3647:52;-1:-1:-1;3718:23:1;;3567:180;-1:-1:-1;3567:180:1:o;3752:247::-;3811:6;3864:2;3852:9;3843:7;3839:23;3835:32;3832:52;;;3880:1;3877;3870:12;3832:52;3919:9;3906:23;3938:31;3963:5;3938:31;:::i;4004:367::-;4067:8;4077:6;4131:3;4124:4;4116:6;4112:17;4108:27;4098:55;;4149:1;4146;4139:12;4098:55;-1:-1:-1;4172:20:1;;4215:18;4204:30;;4201:50;;;4247:1;4244;4237:12;4201:50;4284:4;4276:6;4272:17;4260:29;;4344:3;4337:4;4327:6;4324:1;4320:14;4312:6;4308:27;4304:38;4301:47;4298:67;;;4361:1;4358;4351:12;4298:67;4004:367;;;;;:::o;4376:773::-;4498:6;4506;4514;4522;4575:2;4563:9;4554:7;4550:23;4546:32;4543:52;;;4591:1;4588;4581:12;4543:52;4631:9;4618:23;4660:18;4701:2;4693:6;4690:14;4687:34;;;4717:1;4714;4707:12;4687:34;4756:70;4818:7;4809:6;4798:9;4794:22;4756:70;:::i;:::-;4845:8;;-1:-1:-1;4730:96:1;-1:-1:-1;4933:2:1;4918:18;;4905:32;;-1:-1:-1;4949:16:1;;;4946:36;;;4978:1;4975;4968:12;4946:36;;5017:72;5081:7;5070:8;5059:9;5055:24;5017:72;:::i;:::-;4376:773;;;;-1:-1:-1;5108:8:1;-1:-1:-1;;;;4376:773:1:o;5378:388::-;5446:6;5454;5507:2;5495:9;5486:7;5482:23;5478:32;5475:52;;;5523:1;5520;5513:12;5475:52;5562:9;5549:23;5581:31;5606:5;5581:31;:::i;:::-;5631:5;-1:-1:-1;5688:2:1;5673:18;;5660:32;5701:33;5660:32;5701:33;:::i;5771:380::-;5850:1;5846:12;;;;5893;;;5914:61;;5968:4;5960:6;5956:17;5946:27;;5914:61;6021:2;6013:6;6010:14;5990:18;5987:38;5984:161;;6067:10;6062:3;6058:20;6055:1;6048:31;6102:4;6099:1;6092:15;6130:4;6127:1;6120:15;5984:161;;5771:380;;;:::o;6156:356::-;6358:2;6340:21;;;6377:18;;;6370:30;6436:34;6431:2;6416:18;;6409:62;6503:2;6488:18;;6156:356::o;6517:251::-;6587:6;6640:2;6628:9;6619:7;6615:23;6611:32;6608:52;;;6656:1;6653;6646:12;6608:52;6688:9;6682:16;6707:31;6732:5;6707:31;:::i;7433:127::-;7494:10;7489:3;7485:20;7482:1;7475:31;7525:4;7522:1;7515:15;7549:4;7546:1;7539:15;7565:127;7626:10;7621:3;7617:20;7614:1;7607:31;7657:4;7654:1;7647:15;7681:4;7678:1;7671:15;7697:125;7762:9;;;7783:10;;;7780:36;;;7796:18;;:::i;7827:135::-;7866:3;7887:17;;;7884:43;;7907:18;;:::i;:::-;-1:-1:-1;7954:1:1;7943:13;;7827:135::o;9219:245::-;9286:6;9339:2;9327:9;9318:7;9314:23;9310:32;9307:52;;;9355:1;9352;9345:12;9307:52;9387:9;9381:16;9406:28;9428:5;9406:28;:::i;12616:128::-;12683:9;;;12704:11;;;12701:37;;;12718:18;;:::i;12749:168::-;12822:9;;;12853;;12870:15;;;12864:22;;12850:37;12840:71;;12891:18;;:::i;12922:217::-;12962:1;12988;12978:132;;13032:10;13027:3;13023:20;13020:1;13013:31;13067:4;13064:1;13057:15;13095:4;13092:1;13085:15;12978:132;-1:-1:-1;13124:9:1;;12922:217::o;13678:461::-;13731:3;13769:5;13763:12;13796:6;13791:3;13784:19;13822:4;13851:2;13846:3;13842:12;13835:19;;13888:2;13881:5;13877:14;13909:1;13919:195;13933:6;13930:1;13927:13;13919:195;;;13998:13;;-1:-1:-1;;;;;13994:39:1;13982:52;;14054:12;;;;14089:15;;;;14030:1;13948:9;13919:195;;;-1:-1:-1;14130:3:1;;13678:461;-1:-1:-1;;;;;13678:461:1:o;14144:582::-;14443:6;14432:9;14425:25;14486:6;14481:2;14470:9;14466:18;14459:34;14529:3;14524:2;14513:9;14509:18;14502:31;14406:4;14550:57;14602:3;14591:9;14587:19;14579:6;14550:57;:::i;:::-;-1:-1:-1;;;;;14643:32:1;;;;14638:2;14623:18;;14616:60;-1:-1:-1;14707:3:1;14692:19;14685:35;14542:65;14144:582;-1:-1:-1;;;14144:582:1:o;14731:332::-;14938:6;14927:9;14920:25;14981:2;14976;14965:9;14961:18;14954:30;14901:4;15001:56;15053:2;15042:9;15038:18;15030:6;15001:56;:::i;:::-;14993:64;14731:332;-1:-1:-1;;;;14731:332:1:o;15680:306::-;15768:6;15776;15784;15837:2;15825:9;15816:7;15812:23;15808:32;15805:52;;;15853:1;15850;15843:12;15805:52;15882:9;15876:16;15866:26;;15932:2;15921:9;15917:18;15911:25;15901:35;;15976:2;15965:9;15961:18;15955:25;15945:35;;15680:306;;;;;:::o

Swarm Source

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