ETH Price: $2,492.54 (+3.69%)
 

Overview

Max Total Supply

1,000,000,000 AGARI SAGARI

Holders

33

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
AGARISAGARI

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-21
*/

/*

AGARI SAGARI

The tale of the Bull versus Bear.

Finalized taxes: Buy: 0%  Sell: 3%

Twitter - https://twitter.com/AgariSagariERC

Telegram - https://t.me/AgariSagariERC20

Medium - https://medium.com/@agarisagari00/the-bull-and-the-bear-2bb97a782724

*/


// SPDX-License-Identifier: MIT

pragma solidity ^0.8.1;

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

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

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

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// pragma solidity >=0.5.0;

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

    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(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

// pragma solidity >=0.5.0;

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

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

// pragma solidity >=0.6.2;

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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

// pragma solidity >=0.6.2;

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract AGARISAGARI is Context, IERC20, Ownable {
    using Address for address;

    string private _name = "Bull vs Bear";
    string private _symbol = "AGARI SAGARI";
    uint8 private _decimals = 9;
    uint256 private initialsupply = 1_000_000_000;
    uint256 private _tTotal = initialsupply * 10**_decimals;

    address payable public _marketingWallet;
    address public _liquidityWallet;

    mapping(address => uint256) private _tOwned;
    mapping(address => uint256) private buycooldown;
    mapping(address => uint256) private sellcooldown;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public _isExcludedFromFee;
    mapping(address => bool) public _isBlacklisted;

    struct Icooldown {
        bool buycooldownEnabled;
        bool sellcooldownEnabled;
        uint256 cooldown;
        uint256 cooldownLimit;
    }
    Icooldown public cooldownInfo =
        Icooldown({
            buycooldownEnabled: true,
            sellcooldownEnabled: true,
            cooldown: 30 seconds,
            cooldownLimit: 60 seconds
        });
    struct ILaunch {
        uint256 launchedAt;
        bool launched;
        bool launchProtection;
    }
    ILaunch public wenLaunch =
        ILaunch({
            launchedAt: 0, 
            launched: false, 
            launchProtection: true
        });

    struct ItxSettings {
        uint256 maxTxAmount;
        uint256 maxWalletAmount;
        uint256 numTokensToSwap;
        bool limited;
    }

    ItxSettings public txSettings;

    uint256 public _liquidityFee;
    uint256 public _marketingFee;
    uint256 public _buyLiquidityFee;
    uint256 public _buyMarketingFee;
    uint256 public _sellLiquidityFee;
    uint256 public _sellMarketingFee;

    uint256 public _lpFeeAccumulated;
    uint256 public _marketingFeeAccumulated;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    bool private inSwapAndLiquify;
    bool public swapAndLiquifyEnabled;
    bool public lpOrMarketing;

    bool public tradeEnabled;
    mapping(address => bool) public tradeAllowedList;

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    event SniperStatus(address account, bool blacklisted);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event ToMarketing(uint256 marketingBalance);
    event SwapAndLiquify(uint256 liquidityTokens, uint256 liquidityFees);
    event Launch();

    constructor(address marketingWallet) {        
        _marketingWallet = payable(marketingWallet);
        // IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x10ED43C718714eb63d5aA57B78B54704E256024E); // bsc pancake router 
        // IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3); //bsc test net router kiem
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //eth uniswap router

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;

        _approve(_msgSender(), address(_uniswapV2Router), type(uint256).max);
        _approve(address(this), address(_uniswapV2Router), type(uint256).max);

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;

        setSellFee(30,20);
        setBuyFee(20,10);
        setTransferFee(0,0);
        setTxSettings(1,100,2,100,1,1000,true);

        _tOwned[_msgSender()] = _tTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);

        tradeEnabled = false;
        tradeAllowedList[owner()] = true;
        tradeAllowedList[address(this)] = true;

        lpOrMarketing = true;

        _liquidityWallet = _msgSender();
    }

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

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

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

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

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

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

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

    function setSellFee(uint256 liquidityFee, uint256 marketingFee) public onlyOwner {
        require(liquidityFee + marketingFee <= 250);
        _sellLiquidityFee = liquidityFee;
        _sellMarketingFee = marketingFee;
    }

    function setBuyFee(uint256 liquidityFee, uint256 marketingFee) public onlyOwner {
        require(liquidityFee + marketingFee <= 250);
        _buyMarketingFee = marketingFee;
        _buyLiquidityFee = liquidityFee;
    }

    function setTransferFee(uint256 liquidityFee, uint256 marketingFee) public onlyOwner {
        require(liquidityFee + marketingFee <= 250);
        _liquidityFee = liquidityFee;
        _marketingFee = marketingFee;
    }

    function setLiquidityFees(uint256 newTransfer, uint256 newBuy, uint256 newSell) public onlyOwner {
        _liquidityFee = newTransfer;
        _buyLiquidityFee = newBuy;
        _sellLiquidityFee = newSell;
    }

    function setMarketingFees(uint256 newTransfer, uint256 newBuy, uint256 newSell) public onlyOwner {
        _marketingFee = newTransfer;
        _buyMarketingFee = newBuy;
        _sellMarketingFee = newSell;
    }

    function setCooldown(uint256 amount) external onlyOwner {
        require(amount <= cooldownInfo.cooldownLimit);
        cooldownInfo.cooldown = amount;
    }

    function setMarketingWallet(address payable newMarketingWallet) external onlyOwner {
        _marketingWallet = payable(newMarketingWallet);
    }

    function setLiquidityWallet(address newLpWallet) external onlyOwner {
        _liquidityWallet = newLpWallet;
    }

    function setTxSettings(uint256 txp, uint256 txd, uint256 mwp, uint256 mwd, uint256 sp, uint256 sd, bool limiter) public onlyOwner {
        require((_tTotal * txp) / txd >= (_tTotal / 1000), "Max Transaction must be above 0.1% of total supply.");
        require((_tTotal * mwp) / mwd >= (_tTotal / 1000), "Max Wallet must be above 0.1% of total supply.");
        uint256 newTx = (_tTotal * txp) / (txd);
        uint256 newMw = (_tTotal * mwp) / mwd;
        uint256 swapAmount = (_tTotal * sp) / (sd);
        txSettings = ItxSettings ({
            numTokensToSwap: swapAmount,
            maxTxAmount: newTx,
            maxWalletAmount: newMw,
            limited: limiter
        });
    }

    function setTradeEnabled(bool onoff) external onlyOwner {
        if (!wenLaunch.launched) {
            wenLaunch.launchedAt = block.number;
            wenLaunch.launched = true;
            swapAndLiquifyEnabled = true;            
        }

        tradeEnabled = onoff;

        if (!wenLaunch.launched) {
            emit Launch();
        }
    }

    function setTradeAllowedAddress(address who, bool status) external onlyOwner {
        tradeAllowedList[who] = status;
    }

    function setLpOrMarketingStatus(bool status) external onlyOwner {
        lpOrMarketing = status;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] - (subtractedValue)
        );
        return true;
    }

    function setBlacklistStatus(address account, bool blacklisted) external onlyOwner {
        if(account == uniswapV2Pair || account == address(this) || account == address(uniswapV2Router)) {revert();}
        if (blacklisted == true) {
            _isBlacklisted[account] = true;
        } else if (blacklisted == false) {
            _isBlacklisted[account] = false;
        }
    }

    function BotHammer(address [] calldata accounts, bool blacklisted) external onlyOwner {
        for (uint256 i; i < accounts.length; i++) {
            address account = accounts[i];
            if(account == uniswapV2Pair || account == address(this) || account == address(uniswapV2Router)) {revert();}
            if (blacklisted == true) {
                _isBlacklisted[account] = true;
            } else if (blacklisted == false) {
                _isBlacklisted[account] = false;
            }        
        }
    }

    function unblacklist(address account) external onlyOwner {
        _isBlacklisted[account] = false;
    }
    
    function setSniperStatus(address account, bool blacklisted) private{
        if(account == uniswapV2Pair || account == address(this) || account == address(uniswapV2Router)) {revert();}
        
        if (blacklisted == true) {
            _isBlacklisted[account] = true;
            emit SniperStatus(account, blacklisted);
        } 
    }

    function limits(bool onoff) public onlyOwner {
        txSettings.limited = onoff;
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

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

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

    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 swapAndLiquify(uint256 tokenBalance) private lockTheSwap {
        uint256 initialBalance = address(this).balance;
        uint256 tokensToSwap = tokenBalance / 2;
        uint256 liquidityTokens = tokenBalance - tokensToSwap;

        if (tokensToSwap > 0) {
            swapTokensForEth(tokensToSwap);
        }

        uint256 newBalance = address(this).balance;
        uint256 liquidityBalance = uint256(newBalance - initialBalance);

        if (liquidityTokens > 0 && liquidityBalance > 0) {
            addLiquidity(liquidityTokens, liquidityBalance);
            emit SwapAndLiquify(liquidityTokens, liquidityBalance);
        }

        _lpFeeAccumulated -= tokenBalance;

        if (_lpFeeAccumulated < txSettings.numTokensToSwap && (_marketingFee + _buyMarketingFee + _sellMarketingFee) > 0) {
            lpOrMarketing = false;
        }
    }

    function swapAndMarketing(uint256 tokenBalance) private lockTheSwap {
        if (tokenBalance > 0) {
            swapTokensForEth(tokenBalance);
        }

        uint256 marketingBalance = address(this).balance;
        if (marketingBalance > 0) {
            _marketingWallet.transfer(marketingBalance);
            emit ToMarketing(marketingBalance);
        }

        _marketingFeeAccumulated -= tokenBalance;

        if (_marketingFeeAccumulated < txSettings.numTokensToSwap && (_liquidityFee + _buyLiquidityFee + _sellLiquidityFee > 0)) {
            lpOrMarketing = true;
        }
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        require(amountPercentage <= 100);
        uint256 amountETH = address(this).balance;
        payable(_marketingWallet).transfer(
            (amountETH * (amountPercentage)) / (100)
        );
    }

    function clearStuckToken(address to) external onlyOwner {
        uint256 _balance = balanceOf(address(this));
        _transfer(address(this), to, _balance);
    }

    function clearStuckTokens(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0));
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
    }

    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();

        if(_allowances[address(this)][address(uniswapV2Router)] < tokenAmount) {
            _approve(address(this), address(uniswapV2Router), type(uint256).max);
        }

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

        if(_allowances[address(this)][address(uniswapV2Router)] < tokenAmount) {
            _approve(address(this), address(uniswapV2Router), type(uint256).max);
        }

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

    function transferFrom(address sender,address recipient,uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()] - (
                amount
            )
        );
        return true;
    }    

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(_isBlacklisted[from] == false, "Hehe");
        require(_isBlacklisted[to] == false, "Hehe");

        if (!tradeEnabled) {
            require(tradeAllowedList[from] || tradeAllowedList[to], "Transfer: not allowed");
            require(balanceOf(uniswapV2Pair) == 0 || to != uniswapV2Pair, "Transfer: no body can sell now");
        }

        if (txSettings.limited) {
            if(from != owner() && to != owner() || to != address(0xdead) && to != address(0)) 
            {
                if (from == uniswapV2Pair || to == uniswapV2Pair
                ) {
                    if(!_isExcludedFromFee[to] && !_isExcludedFromFee[from]) {
                        require(amount <= txSettings.maxTxAmount);
                    }
                }
                if(to != address(uniswapV2Router) && to != uniswapV2Pair) {
                    if(!_isExcludedFromFee[to]) {
                        require(balanceOf(to) + amount <= txSettings.maxWalletAmount);
                    }
                }
            }
        }

        if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]
            ) {
                if (cooldownInfo.buycooldownEnabled) {
                    require(buycooldown[to] < block.timestamp);
                    buycooldown[to] = block.timestamp + (cooldownInfo.cooldown);
                }
            } else if (from != uniswapV2Pair && !_isExcludedFromFee[from]){
                if (cooldownInfo.sellcooldownEnabled) {
                    require(sellcooldown[from] <= block.timestamp);
                    sellcooldown[from] = block.timestamp + (cooldownInfo.cooldown);
                }
            }

        if (
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            swapAndLiquifyEnabled
        ) {
            uint256 contractTokenBalance = balanceOf(address(this));
            if (lpOrMarketing && contractTokenBalance >= _lpFeeAccumulated && _lpFeeAccumulated >= txSettings.numTokensToSwap) {
                swapAndLiquify(txSettings.numTokensToSwap);
            } else if (!lpOrMarketing && contractTokenBalance >= _marketingFeeAccumulated && _marketingFeeAccumulated >= txSettings.numTokensToSwap) {
                swapAndMarketing(txSettings.numTokensToSwap);
            }
        }

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

        //if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }

        //transfer amount, it will take tax, marketing, liquidity fee
        _tokenTransfer(from, to, amount, takeFee);
    }

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

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender,address recipient,uint256 amount,bool takeFee) private {
        uint256 feeAmount = 0;
        uint256 liquidityFeeValue;
        uint256 marketingFeeValue;
        bool highFee = false;

        if (takeFee) {
            if (sender == uniswapV2Pair) {
                liquidityFeeValue = _buyLiquidityFee;
                marketingFeeValue = _buyMarketingFee;
            } else if (recipient == uniswapV2Pair) {
                liquidityFeeValue = _sellLiquidityFee;
                marketingFeeValue = _sellMarketingFee;
            } else {
                liquidityFeeValue = _liquidityFee;
                marketingFeeValue = _marketingFee;
            }

            if (highFee) {
                liquidityFeeValue = 450;
                marketingFeeValue = 450;   
            }

            feeAmount = (amount * (liquidityFeeValue + marketingFeeValue)) / (1000);

            if ((liquidityFeeValue + marketingFeeValue) > 0) {
                uint256 _liquidityFeeAmount = (feeAmount * liquidityFeeValue / (liquidityFeeValue + marketingFeeValue));
                _lpFeeAccumulated += _liquidityFeeAmount;
                _marketingFeeAccumulated += (feeAmount - _liquidityFeeAmount);
            }
        }
        
        uint256 tAmount = amount - feeAmount;
        _tOwned[sender] -= amount;
        _tOwned[address(this)] += feeAmount;
        emit Transfer(sender, address(this), feeAmount);
        _tOwned[recipient] += tAmount;
        emit Transfer(sender, recipient, tAmount);
    }

    function setCooldownEnabled(bool onoff, bool offon) external onlyOwner {
        cooldownInfo.buycooldownEnabled = onoff;
        cooldownInfo.sellcooldownEnabled = offon;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"marketingWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"Launch","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":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"SniperStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"liquidityTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityFees","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":"marketingBalance","type":"uint256"}],"name":"ToMarketing","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":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"BotHammer","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lpFeeAccumulated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFeeAccumulated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":[{"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":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"clearStuckTokens","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownInfo","outputs":[{"internalType":"bool","name":"buycooldownEnabled","type":"bool"},{"internalType":"bool","name":"sellcooldownEnabled","type":"bool"},{"internalType":"uint256","name":"cooldown","type":"uint256"},{"internalType":"uint256","name":"cooldownLimit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"limits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpOrMarketing","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"setBlacklistStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"},{"internalType":"bool","name":"offon","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTransfer","type":"uint256"},{"internalType":"uint256","name":"newBuy","type":"uint256"},{"internalType":"uint256","name":"newSell","type":"uint256"}],"name":"setLiquidityFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLpWallet","type":"address"}],"name":"setLiquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setLpOrMarketingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTransfer","type":"uint256"},{"internalType":"uint256","name":"newBuy","type":"uint256"},{"internalType":"uint256","name":"newSell","type":"uint256"}],"name":"setMarketingFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newMarketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setTradeAllowedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setTradeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"txp","type":"uint256"},{"internalType":"uint256","name":"txd","type":"uint256"},{"internalType":"uint256","name":"mwp","type":"uint256"},{"internalType":"uint256","name":"mwd","type":"uint256"},{"internalType":"uint256","name":"sp","type":"uint256"},{"internalType":"uint256","name":"sd","type":"uint256"},{"internalType":"bool","name":"limiter","type":"bool"}],"name":"setTxSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tradeAllowedList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"txSettings","outputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"},{"internalType":"uint256","name":"numTokensToSwap","type":"uint256"},{"internalType":"bool","name":"limited","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unblacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wenLaunch","outputs":[{"internalType":"uint256","name":"launchedAt","type":"uint256"},{"internalType":"bool","name":"launched","type":"bool"},{"internalType":"bool","name":"launchProtection","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

610100604052600c60c08190526b213ab636103b39902132b0b960a11b60e09081526200003091600391906200099c565b5060408051808201909152600c8082526b41474152492053414741524960a01b602090920191825262000066916004916200099c565b506005805460ff19166009908117909155633b9aca006006556200008c90600a62000afb565b6006546200009b919062000bbc565b6007556040805160808101825260018082526020808301829052601e838501819052603c60609485018190526010805461010161ffff19918216179091556011929092556012558451938401855260008085529184018290529290930152601391909155601480549091166101001790553480156200011957600080fd5b5060405162003dcc38038062003dcc8339810160408190526200013c9162000a42565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600880546001600160a01b0319166001600160a01b0383161790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a015591600480820192602092909190829003018186803b158015620001e757600080fd5b505afa158015620001fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000222919062000a42565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200026b57600080fd5b505afa15801562000280573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a6919062000a42565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002ef57600080fd5b505af115801562000304573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032a919062000a42565b6001600160601b0319606091821b811660a0529082901b166080526200035b620003513390565b82600019620004f5565b6200036a3082600019620004f5565b6001600e6000620003836000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600e909252902080549091166001179055620003d1601e601462000621565b620003df6014600a62000691565b620003ec600080620006fe565b6200040260016064600281836103e8816200076e565b600754336000818152600a6020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36021805463ff00000019169055600160226000620004736000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260229092529020805490911660011790556021805462ff0000191662010000179055620004cc3390565b600980546001600160a01b0319166001600160a01b03929092169190911790555062000c319050565b6001600160a01b0383166200055d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620005c05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000554565b6001600160a01b038381166000818152600d602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000546001600160a01b031633146200066c5760405162461bcd60e51b8152602060048201819052602482015260008051602062003dac833981519152604482015260640162000554565b60fa6200067a828462000a74565b11156200068657600080fd5b601d91909155601e55565b6000546001600160a01b03163314620006dc5760405162461bcd60e51b8152602060048201819052602482015260008051602062003dac833981519152604482015260640162000554565b60fa620006ea828462000a74565b1115620006f657600080fd5b601c55601b55565b6000546001600160a01b03163314620007495760405162461bcd60e51b8152602060048201819052602482015260008051602062003dac833981519152604482015260640162000554565b60fa62000757828462000a74565b11156200076357600080fd5b601991909155601a55565b6000546001600160a01b03163314620007b95760405162461bcd60e51b8152602060048201819052602482015260008051602062003dac833981519152604482015260640162000554565b6103e8600754620007cb919062000a8f565b8688600754620007dc919062000bbc565b620007e8919062000a8f565b10156200085e5760405162461bcd60e51b815260206004820152603360248201527f4d6178205472616e73616374696f6e206d7573742062652061626f766520302e60448201527f3125206f6620746f74616c20737570706c792e00000000000000000000000000606482015260840162000554565b6103e860075462000870919062000a8f565b848660075462000881919062000bbc565b6200088d919062000a8f565b1015620008f45760405162461bcd60e51b815260206004820152602e60248201527f4d61782057616c6c6574206d7573742062652061626f766520302e3125206f6660448201526d103a37ba30b61039bab838363c9760911b606482015260840162000554565b6000868860075462000907919062000bbc565b62000913919062000a8f565b90506000858760075462000928919062000bbc565b62000934919062000a8f565b90506000848660075462000949919062000bbc565b62000955919062000a8f565b60408051608081018252858152602081018590529081018290529415156060909501859052601593909355506016556017556018805460ff19169091179055505050505050565b828054620009aa9062000bde565b90600052602060002090601f016020900481019282620009ce576000855562000a19565b82601f10620009e957805160ff191683800117855562000a19565b8280016001018555821562000a19579182015b8281111562000a19578251825591602001919060010190620009fc565b5062000a2792915062000a2b565b5090565b5b8082111562000a27576000815560010162000a2c565b60006020828403121562000a5557600080fd5b81516001600160a01b038116811462000a6d57600080fd5b9392505050565b6000821982111562000a8a5762000a8a62000c1b565b500190565b60008262000aad57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111562000af357816000190482111562000ad75762000ad762000c1b565b8085161562000ae557918102915b93841c939080029062000ab7565b509250929050565b600062000a6d60ff84168360008262000b175750600162000bb6565b8162000b265750600062000bb6565b816001811462000b3f576002811462000b4a5762000b6a565b600191505062000bb6565b60ff84111562000b5e5762000b5e62000c1b565b50506001821b62000bb6565b5060208310610133831016604e8410600b841016171562000b8f575081810a62000bb6565b62000b9b838362000ab2565b806000190482111562000bb25762000bb262000c1b565b0290505b92915050565b600081600019048311821515161562000bd95762000bd962000c1b565b500290565b600181811c9082168062000bf357607f821691505b6020821081141562000c1557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60805160601c60a05160601c6130ae62000cfe6000396000818161064301528181610be10152818161179201528181611dea01528181611e2201528181611f0a01528181611f4501528181612013015281816120a70152818161219f01528181612269015281816125b201526125fb01526000818161046001528181610c2f015281816117e001528181611fd6015281816120e30152818161286f0152818161293c01528181612973015281816129b101528181612a3901528181612a760152612ae001526130ae6000f3fe6080604052600436106103855760003560e01c8063715018a6116101d1578063b5ec194111610102578063d621e813116100a0578063ea2f0b371161006f578063ea2f0b3714610b2c578063f23175ff14610b4c578063f2fde38b14610b6c578063fb0ecfa414610b8c57600080fd5b8063d621e81314610a67578063d8913ae314610a88578063dc44b6a014610ad0578063dd62ed3e14610ae657600080fd5b8063c5d24189116100dc578063c5d2418914610a05578063c61276b514610a1b578063c860795214610a31578063cb51b4eb14610a4757600080fd5b8063b5ec1941146109a5578063c40fedc6146109c5578063c49b9a80146109e557600080fd5b806395d89b411161016f5780639be953b3116101495780639be953b314610925578063a16df9d814610945578063a457c2d714610965578063a9059cbb1461098557600080fd5b806395d89b41146108a357806395f93d48146108b8578063962dfc751461090557600080fd5b8063768dc710116101ab578063768dc7101461081f57806388790a681461084f5780638da5cb5b14610865578063934930a11461088357600080fd5b8063715018a6146107ca5780637261d666146107df57806375e3661e146107ff57600080fd5b8063313ce567116102b6578063514ec80311610254578063645b257111610223578063645b25711461073e5780636ac9a8701461075e5780636bc87c3a1461077e57806370a082311461079457600080fd5b8063514ec803146106a45780635b8138f6146106ba5780635d098b38146106da5780635db44757146106fa57600080fd5b8063437823ec11610290578063437823ec1461061157806349bd5a5e146106315780634a74bb02146106655780634fc3f41a1461068457600080fd5b8063313ce567146105af57806339509351146105d15780633bec2bf3146105f157600080fd5b80631c66cb6d1161032357806322976e0d116102fd57806322976e0d1461053957806323b872dd1461054f578063243a7e311461056f578063296f0a0c1461058f57600080fd5b80631c66cb6d146104b95780631cdd3be3146104e95780631da1db5e1461051957600080fd5b8063098b30661161035f578063098b30661461040e578063110bcc7c1461042e5780631694505e1461044e57806318160ddd1461049a57600080fd5b806303d29d281461039157806306fdde03146103b3578063095ea7b3146103de57600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103b16103ac366004612c22565b610bac565b005b3480156103bf57600080fd5b506103c8610cc9565b6040516103d59190612e68565b60405180910390f35b3480156103ea57600080fd5b506103fe6103f9366004612c50565b610d5b565b60405190151581526020016103d5565b34801561041a57600080fd5b506103b1610429366004612dae565b610d71565b34801561043a57600080fd5b506103b1610449366004612d02565b610da9565b34801561045a57600080fd5b506104827f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103d5565b3480156104a657600080fd5b506007545b6040519081526020016103d5565b3480156104c557600080fd5b506103fe6104d4366004612b67565b60226020526000908152604090205460ff1681565b3480156104f557600080fd5b506103fe610504366004612b67565b600f6020526000908152604090205460ff1681565b34801561052557600080fd5b506103b1610534366004612d5a565b610def565b34801561054557600080fd5b506104ab601a5481565b34801561055b57600080fd5b506103fe61056a366004612be1565b610e7b565b34801561057b57600080fd5b50600954610482906001600160a01b031681565b34801561059b57600080fd5b506103b16105aa366004612b67565b610ecd565b3480156105bb57600080fd5b5060055460405160ff90911681526020016103d5565b3480156105dd57600080fd5b506103fe6105ec366004612c50565b610f19565b3480156105fd57600080fd5b506103b161060c366004612d02565b610f50565b34801561061d57600080fd5b506103b161062c366004612b67565b610ff3565b34801561063d57600080fd5b506104827f000000000000000000000000000000000000000000000000000000000000000081565b34801561067157600080fd5b506021546103fe90610100900460ff1681565b34801561069057600080fd5b506103b161069f366004612d5a565b611041565b3480156106b057600080fd5b506104ab601f5481565b3480156106c657600080fd5b506103b16106d5366004612c22565b61107f565b3480156106e657600080fd5b506103b16106f5366004612b67565b6110d4565b34801561070657600080fd5b50601354601454610721919060ff8082169161010090041683565b6040805193845291151560208401521515908201526060016103d5565b34801561074a57600080fd5b506103b1610759366004612dae565b611120565b34801561076a57600080fd5b506103b1610779366004612d8c565b611158565b34801561078a57600080fd5b506104ab60195481565b3480156107a057600080fd5b506104ab6107af366004612b67565b6001600160a01b03166000908152600a602052604090205490565b3480156107d657600080fd5b506103b16111a4565b3480156107eb57600080fd5b506021546103fe9062010000900460ff1681565b34801561080b57600080fd5b506103b161081a366004612b67565b611218565b34801561082b57600080fd5b506103fe61083a366004612b67565b600e6020526000908152604090205460ff1681565b34801561085b57600080fd5b506104ab601d5481565b34801561087157600080fd5b506000546001600160a01b0316610482565b34801561088f57600080fd5b506103b161089e366004612d8c565b611263565b3480156108af57600080fd5b506103c86112af565b3480156108c457600080fd5b506010546011546012546108e39260ff80821693610100909204169184565b60408051941515855292151560208501529183015260608201526080016103d5565b34801561091157600080fd5b50600854610482906001600160a01b031681565b34801561093157600080fd5b506103b1610940366004612b67565b6112be565b34801561095157600080fd5b506103b1610960366004612e08565b611304565b34801561097157600080fd5b506103fe610980366004612c50565b6114eb565b34801561099157600080fd5b506103fe6109a0366004612c50565b611522565b3480156109b157600080fd5b506103b16109c0366004612d02565b61152f565b3480156109d157600080fd5b506103fe6109e0366004612ba8565b61156c565b3480156109f157600080fd5b506103b1610a00366004612d02565b6116b2565b348015610a1157600080fd5b506104ab601c5481565b348015610a2757600080fd5b506104ab60205481565b348015610a3d57600080fd5b506104ab601e5481565b348015610a5357600080fd5b506103b1610a62366004612c7c565b611730565b348015610a7357600080fd5b506021546103fe906301000000900460ff1681565b348015610a9457600080fd5b50601554601654601754601854610aae9392919060ff1684565b60408051948552602085019390935291830152151560608201526080016103d5565b348015610adc57600080fd5b506104ab601b5481565b348015610af257600080fd5b506104ab610b01366004612ba8565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b348015610b3857600080fd5b506103b1610b47366004612b67565b611890565b348015610b5857600080fd5b506103b1610b67366004612d3c565b6118db565b348015610b7857600080fd5b506103b1610b87366004612b67565b611929565b348015610b9857600080fd5b506103b1610ba7366004612d8c565b611a13565b6000546001600160a01b03163314610bdf5760405162461bcd60e51b8152600401610bd690612ebd565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480610c2757506001600160a01b03821630145b80610c6357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b15610c6d57600080fd5b60018115151415610c9f576001600160a01b0382166000908152600f60205260409020805460ff191660011790555050565b80610cc5576001600160a01b0382166000908152600f60205260409020805460ff191690555b5050565b606060038054610cd890612fd3565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0490612fd3565b8015610d515780601f10610d2657610100808354040283529160200191610d51565b820191906000526020600020905b815481529060010190602001808311610d3457829003601f168201915b5050505050905090565b6000610d68338484611a5c565b50600192915050565b6000546001600160a01b03163314610d9b5760405162461bcd60e51b8152600401610bd690612ebd565b601992909255601b55601d55565b6000546001600160a01b03163314610dd35760405162461bcd60e51b8152600401610bd690612ebd565b60218054911515620100000262ff000019909216919091179055565b6000546001600160a01b03163314610e195760405162461bcd60e51b8152600401610bd690612ebd565b6064811115610e2757600080fd5b60085447906001600160a01b03166108fc6064610e448585612f9d565b610e4e9190612f7b565b6040518115909202916000818181858888f19350505050158015610e76573d6000803e3d6000fd5b505050565b6000610e88848484611b80565b6001600160a01b0384166000908152600d6020908152604080832033808552925290912054610ec3918691610ebe908690612fbc565b611a5c565b5060019392505050565b6000546001600160a01b03163314610ef75760405162461bcd60e51b8152600401610bd690612ebd565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b336000818152600d602090815260408083206001600160a01b03871684529091528120549091610d68918590610ebe908690612f63565b6000546001600160a01b03163314610f7a5760405162461bcd60e51b8152600401610bd690612ebd565b60145460ff16610fa557436013556014805460ff191660011790556021805461ff0019166101001790555b6021805463ff000000191663010000008315150217905560145460ff16610ff0576040517f02ac8168caf2f254b394bd39e19417c5c28124ab89c9bc2d44921b19808e266990600090a15b50565b6000546001600160a01b0316331461101d5760405162461bcd60e51b8152600401610bd690612ebd565b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b6000546001600160a01b0316331461106b5760405162461bcd60e51b8152600401610bd690612ebd565b60125481111561107a57600080fd5b601155565b6000546001600160a01b031633146110a95760405162461bcd60e51b8152600401610bd690612ebd565b6001600160a01b03919091166000908152602260205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110fe5760405162461bcd60e51b8152600401610bd690612ebd565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461114a5760405162461bcd60e51b8152600401610bd690612ebd565b601a92909255601c55601e55565b6000546001600160a01b031633146111825760405162461bcd60e51b8152600401610bd690612ebd565b60fa61118e8284612f63565b111561119957600080fd5b601d91909155601e55565b6000546001600160a01b031633146111ce5760405162461bcd60e51b8152600401610bd690612ebd565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146112425760405162461bcd60e51b8152600401610bd690612ebd565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b6000546001600160a01b0316331461128d5760405162461bcd60e51b8152600401610bd690612ebd565b60fa6112998284612f63565b11156112a457600080fd5b601991909155601a55565b606060048054610cd890612fd3565b6000546001600160a01b031633146112e85760405162461bcd60e51b8152600401610bd690612ebd565b306000818152600a602052604090205490610cc5908383611b80565b6000546001600160a01b0316331461132e5760405162461bcd60e51b8152600401610bd690612ebd565b6103e860075461133e9190612f7b565b868860075461134d9190612f9d565b6113579190612f7b565b10156113c15760405162461bcd60e51b815260206004820152603360248201527f4d6178205472616e73616374696f6e206d7573742062652061626f766520302e60448201527218929037b3103a37ba30b61039bab838363c9760691b6064820152608401610bd6565b6103e86007546113d19190612f7b565b84866007546113e09190612f9d565b6113ea9190612f7b565b101561144f5760405162461bcd60e51b815260206004820152602e60248201527f4d61782057616c6c6574206d7573742062652061626f766520302e3125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610bd6565b600086886007546114609190612f9d565b61146a9190612f7b565b90506000858760075461147d9190612f9d565b6114879190612f7b565b90506000848660075461149a9190612f9d565b6114a49190612f7b565b60408051608081018252858152602081018590529081018290529415156060909501859052601593909355506016556017556018805460ff19169091179055505050505050565b336000818152600d602090815260408083206001600160a01b03871684529091528120549091610d68918590610ebe908690612fbc565b6000610d68338484611b80565b6000546001600160a01b031633146115595760405162461bcd60e51b8152600401610bd690612ebd565b6018805460ff1916911515919091179055565b600080546001600160a01b031633146115975760405162461bcd60e51b8152600401610bd690612ebd565b6001600160a01b0383166115aa57600080fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a082319060240160206040518083038186803b1580156115ec57600080fd5b505afa158015611600573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116249190612d73565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb90604401602060405180830381600087803b15801561167257600080fd5b505af1158015611686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116aa9190612d1f565b949350505050565b6000546001600160a01b031633146116dc5760405162461bcd60e51b8152600401610bd690612ebd565b602180548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061172590831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461175a5760405162461bcd60e51b8152600401610bd690612ebd565b60005b8281101561188a5760008484838181106117795761177961303f565b905060200201602081019061178e9190612b67565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614806117d857506001600160a01b03811630145b8061181457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b1561181e57600080fd5b60018315151415611851576001600160a01b0381166000908152600f60205260409020805460ff19166001179055611877565b82611877576001600160a01b0381166000908152600f60205260409020805460ff191690555b50806118828161300e565b91505061175d565b50505050565b6000546001600160a01b031633146118ba5760405162461bcd60e51b8152600401610bd690612ebd565b6001600160a01b03166000908152600e60205260409020805460ff19169055565b6000546001600160a01b031633146119055760405162461bcd60e51b8152600401610bd690612ebd565b6010805461ffff191692151561ff0019169290921761010091151591909102179055565b6000546001600160a01b031633146119535760405162461bcd60e51b8152600401610bd690612ebd565b6001600160a01b0381166119b85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bd6565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611a3d5760405162461bcd60e51b8152600401610bd690612ebd565b60fa611a498284612f63565b1115611a5457600080fd5b601c55601b55565b6001600160a01b038316611abe5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bd6565b6001600160a01b038216611b1f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bd6565b6001600160a01b038381166000818152600d602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611be45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bd6565b6001600160a01b038216611c465760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bd6565b60008111611ca85760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610bd6565b6001600160a01b0383166000908152600f602052604090205460ff1615611cfa5760405162461bcd60e51b8152600401610bd6906020808252600490820152634865686560e01b604082015260600190565b6001600160a01b0382166000908152600f602052604090205460ff1615611d4c5760405162461bcd60e51b8152600401610bd6906020808252600490820152634865686560e01b604082015260600190565b6021546301000000900460ff16611ea3576001600160a01b03831660009081526022602052604090205460ff1680611d9c57506001600160a01b03821660009081526022602052604090205460ff165b611de05760405162461bcd60e51b8152602060048201526015602482015274151c985b9cd9995c8e881b9bdd08185b1b1bddd959605a1b6044820152606401610bd6565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600a60205260409020541580611e5757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b611ea35760405162461bcd60e51b815260206004820152601e60248201527f5472616e736665723a206e6f20626f64792063616e2073656c6c206e6f7700006044820152606401610bd6565b60185460ff16156120a5576000546001600160a01b03848116911614801590611eda57506000546001600160a01b03838116911614155b80611f0357506001600160a01b03821661dead14801590611f0357506001600160a01b03821615155b156120a5577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161480611f7957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b15611fd4576001600160a01b0382166000908152600e602052604090205460ff16158015611fc057506001600160a01b0383166000908152600e602052604090205460ff16155b15611fd457601554811115611fd457600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415801561204857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b156120a5576001600160a01b0382166000908152600e602052604090205460ff166120a55760165481612090846001600160a01b03166000908152600a602052604090205490565b61209a9190612f63565b11156120a557600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614801561211857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b801561213d57506001600160a01b0382166000908152600e602052604090205460ff16155b1561219d5760105460ff1615612198576001600160a01b0382166000908152600b6020526040902054421161217157600080fd5b60115461217e9042612f63565b6001600160a01b0383166000908152600b60205260409020555b612259565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316141580156121f857506001600160a01b0383166000908152600e602052604090205460ff16155b1561225957601054610100900460ff1615612259576001600160a01b0383166000908152600c602052604090205442101561223257600080fd5b60115461223f9042612f63565b6001600160a01b0384166000908152600c60205260409020555b60215460ff1615801561229e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b80156122b15750602154610100900460ff165b1561234457306000908152600a602052604090205460215462010000900460ff1680156122e05750601f548110155b80156122f05750601754601f5410155b15612306576017546123019061239b565b612342565b60215462010000900460ff1615801561232157506020548110155b8015612331575060175460205410155b1561234257601754612342906124a7565b505b6001600160a01b0383166000908152600e602052604090205460019060ff168061238657506001600160a01b0383166000908152600e602052604090205460ff165b1561238f575060005b61188a848484846125a4565b6021805460ff191660011790554760006123b6600284612f7b565b905060006123c48285612fbc565b905081156123d5576123d582612818565b4760006123e28583612fbc565b90506000831180156123f45750600081115b1561243d576124038382612a25565b60408051848152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a15b85601f600082825461244f9190612fbc565b9091555050601754601f5410801561248357506000601e54601c54601a546124779190612f63565b6124819190612f63565b115b15612495576021805462ff0000191690555b50506021805460ff1916905550505050565b6021805460ff1916600117905580156124c3576124c381612818565b478015612539576008546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612504573d6000803e3d6000fd5b506040518181527f4d5c7c4ddada689ed3a12644234d0a26ec361d8a6f55c9b05805a57bd636f14b9060200160405180910390a15b816020600082825461254b9190612fbc565b909155505060175460205410801561257f57506000601d54601b546019546125739190612f63565b61257d9190612f63565b115b15612596576021805462ff00001916620100001790555b50506021805460ff19169055565b60008080600084156126ef577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614156125f957601b549250601c54915061264d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b0316141561264257601d549250601e54915061264d565b6019549250601a5491505b801561265e576101c292506101c291505b6103e861266b8385612f63565b6126759088612f9d565b61267f9190612f7b565b9350600061268d8385612f63565b11156126ef57600061269f8385612f63565b6126a98587612f9d565b6126b39190612f7b565b905080601f60008282546126c79190612f63565b909155506126d790508186612fbc565b602060008282546126e89190612f63565b9091555050505b60006126fb8588612fbc565b6001600160a01b038a166000908152600a6020526040812080549293508992909190612728908490612fbc565b9091555050306000908152600a60205260408120805487929061274c908490612f63565b909155505060405185815230906001600160a01b038b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36001600160a01b0388166000908152600a6020526040812080548392906127b9908490612f63565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161280591815260200190565b60405180910390a3505050505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061284d5761284d61303f565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156128c657600080fd5b505afa1580156128da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128fe9190612b8b565b816001815181106129115761291161303f565b6001600160a01b03928316602091820292909201810191909152306000908152600d825260408082207f0000000000000000000000000000000000000000000000000000000000000000909416825292909152205482111561299a5761299a307f0000000000000000000000000000000000000000000000000000000000000000600019611a5c565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906129ef908590600090869030904290600401612ef2565b600060405180830381600087803b158015612a0957600080fd5b505af1158015612a1d573d6000803e3d6000fd5b505050505050565b306000908152600d602090815260408083207f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168452909152902054821115612a9d57612a9d307f0000000000000000000000000000000000000000000000000000000000000000600019611a5c565b60095460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000009091169063f305d71990839060c4016060604051808303818588803b158015612b2757600080fd5b505af1158015612b3b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b609190612dda565b5050505050565b600060208284031215612b7957600080fd5b8135612b8481613055565b9392505050565b600060208284031215612b9d57600080fd5b8151612b8481613055565b60008060408385031215612bbb57600080fd5b8235612bc681613055565b91506020830135612bd681613055565b809150509250929050565b600080600060608486031215612bf657600080fd5b8335612c0181613055565b92506020840135612c1181613055565b929592945050506040919091013590565b60008060408385031215612c3557600080fd5b8235612c4081613055565b91506020830135612bd68161306a565b60008060408385031215612c6357600080fd5b8235612c6e81613055565b946020939093013593505050565b600080600060408486031215612c9157600080fd5b833567ffffffffffffffff80821115612ca957600080fd5b818601915086601f830112612cbd57600080fd5b813581811115612ccc57600080fd5b8760208260051b8501011115612ce157600080fd5b60209283019550935050840135612cf78161306a565b809150509250925092565b600060208284031215612d1457600080fd5b8135612b848161306a565b600060208284031215612d3157600080fd5b8151612b848161306a565b60008060408385031215612d4f57600080fd5b8235612c408161306a565b600060208284031215612d6c57600080fd5b5035919050565b600060208284031215612d8557600080fd5b5051919050565b60008060408385031215612d9f57600080fd5b50508035926020909101359150565b600080600060608486031215612dc357600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612def57600080fd5b8351925060208401519150604084015190509250925092565b600080600080600080600060e0888a031215612e2357600080fd5b873596506020880135955060408801359450606088013593506080880135925060a0880135915060c0880135612e588161306a565b8091505092959891949750929550565b600060208083528351808285015260005b81811015612e9557858101830151858201604001528201612e79565b81811115612ea7576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612f425784516001600160a01b031683529383019391830191600101612f1d565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612f7657612f76613029565b500190565b600082612f9857634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612fb757612fb7613029565b500290565b600082821015612fce57612fce613029565b500390565b600181811c90821680612fe757607f821691505b6020821081141561300857634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561302257613022613029565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114610ff057600080fd5b8015158114610ff057600080fdfea264697066735822122064531be94788fcf80606428af2997a9dd72791c6ba369512c406f9f5ca905e0d64736f6c634300080700334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572000000000000000000000000bf43cc90965bcc35b1b345a5e16231ce19e254f7

Deployed Bytecode

0x6080604052600436106103855760003560e01c8063715018a6116101d1578063b5ec194111610102578063d621e813116100a0578063ea2f0b371161006f578063ea2f0b3714610b2c578063f23175ff14610b4c578063f2fde38b14610b6c578063fb0ecfa414610b8c57600080fd5b8063d621e81314610a67578063d8913ae314610a88578063dc44b6a014610ad0578063dd62ed3e14610ae657600080fd5b8063c5d24189116100dc578063c5d2418914610a05578063c61276b514610a1b578063c860795214610a31578063cb51b4eb14610a4757600080fd5b8063b5ec1941146109a5578063c40fedc6146109c5578063c49b9a80146109e557600080fd5b806395d89b411161016f5780639be953b3116101495780639be953b314610925578063a16df9d814610945578063a457c2d714610965578063a9059cbb1461098557600080fd5b806395d89b41146108a357806395f93d48146108b8578063962dfc751461090557600080fd5b8063768dc710116101ab578063768dc7101461081f57806388790a681461084f5780638da5cb5b14610865578063934930a11461088357600080fd5b8063715018a6146107ca5780637261d666146107df57806375e3661e146107ff57600080fd5b8063313ce567116102b6578063514ec80311610254578063645b257111610223578063645b25711461073e5780636ac9a8701461075e5780636bc87c3a1461077e57806370a082311461079457600080fd5b8063514ec803146106a45780635b8138f6146106ba5780635d098b38146106da5780635db44757146106fa57600080fd5b8063437823ec11610290578063437823ec1461061157806349bd5a5e146106315780634a74bb02146106655780634fc3f41a1461068457600080fd5b8063313ce567146105af57806339509351146105d15780633bec2bf3146105f157600080fd5b80631c66cb6d1161032357806322976e0d116102fd57806322976e0d1461053957806323b872dd1461054f578063243a7e311461056f578063296f0a0c1461058f57600080fd5b80631c66cb6d146104b95780631cdd3be3146104e95780631da1db5e1461051957600080fd5b8063098b30661161035f578063098b30661461040e578063110bcc7c1461042e5780631694505e1461044e57806318160ddd1461049a57600080fd5b806303d29d281461039157806306fdde03146103b3578063095ea7b3146103de57600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103b16103ac366004612c22565b610bac565b005b3480156103bf57600080fd5b506103c8610cc9565b6040516103d59190612e68565b60405180910390f35b3480156103ea57600080fd5b506103fe6103f9366004612c50565b610d5b565b60405190151581526020016103d5565b34801561041a57600080fd5b506103b1610429366004612dae565b610d71565b34801561043a57600080fd5b506103b1610449366004612d02565b610da9565b34801561045a57600080fd5b506104827f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016103d5565b3480156104a657600080fd5b506007545b6040519081526020016103d5565b3480156104c557600080fd5b506103fe6104d4366004612b67565b60226020526000908152604090205460ff1681565b3480156104f557600080fd5b506103fe610504366004612b67565b600f6020526000908152604090205460ff1681565b34801561052557600080fd5b506103b1610534366004612d5a565b610def565b34801561054557600080fd5b506104ab601a5481565b34801561055b57600080fd5b506103fe61056a366004612be1565b610e7b565b34801561057b57600080fd5b50600954610482906001600160a01b031681565b34801561059b57600080fd5b506103b16105aa366004612b67565b610ecd565b3480156105bb57600080fd5b5060055460405160ff90911681526020016103d5565b3480156105dd57600080fd5b506103fe6105ec366004612c50565b610f19565b3480156105fd57600080fd5b506103b161060c366004612d02565b610f50565b34801561061d57600080fd5b506103b161062c366004612b67565b610ff3565b34801561063d57600080fd5b506104827f00000000000000000000000097e7006576d2edcff0167f0ee3c2e91854f517a681565b34801561067157600080fd5b506021546103fe90610100900460ff1681565b34801561069057600080fd5b506103b161069f366004612d5a565b611041565b3480156106b057600080fd5b506104ab601f5481565b3480156106c657600080fd5b506103b16106d5366004612c22565b61107f565b3480156106e657600080fd5b506103b16106f5366004612b67565b6110d4565b34801561070657600080fd5b50601354601454610721919060ff8082169161010090041683565b6040805193845291151560208401521515908201526060016103d5565b34801561074a57600080fd5b506103b1610759366004612dae565b611120565b34801561076a57600080fd5b506103b1610779366004612d8c565b611158565b34801561078a57600080fd5b506104ab60195481565b3480156107a057600080fd5b506104ab6107af366004612b67565b6001600160a01b03166000908152600a602052604090205490565b3480156107d657600080fd5b506103b16111a4565b3480156107eb57600080fd5b506021546103fe9062010000900460ff1681565b34801561080b57600080fd5b506103b161081a366004612b67565b611218565b34801561082b57600080fd5b506103fe61083a366004612b67565b600e6020526000908152604090205460ff1681565b34801561085b57600080fd5b506104ab601d5481565b34801561087157600080fd5b506000546001600160a01b0316610482565b34801561088f57600080fd5b506103b161089e366004612d8c565b611263565b3480156108af57600080fd5b506103c86112af565b3480156108c457600080fd5b506010546011546012546108e39260ff80821693610100909204169184565b60408051941515855292151560208501529183015260608201526080016103d5565b34801561091157600080fd5b50600854610482906001600160a01b031681565b34801561093157600080fd5b506103b1610940366004612b67565b6112be565b34801561095157600080fd5b506103b1610960366004612e08565b611304565b34801561097157600080fd5b506103fe610980366004612c50565b6114eb565b34801561099157600080fd5b506103fe6109a0366004612c50565b611522565b3480156109b157600080fd5b506103b16109c0366004612d02565b61152f565b3480156109d157600080fd5b506103fe6109e0366004612ba8565b61156c565b3480156109f157600080fd5b506103b1610a00366004612d02565b6116b2565b348015610a1157600080fd5b506104ab601c5481565b348015610a2757600080fd5b506104ab60205481565b348015610a3d57600080fd5b506104ab601e5481565b348015610a5357600080fd5b506103b1610a62366004612c7c565b611730565b348015610a7357600080fd5b506021546103fe906301000000900460ff1681565b348015610a9457600080fd5b50601554601654601754601854610aae9392919060ff1684565b60408051948552602085019390935291830152151560608201526080016103d5565b348015610adc57600080fd5b506104ab601b5481565b348015610af257600080fd5b506104ab610b01366004612ba8565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b348015610b3857600080fd5b506103b1610b47366004612b67565b611890565b348015610b5857600080fd5b506103b1610b67366004612d3c565b6118db565b348015610b7857600080fd5b506103b1610b87366004612b67565b611929565b348015610b9857600080fd5b506103b1610ba7366004612d8c565b611a13565b6000546001600160a01b03163314610bdf5760405162461bcd60e51b8152600401610bd690612ebd565b60405180910390fd5b7f00000000000000000000000097e7006576d2edcff0167f0ee3c2e91854f517a66001600160a01b0316826001600160a01b03161480610c2757506001600160a01b03821630145b80610c6357507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b0316145b15610c6d57600080fd5b60018115151415610c9f576001600160a01b0382166000908152600f60205260409020805460ff191660011790555050565b80610cc5576001600160a01b0382166000908152600f60205260409020805460ff191690555b5050565b606060038054610cd890612fd3565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0490612fd3565b8015610d515780601f10610d2657610100808354040283529160200191610d51565b820191906000526020600020905b815481529060010190602001808311610d3457829003601f168201915b5050505050905090565b6000610d68338484611a5c565b50600192915050565b6000546001600160a01b03163314610d9b5760405162461bcd60e51b8152600401610bd690612ebd565b601992909255601b55601d55565b6000546001600160a01b03163314610dd35760405162461bcd60e51b8152600401610bd690612ebd565b60218054911515620100000262ff000019909216919091179055565b6000546001600160a01b03163314610e195760405162461bcd60e51b8152600401610bd690612ebd565b6064811115610e2757600080fd5b60085447906001600160a01b03166108fc6064610e448585612f9d565b610e4e9190612f7b565b6040518115909202916000818181858888f19350505050158015610e76573d6000803e3d6000fd5b505050565b6000610e88848484611b80565b6001600160a01b0384166000908152600d6020908152604080832033808552925290912054610ec3918691610ebe908690612fbc565b611a5c565b5060019392505050565b6000546001600160a01b03163314610ef75760405162461bcd60e51b8152600401610bd690612ebd565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b336000818152600d602090815260408083206001600160a01b03871684529091528120549091610d68918590610ebe908690612f63565b6000546001600160a01b03163314610f7a5760405162461bcd60e51b8152600401610bd690612ebd565b60145460ff16610fa557436013556014805460ff191660011790556021805461ff0019166101001790555b6021805463ff000000191663010000008315150217905560145460ff16610ff0576040517f02ac8168caf2f254b394bd39e19417c5c28124ab89c9bc2d44921b19808e266990600090a15b50565b6000546001600160a01b0316331461101d5760405162461bcd60e51b8152600401610bd690612ebd565b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b6000546001600160a01b0316331461106b5760405162461bcd60e51b8152600401610bd690612ebd565b60125481111561107a57600080fd5b601155565b6000546001600160a01b031633146110a95760405162461bcd60e51b8152600401610bd690612ebd565b6001600160a01b03919091166000908152602260205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110fe5760405162461bcd60e51b8152600401610bd690612ebd565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461114a5760405162461bcd60e51b8152600401610bd690612ebd565b601a92909255601c55601e55565b6000546001600160a01b031633146111825760405162461bcd60e51b8152600401610bd690612ebd565b60fa61118e8284612f63565b111561119957600080fd5b601d91909155601e55565b6000546001600160a01b031633146111ce5760405162461bcd60e51b8152600401610bd690612ebd565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146112425760405162461bcd60e51b8152600401610bd690612ebd565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b6000546001600160a01b0316331461128d5760405162461bcd60e51b8152600401610bd690612ebd565b60fa6112998284612f63565b11156112a457600080fd5b601991909155601a55565b606060048054610cd890612fd3565b6000546001600160a01b031633146112e85760405162461bcd60e51b8152600401610bd690612ebd565b306000818152600a602052604090205490610cc5908383611b80565b6000546001600160a01b0316331461132e5760405162461bcd60e51b8152600401610bd690612ebd565b6103e860075461133e9190612f7b565b868860075461134d9190612f9d565b6113579190612f7b565b10156113c15760405162461bcd60e51b815260206004820152603360248201527f4d6178205472616e73616374696f6e206d7573742062652061626f766520302e60448201527218929037b3103a37ba30b61039bab838363c9760691b6064820152608401610bd6565b6103e86007546113d19190612f7b565b84866007546113e09190612f9d565b6113ea9190612f7b565b101561144f5760405162461bcd60e51b815260206004820152602e60248201527f4d61782057616c6c6574206d7573742062652061626f766520302e3125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610bd6565b600086886007546114609190612f9d565b61146a9190612f7b565b90506000858760075461147d9190612f9d565b6114879190612f7b565b90506000848660075461149a9190612f9d565b6114a49190612f7b565b60408051608081018252858152602081018590529081018290529415156060909501859052601593909355506016556017556018805460ff19169091179055505050505050565b336000818152600d602090815260408083206001600160a01b03871684529091528120549091610d68918590610ebe908690612fbc565b6000610d68338484611b80565b6000546001600160a01b031633146115595760405162461bcd60e51b8152600401610bd690612ebd565b6018805460ff1916911515919091179055565b600080546001600160a01b031633146115975760405162461bcd60e51b8152600401610bd690612ebd565b6001600160a01b0383166115aa57600080fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a082319060240160206040518083038186803b1580156115ec57600080fd5b505afa158015611600573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116249190612d73565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb90604401602060405180830381600087803b15801561167257600080fd5b505af1158015611686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116aa9190612d1f565b949350505050565b6000546001600160a01b031633146116dc5760405162461bcd60e51b8152600401610bd690612ebd565b602180548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061172590831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461175a5760405162461bcd60e51b8152600401610bd690612ebd565b60005b8281101561188a5760008484838181106117795761177961303f565b905060200201602081019061178e9190612b67565b90507f00000000000000000000000097e7006576d2edcff0167f0ee3c2e91854f517a66001600160a01b0316816001600160a01b031614806117d857506001600160a01b03811630145b8061181457507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316816001600160a01b0316145b1561181e57600080fd5b60018315151415611851576001600160a01b0381166000908152600f60205260409020805460ff19166001179055611877565b82611877576001600160a01b0381166000908152600f60205260409020805460ff191690555b50806118828161300e565b91505061175d565b50505050565b6000546001600160a01b031633146118ba5760405162461bcd60e51b8152600401610bd690612ebd565b6001600160a01b03166000908152600e60205260409020805460ff19169055565b6000546001600160a01b031633146119055760405162461bcd60e51b8152600401610bd690612ebd565b6010805461ffff191692151561ff0019169290921761010091151591909102179055565b6000546001600160a01b031633146119535760405162461bcd60e51b8152600401610bd690612ebd565b6001600160a01b0381166119b85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bd6565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611a3d5760405162461bcd60e51b8152600401610bd690612ebd565b60fa611a498284612f63565b1115611a5457600080fd5b601c55601b55565b6001600160a01b038316611abe5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bd6565b6001600160a01b038216611b1f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bd6565b6001600160a01b038381166000818152600d602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611be45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bd6565b6001600160a01b038216611c465760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bd6565b60008111611ca85760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610bd6565b6001600160a01b0383166000908152600f602052604090205460ff1615611cfa5760405162461bcd60e51b8152600401610bd6906020808252600490820152634865686560e01b604082015260600190565b6001600160a01b0382166000908152600f602052604090205460ff1615611d4c5760405162461bcd60e51b8152600401610bd6906020808252600490820152634865686560e01b604082015260600190565b6021546301000000900460ff16611ea3576001600160a01b03831660009081526022602052604090205460ff1680611d9c57506001600160a01b03821660009081526022602052604090205460ff165b611de05760405162461bcd60e51b8152602060048201526015602482015274151c985b9cd9995c8e881b9bdd08185b1b1bddd959605a1b6044820152606401610bd6565b6001600160a01b037f00000000000000000000000097e7006576d2edcff0167f0ee3c2e91854f517a6166000908152600a60205260409020541580611e5757507f00000000000000000000000097e7006576d2edcff0167f0ee3c2e91854f517a66001600160a01b0316826001600160a01b031614155b611ea35760405162461bcd60e51b815260206004820152601e60248201527f5472616e736665723a206e6f20626f64792063616e2073656c6c206e6f7700006044820152606401610bd6565b60185460ff16156120a5576000546001600160a01b03848116911614801590611eda57506000546001600160a01b03838116911614155b80611f0357506001600160a01b03821661dead14801590611f0357506001600160a01b03821615155b156120a5577f00000000000000000000000097e7006576d2edcff0167f0ee3c2e91854f517a66001600160a01b0316836001600160a01b03161480611f7957507f00000000000000000000000097e7006576d2edcff0167f0ee3c2e91854f517a66001600160a01b0316826001600160a01b0316145b15611fd4576001600160a01b0382166000908152600e602052604090205460ff16158015611fc057506001600160a01b0383166000908152600e602052604090205460ff16155b15611fd457601554811115611fd457600080fd5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b03161415801561204857507f00000000000000000000000097e7006576d2edcff0167f0ee3c2e91854f517a66001600160a01b0316826001600160a01b031614155b156120a5576001600160a01b0382166000908152600e602052604090205460ff166120a55760165481612090846001600160a01b03166000908152600a602052604090205490565b61209a9190612f63565b11156120a557600080fd5b7f00000000000000000000000097e7006576d2edcff0167f0ee3c2e91854f517a66001600160a01b0316836001600160a01b031614801561211857507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b801561213d57506001600160a01b0382166000908152600e602052604090205460ff16155b1561219d5760105460ff1615612198576001600160a01b0382166000908152600b6020526040902054421161217157600080fd5b60115461217e9042612f63565b6001600160a01b0383166000908152600b60205260409020555b612259565b7f00000000000000000000000097e7006576d2edcff0167f0ee3c2e91854f517a66001600160a01b0316836001600160a01b0316141580156121f857506001600160a01b0383166000908152600e602052604090205460ff16155b1561225957601054610100900460ff1615612259576001600160a01b0383166000908152600c602052604090205442101561223257600080fd5b60115461223f9042612f63565b6001600160a01b0384166000908152600c60205260409020555b60215460ff1615801561229e57507f00000000000000000000000097e7006576d2edcff0167f0ee3c2e91854f517a66001600160a01b0316836001600160a01b031614155b80156122b15750602154610100900460ff165b1561234457306000908152600a602052604090205460215462010000900460ff1680156122e05750601f548110155b80156122f05750601754601f5410155b15612306576017546123019061239b565b612342565b60215462010000900460ff1615801561232157506020548110155b8015612331575060175460205410155b1561234257601754612342906124a7565b505b6001600160a01b0383166000908152600e602052604090205460019060ff168061238657506001600160a01b0383166000908152600e602052604090205460ff165b1561238f575060005b61188a848484846125a4565b6021805460ff191660011790554760006123b6600284612f7b565b905060006123c48285612fbc565b905081156123d5576123d582612818565b4760006123e28583612fbc565b90506000831180156123f45750600081115b1561243d576124038382612a25565b60408051848152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a15b85601f600082825461244f9190612fbc565b9091555050601754601f5410801561248357506000601e54601c54601a546124779190612f63565b6124819190612f63565b115b15612495576021805462ff0000191690555b50506021805460ff1916905550505050565b6021805460ff1916600117905580156124c3576124c381612818565b478015612539576008546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612504573d6000803e3d6000fd5b506040518181527f4d5c7c4ddada689ed3a12644234d0a26ec361d8a6f55c9b05805a57bd636f14b9060200160405180910390a15b816020600082825461254b9190612fbc565b909155505060175460205410801561257f57506000601d54601b546019546125739190612f63565b61257d9190612f63565b115b15612596576021805462ff00001916620100001790555b50506021805460ff19169055565b60008080600084156126ef577f00000000000000000000000097e7006576d2edcff0167f0ee3c2e91854f517a66001600160a01b0316886001600160a01b031614156125f957601b549250601c54915061264d565b7f00000000000000000000000097e7006576d2edcff0167f0ee3c2e91854f517a66001600160a01b0316876001600160a01b0316141561264257601d549250601e54915061264d565b6019549250601a5491505b801561265e576101c292506101c291505b6103e861266b8385612f63565b6126759088612f9d565b61267f9190612f7b565b9350600061268d8385612f63565b11156126ef57600061269f8385612f63565b6126a98587612f9d565b6126b39190612f7b565b905080601f60008282546126c79190612f63565b909155506126d790508186612fbc565b602060008282546126e89190612f63565b9091555050505b60006126fb8588612fbc565b6001600160a01b038a166000908152600a6020526040812080549293508992909190612728908490612fbc565b9091555050306000908152600a60205260408120805487929061274c908490612f63565b909155505060405185815230906001600160a01b038b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36001600160a01b0388166000908152600a6020526040812080548392906127b9908490612f63565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161280591815260200190565b60405180910390a3505050505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061284d5761284d61303f565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156128c657600080fd5b505afa1580156128da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128fe9190612b8b565b816001815181106129115761291161303f565b6001600160a01b03928316602091820292909201810191909152306000908152600d825260408082207f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d909416825292909152205482111561299a5761299a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d600019611a5c565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906129ef908590600090869030904290600401612ef2565b600060405180830381600087803b158015612a0957600080fd5b505af1158015612a1d573d6000803e3d6000fd5b505050505050565b306000908152600d602090815260408083207f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03168452909152902054821115612a9d57612a9d307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d600019611a5c565b60095460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063f305d71990839060c4016060604051808303818588803b158015612b2757600080fd5b505af1158015612b3b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b609190612dda565b5050505050565b600060208284031215612b7957600080fd5b8135612b8481613055565b9392505050565b600060208284031215612b9d57600080fd5b8151612b8481613055565b60008060408385031215612bbb57600080fd5b8235612bc681613055565b91506020830135612bd681613055565b809150509250929050565b600080600060608486031215612bf657600080fd5b8335612c0181613055565b92506020840135612c1181613055565b929592945050506040919091013590565b60008060408385031215612c3557600080fd5b8235612c4081613055565b91506020830135612bd68161306a565b60008060408385031215612c6357600080fd5b8235612c6e81613055565b946020939093013593505050565b600080600060408486031215612c9157600080fd5b833567ffffffffffffffff80821115612ca957600080fd5b818601915086601f830112612cbd57600080fd5b813581811115612ccc57600080fd5b8760208260051b8501011115612ce157600080fd5b60209283019550935050840135612cf78161306a565b809150509250925092565b600060208284031215612d1457600080fd5b8135612b848161306a565b600060208284031215612d3157600080fd5b8151612b848161306a565b60008060408385031215612d4f57600080fd5b8235612c408161306a565b600060208284031215612d6c57600080fd5b5035919050565b600060208284031215612d8557600080fd5b5051919050565b60008060408385031215612d9f57600080fd5b50508035926020909101359150565b600080600060608486031215612dc357600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612def57600080fd5b8351925060208401519150604084015190509250925092565b600080600080600080600060e0888a031215612e2357600080fd5b873596506020880135955060408801359450606088013593506080880135925060a0880135915060c0880135612e588161306a565b8091505092959891949750929550565b600060208083528351808285015260005b81811015612e9557858101830151858201604001528201612e79565b81811115612ea7576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612f425784516001600160a01b031683529383019391830191600101612f1d565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612f7657612f76613029565b500190565b600082612f9857634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612fb757612fb7613029565b500290565b600082821015612fce57612fce613029565b500390565b600181811c90821680612fe757607f821691505b6020821081141561300857634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561302257613022613029565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114610ff057600080fd5b8015158114610ff057600080fdfea264697066735822122064531be94788fcf80606428af2997a9dd72791c6ba369512c406f9f5ca905e0d64736f6c63430008070033

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

000000000000000000000000bf43cc90965bcc35b1b345a5e16231ce19e254f7

-----Decoded View---------------
Arg [0] : marketingWallet (address): 0xbF43Cc90965bcC35B1b345a5e16231cE19e254F7

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000bf43cc90965bcc35b1b345a5e16231ce19e254f7


Deployed Bytecode Sourcemap

14765:19736:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23110:389;;;;;;;;;;-1:-1:-1;23110:389:0;;;;;:::i;:::-;;:::i;:::-;;18785:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19441:161;;;;;;;;;;-1:-1:-1;19441:161:0;;;;;:::i;:::-;;:::i;:::-;;;7380:14:1;;7373:22;7355:41;;7343:2;7328:18;19441:161:0;7215:187:1;20314:217:0;;;;;;;;;;-1:-1:-1;20314:217:0;;;;;:::i;:::-;;:::i;22438:105::-;;;;;;;;;;-1:-1:-1;22438:105:0;;;;;:::i;:::-;;:::i;16692:51::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6056:32:1;;;6038:51;;6026:2;6011:18;16692:51:0;5892:203:1;19062:95:0;;;;;;;;;;-1:-1:-1;19142:7:0;;19062:95;;;13478:25:1;;;13466:2;13451:18;19062:95:0;13332:177:1;16936:48:0;;;;;;;;;;-1:-1:-1;16936:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15471:46;;;;;;;;;;-1:-1:-1;15471:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;26994:286;;;;;;;;;;-1:-1:-1;26994:286:0;;;;;:::i;:::-;;:::i;16414:28::-;;;;;;;;;;;;;;;;29024:348;;;;;;;;;;-1:-1:-1;29024:348:0;;;;;:::i;:::-;;:::i;15141:31::-;;;;;;;;;;-1:-1:-1;15141:31:0;;;;-1:-1:-1;;;;;15141:31:0;;;21089:117;;;;;;;;;;-1:-1:-1;21089:117:0;;;;;:::i;:::-;;:::i;18971:83::-;;;;;;;;;;-1:-1:-1;19037:9:0;;18971:83;;19037:9;;;;15644:36:1;;15632:2;15617:18;18971:83:0;15502:184:1;22551:266:0;;;;;;;;;;-1:-1:-1;22551:266:0;;;;;:::i;:::-;;:::i;21930:366::-;;;;;;;;;;-1:-1:-1;21930:366:0;;;;;:::i;:::-;;:::i;24622:111::-;;;;;;;;;;-1:-1:-1;24622:111:0;;;;;:::i;:::-;;:::i;16750:38::-;;;;;;;;;;;;;;;16831:33;;;;;;;;;;-1:-1:-1;16831:33:0;;;;;;;;;;;20764:161;;;;;;;;;;-1:-1:-1;20764:161:0;;;;;:::i;:::-;;:::i;16605:32::-;;;;;;;;;;;;;;;;22304:126;;;;;;;;;;-1:-1:-1;22304:126:0;;;;;:::i;:::-;;:::i;20933:148::-;;;;;;;;;;-1:-1:-1;20933:148:0;;;;;:::i;:::-;;:::i;16023:153::-;;;;;;;;;;-1:-1:-1;16023:153:0;;;;;;;;;;;;;;;;;;;;;;13704:25:1;;;13772:14;;13765:22;13760:2;13745:18;;13738:50;13831:14;13824:22;13804:18;;;13797:50;13692:2;13677:18;16023:153:0;13514:339:1;20539:217:0;;;;;;;;;;-1:-1:-1;20539:217:0;;;;;:::i;:::-;;:::i;19610:229::-;;;;;;;;;;-1:-1:-1;19610:229:0;;;;;:::i;:::-;;:::i;16379:28::-;;;;;;;;;;;;;;;;19316:117;;;;;;;;;;-1:-1:-1;19316:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;19409:16:0;19382:7;19409:16;;;:7;:16;;;;;;;19316:117;4854:148;;;;;;;;;;;;;:::i;16871:25::-;;;;;;;;;;-1:-1:-1;16871:25:0;;;;;;;;;;;24048:107;;;;;;;;;;-1:-1:-1;24048:107:0;;;;;:::i;:::-;;:::i;15414:50::-;;;;;;;;;;-1:-1:-1;15414:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16525:32;;;;;;;;;;;;;;;;4640:79;;;;;;;;;;-1:-1:-1;4678:7:0;4705:6;-1:-1:-1;;;;;4705:6:0;4640:79;;20081:225;;;;;;;;;;-1:-1:-1;20081:225:0;;;;;:::i;:::-;;:::i;18876:87::-;;;;;;;;;;;;;:::i;15685:217::-;;;;;;;;;;-1:-1:-1;15685:217:0;;;;;;;;;;;;;;;;;;;;;;;;;7651:14:1;;7644:22;7626:41;;7710:14;;7703:22;7698:2;7683:18;;7676:50;7742:18;;;7735:34;7800:2;7785:18;;7778:34;7613:3;7598:19;15685:217:0;7407:411:1;15095:39:0;;;;;;;;;;-1:-1:-1;15095:39:0;;;;-1:-1:-1;;;;;15095:39:0;;;27288:167;;;;;;;;;;-1:-1:-1;27288:167:0;;;;;:::i;:::-;;:::i;21214:708::-;;;;;;;;;;-1:-1:-1;21214:708:0;;;;;:::i;:::-;;:::i;22825:277::-;;;;;;;;;;-1:-1:-1;22825:277:0;;;;;:::i;:::-;;:::i;32476:167::-;;;;;;;;;;-1:-1:-1;32476:167:0;;;;;:::i;:::-;;:::i;24524:90::-;;;;;;;;;;-1:-1:-1;24524:90:0;;;;;:::i;:::-;;:::i;27463:285::-;;;;;;;;;;-1:-1:-1;27463:285:0;;;;;:::i;:::-;;:::i;24859:171::-;;;;;;;;;;-1:-1:-1;24859:171:0;;;;;:::i;:::-;;:::i;16487:31::-;;;;;;;;;;;;;;;;16644:39;;;;;;;;;;;;;;;;16564:32;;;;;;;;;;;;;;;;23507:533;;;;;;;;;;-1:-1:-1;23507:533:0;;;;;:::i;:::-;;:::i;16905:24::-;;;;;;;;;;-1:-1:-1;16905:24:0;;;;;;;;;;;16341:29;;;;;;;;;;-1:-1:-1;16341:29:0;;;;;;;;;;;;;;;;;;;;;15321:25:1;;;15377:2;15362:18;;15355:34;;;;15405:18;;;15398:34;15475:14;15468:22;15463:2;15448:18;;15441:50;15308:3;15293:19;16341:29:0;15096:401:1;16449:31:0;;;;;;;;;;;;;;;;19165:143;;;;;;;;;;-1:-1:-1;19165:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;19273:18:0;;;19246:7;19273:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19165:143;24741:110;;;;;;;;;;-1:-1:-1;24741:110:0;;;;;:::i;:::-;;:::i;34318:180::-;;;;;;;;;;-1:-1:-1;34318:180:0;;;;;:::i;:::-;;:::i;5010:281::-;;;;;;;;;;-1:-1:-1;5010:281:0;;;;;:::i;:::-;;:::i;19847:226::-;;;;;;;;;;-1:-1:-1;19847:226:0;;;;;:::i;:::-;;:::i;23110:389::-;4767:6;;-1:-1:-1;;;;;4767:6:0;1257:10;4767:22;4759:67;;;;-1:-1:-1;;;4759:67:0;;;;;;;:::i;:::-;;;;;;;;;23217:13:::1;-1:-1:-1::0;;;;;23206:24:0::1;:7;-1:-1:-1::0;;;;;23206:24:0::1;;:52;;;-1:-1:-1::0;;;;;;23234:24:0;::::1;23253:4;23234:24;23206:52;:91;;;;23281:15;-1:-1:-1::0;;;;;23262:35:0::1;:7;-1:-1:-1::0;;;;;23262:35:0::1;;23206:91;23203:107;;;23300:8;::::0;::::1;23203:107;23339:4;23324:19:::0;::::1;;;23320:172;;;-1:-1:-1::0;;;;;23360:23:0;::::1;;::::0;;;:14:::1;:23;::::0;;;;:30;;-1:-1:-1;;23360:30:0::1;23386:4;23360:30;::::0;;23110:389;;:::o;23320:172::-:1;23412:20:::0;23408:84:::1;;-1:-1:-1::0;;;;;23449:23:0;::::1;23475:5;23449:23:::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;23449:31:0::1;::::0;;23408:84:::1;23110:389:::0;;:::o;18785:83::-;18822:13;18855:5;18848:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18785:83;:::o;19441:161::-;19516:4;19533:39;1257:10;19556:7;19565:6;19533:8;:39::i;:::-;-1:-1:-1;19590:4:0;19441:161;;;;:::o;20314:217::-;4767:6;;-1:-1:-1;;;;;4767:6:0;1257:10;4767:22;4759:67;;;;-1:-1:-1;;;4759:67:0;;;;;;;:::i;:::-;20422:13:::1;:27:::0;;;;20460:16:::1;:25:::0;20496:17:::1;:27:::0;20314:217::o;22438:105::-;4767:6;;-1:-1:-1;;;;;4767:6:0;1257:10;4767:22;4759:67;;;;-1:-1:-1;;;4759:67:0;;;;;;;:::i;:::-;22513:13:::1;:22:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;22513:22:0;;::::1;::::0;;;::::1;::::0;;22438:105::o;26994:286::-;4767:6;;-1:-1:-1;;;;;4767:6:0;1257:10;4767:22;4759:67;;;;-1:-1:-1;;;4759:67:0;;;;;;;:::i;:::-;27105:3:::1;27085:16;:23;;27077:32;;;::::0;::::1;;27180:16;::::0;27140:21:::1;::::0;-1:-1:-1;;;;;27180:16:0::1;27172:100;27257:3;27222:30;27235:16:::0;27140:21;27222:30:::1;:::i;:::-;27221:40;;;;:::i;:::-;27172:100;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;27066:214;26994:286:::0;:::o;29024:348::-;29120:4;29137:36;29147:6;29155:9;29166:6;29137:9;:36::i;:::-;-1:-1:-1;;;;;29255:19:0;;;;;;:11;:19;;;;;;;;1257:10;29255:33;;;;;;;;;29184:158;;29207:6;;29255:76;;29310:6;;29255:76;:::i;:::-;29184:8;:158::i;:::-;-1:-1:-1;29360:4:0;29024:348;;;;;:::o;21089:117::-;4767:6;;-1:-1:-1;;;;;4767:6:0;1257:10;4767:22;4759:67;;;;-1:-1:-1;;;4759:67:0;;;;;;;:::i;:::-;21168:16:::1;:30:::0;;-1:-1:-1;;;;;;21168:30:0::1;-1:-1:-1::0;;;;;21168:30:0;;;::::1;::::0;;;::::1;::::0;;21089:117::o;22551:266::-;1257:10;22639:4;22727:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;22727:34:0;;;;;;;;;;22639:4;;22655:132;;22705:7;;22727:49;;22765:10;;22727:49;:::i;21930:366::-;4767:6;;-1:-1:-1;;;;;4767:6:0;1257:10;4767:22;4759:67;;;;-1:-1:-1;;;4759:67:0;;;;;;;:::i;:::-;22002:18;;::::1;;21997:182;;22060:12;22037:9;:35:::0;22087:18;:25;;-1:-1:-1;;22087:25:0::1;22108:4;22087:25;::::0;;22127:21:::1;:28:::0;;-1:-1:-1;;22127:28:0::1;22087:25;22127:28;::::0;;21997:182:::1;22191:12;:20:::0;;-1:-1:-1;;22191:20:0::1;::::0;;::::1;;;;::::0;;22229:18;;22191:20:::1;22229:18;22224:65;;22269:8;::::0;::::1;::::0;;;::::1;22224:65;21930:366:::0;:::o;24622:111::-;4767:6;;-1:-1:-1;;;;;4767:6:0;1257:10;4767:22;4759:67;;;;-1:-1:-1;;;4759:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24691:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;24691:34:0::1;24721:4;24691:34;::::0;;24622:111::o;20764:161::-;4767:6;;-1:-1:-1;;;;;4767:6:0;1257:10;4767:22;4759:67;;;;-1:-1:-1;;;4759:67:0;;;;;;;:::i;:::-;20849:26;;20839:36;::::1;;20831:45;;;::::0;::::1;;20887:21:::0;:30;20764:161::o;22304:126::-;4767:6;;-1:-1:-1;;;;;4767:6:0;1257:10;4767:22;4759:67;;;;-1:-1:-1;;;4759:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22392:21:0;;;::::1;;::::0;;;:16:::1;:21;::::0;;;;:30;;-1:-1:-1;;22392:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22304:126::o;20933:148::-;4767:6;;-1:-1:-1;;;;;4767:6:0;1257:10;4767:22;4759:67;;;;-1:-1:-1;;;4759:67:0;;;;;;;:::i;:::-;21027:16:::1;:46:::0;;-1:-1:-1;;;;;;21027:46:0::1;-1:-1:-1::0;;;;;21027:46:0;;;::::1;::::0;;;::::1;::::0;;20933:148::o;20539:217::-;4767:6;;-1:-1:-1;;;;;4767:6:0;1257:10;4767:22;4759:67;;;;-1:-1:-1;;;4759:67:0;;;;;;;:::i;:::-;20647:13:::1;:27:::0;;;;20685:16:::1;:25:::0;20721:17:::1;:27:::0;20539:217::o;19610:229::-;4767:6;;-1:-1:-1;;;;;4767:6:0;1257:10;4767:22;4759:67;;;;-1:-1:-1;;;4759:67:0;;;;;;;:::i;:::-;19741:3:::1;19710:27;19725:12:::0;19710;:27:::1;:::i;:::-;:34;;19702:43;;;::::0;::::1;;19756:17;:32:::0;;;;19799:17:::1;:32:::0;19610:229::o;4854:148::-;4767:6;;-1:-1:-1;;;;;4767:6:0;1257:10;4767:22;4759:67;;;;-1:-1:-1;;;4759:67:0;;;;;;;:::i;:::-;4961:1:::1;4945:6:::0;;4924:40:::1;::::0;-1:-1:-1;;;;;4945:6:0;;::::1;::::0;4924:40:::1;::::0;4961:1;;4924:40:::1;4992:1;4975:19:::0;;-1:-1:-1;;;;;;4975:19:0::1;::::0;;4854:148::o;24048:107::-;4767:6;;-1:-1:-1;;;;;4767:6:0;1257:10;4767:22;4759:67;;;;-1:-1:-1;;;4759:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24116:23:0::1;24142:5;24116:23:::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;24116:31:0::1;::::0;;24048:107::o;20081:225::-;4767:6;;-1:-1:-1;;;;;4767:6:0;1257:10;4767:22;4759:67;;;;-1:-1:-1;;;4759:67:0;;;;;;;:::i;:::-;20216:3:::1;20185:27;20200:12:::0;20185;:27:::1;:::i;:::-;:34;;20177:43;;;::::0;::::1;;20231:13;:28:::0;;;;20270:13:::1;:28:::0;20081:225::o;18876:87::-;18915:13;18948:7;18941:14;;;;;:::i;27288:167::-;4767:6;;-1:-1:-1;;;;;4767:6:0;1257:10;4767:22;4759:67;;;;-1:-1:-1;;;4759:67:0;;;;;;;:::i;:::-;27392:4:::1;27355:16;19409::::0;;;:7;:16;;;;;;;27409:38:::1;::::0;27434:2;19409:16;27409:9:::1;:38::i;21214:708::-:0;4767:6;;-1:-1:-1;;;;;4767:6:0;1257:10;4767:22;4759:67;;;;-1:-1:-1;;;4759:67:0;;;;;;;:::i;:::-;21399:4:::1;21389:7;;:14;;;;:::i;:::-;21381:3;21374;21364:7;;:13;;;;:::i;:::-;21363:21;;;;:::i;:::-;:41;;21355:105;;;::::0;-1:-1:-1;;;21355:105:0;;11944:2:1;21355:105:0::1;::::0;::::1;11926:21:1::0;11983:2;11963:18;;;11956:30;12022:34;12002:18;;;11995:62;-1:-1:-1;;;12073:18:1;;;12066:49;12132:19;;21355:105:0::1;11742:415:1::0;21355:105:0::1;21515:4;21505:7;;:14;;;;:::i;:::-;21497:3;21490;21480:7;;:13;;;;:::i;:::-;21479:21;;;;:::i;:::-;:41;;21471:100;;;::::0;-1:-1:-1;;;21471:100:0;;10076:2:1;21471:100:0::1;::::0;::::1;10058:21:1::0;10115:2;10095:18;;;10088:30;10154:34;10134:18;;;10127:62;-1:-1:-1;;;10205:18:1;;;10198:44;10259:19;;21471:100:0::1;9874:410:1::0;21471:100:0::1;21582:13;21617:3;21609;21599:7;;:13;;;;:::i;:::-;21598:23;;;;:::i;:::-;21582:39;;21632:13;21666:3;21659;21649:7;;:13;;;;:::i;:::-;21648:21;;;;:::i;:::-;21632:37;;21680:18;21719:2;21712;21702:7;;:12;;;;:::i;:::-;21701:21;;;;:::i;:::-;21746:168;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;::::1;;::::0;;;;;;;21733:10:::1;:181:::0;;;;-1:-1:-1;21733:181:0;;;;;;;-1:-1:-1;;21733:181:0::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;21214:708:0:o;22825:277::-;1257:10;22918:4;23007:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;23007:34:0;;;;;;;;;;22918:4;;22935:137;;22985:7;;23007:54;;23045:15;;23007:54;:::i;32476:167::-;32554:4;32571:42;1257:10;32595:9;32606:6;32571:9;:42::i;24524:90::-;4767:6;;-1:-1:-1;;;;;4767:6:0;1257:10;4767:22;4759:67;;;;-1:-1:-1;;;4759:67:0;;;;;;;:::i;:::-;24580:18;:26;;-1:-1:-1;;24580:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24524:90::o;27463:285::-;27546:10;4767:6;;-1:-1:-1;;;;;4767:6:0;1257:10;4767:22;4759:67;;;;-1:-1:-1;;;4759:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27577:20:0;::::1;27569:29;;;::::0;::::1;;27636:39;::::0;-1:-1:-1;;;27636:39:0;;27669:4:::1;27636:39;::::0;::::1;6038:51:1::0;27609:24:0::1;::::0;-1:-1:-1;;;;;27636:24:0;::::1;::::0;::::1;::::0;6011:18:1;;27636:39:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27694:46;::::0;-1:-1:-1;;;27694:46:0;;-1:-1:-1;;;;;6516:32:1;;;27694:46:0::1;::::0;::::1;6498:51:1::0;6565:18;;;6558:34;;;27609:66:0;;-1:-1:-1;27694:23:0;;::::1;::::0;::::1;::::0;6471:18:1;;27694:46:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27686:54:::0;27463:285;-1:-1:-1;;;;27463:285:0:o;24859:171::-;4767:6;;-1:-1:-1;;;;;4767:6:0;1257:10;4767:22;4759:67;;;;-1:-1:-1;;;4759:67:0;;;;;;;:::i;:::-;24936:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;24936:32:0;;::::1;;::::0;;24984:38:::1;::::0;::::1;::::0;::::1;::::0;24960:8;7380:14:1;7373:22;7355:41;;7343:2;7328:18;;7215:187;24984:38:0::1;;;;;;;;24859:171:::0;:::o;23507:533::-;4767:6;;-1:-1:-1;;;;;4767:6:0;1257:10;4767:22;4759:67;;;;-1:-1:-1;;;4759:67:0;;;;;;;:::i;:::-;23609:9:::1;23604:429;23620:19:::0;;::::1;23604:429;;;23661:15;23679:8;;23688:1;23679:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;23661:29;;23719:13;-1:-1:-1::0;;;;;23708:24:0::1;:7;-1:-1:-1::0;;;;;23708:24:0::1;;:52;;;-1:-1:-1::0;;;;;;23736:24:0;::::1;23755:4;23736:24;23708:52;:91;;;;23783:15;-1:-1:-1::0;;;;;23764:35:0::1;:7;-1:-1:-1::0;;;;;23764:35:0::1;;23708:91;23705:107;;;23802:8;::::0;::::1;23705:107;23845:4;23830:19:::0;::::1;;;23826:188;;;-1:-1:-1::0;;;;;23870:23:0;::::1;;::::0;;;:14:::1;:23;::::0;;;;:30;;-1:-1:-1;;23870:30:0::1;23896:4;23870:30;::::0;;23826:188:::1;;;23926:20:::0;23922:92:::1;;-1:-1:-1::0;;;;;23967:23:0;::::1;23993:5;23967:23:::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;23967:31:0::1;::::0;;23922:92:::1;-1:-1:-1::0;23641:3:0;::::1;::::0;::::1;:::i;:::-;;;;23604:429;;;;23507:533:::0;;;:::o;24741:110::-;4767:6;;-1:-1:-1;;;;;4767:6:0;1257:10;4767:22;4759:67;;;;-1:-1:-1;;;4759:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24808:27:0::1;24838:5;24808:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;24808:35:0::1;::::0;;24741:110::o;34318:180::-;4767:6;;-1:-1:-1;;;;;4767:6:0;1257:10;4767:22;4759:67;;;;-1:-1:-1;;;4759:67:0;;;;;;;:::i;:::-;34400:12:::1;:39:::0;;-1:-1:-1;;34450:40:0;34400:39;::::1;;-1:-1:-1::0;;34450:40:0;;;;;34400:39:::1;34450:40:::0;::::1;;::::0;;;::::1;;::::0;;34318:180::o;5010:281::-;4767:6;;-1:-1:-1;;;;;4767:6:0;1257:10;4767:22;4759:67;;;;-1:-1:-1;;;4759:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5113:22:0;::::1;5091:110;;;::::0;-1:-1:-1;;;5091:110:0;;9266:2:1;5091:110:0::1;::::0;::::1;9248:21:1::0;9305:2;9285:18;;;9278:30;9344:34;9324:18;;;9317:62;-1:-1:-1;;;9395:18:1;;;9388:36;9441:19;;5091:110:0::1;9064:402:1::0;5091:110:0::1;5238:6;::::0;;5217:38:::1;::::0;-1:-1:-1;;;;;5217:38:0;;::::1;::::0;5238:6;::::1;::::0;5217:38:::1;::::0;::::1;5266:6;:17:::0;;-1:-1:-1;;;;;;5266:17:0::1;-1:-1:-1::0;;;;;5266:17:0;;;::::1;::::0;;;::::1;::::0;;5010:281::o;19847:226::-;4767:6;;-1:-1:-1;;;;;4767:6:0;1257:10;4767:22;4759:67;;;;-1:-1:-1;;;4759:67:0;;;;;;;:::i;:::-;19977:3:::1;19946:27;19961:12:::0;19946;:27:::1;:::i;:::-;:34;;19938:43;;;::::0;::::1;;19992:16;:31:::0;20034:16:::1;:31:::0;19847:226::o;25132:335::-;-1:-1:-1;;;;;25223:19:0;;25215:68;;;;-1:-1:-1;;;25215:68:0;;12770:2:1;25215:68:0;;;12752:21:1;12809:2;12789:18;;;12782:30;12848:34;12828:18;;;12821:62;-1:-1:-1;;;12899:18:1;;;12892:34;12943:19;;25215:68:0;12568:400:1;25215:68:0;-1:-1:-1;;;;;25302:21:0;;25294:68;;;;-1:-1:-1;;;25294:68:0;;9673:2:1;25294:68:0;;;9655:21:1;9712:2;9692:18;;;9685:30;9751:34;9731:18;;;9724:62;-1:-1:-1;;;9802:18:1;;;9795:32;9844:19;;25294:68:0;9471:398:1;25294:68:0;-1:-1:-1;;;;;25375:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;25427:32;;13478:25:1;;;25427:32:0;;13451:18:1;25427:32:0;;;;;;;25132:335;;;:::o;29384:3084::-;-1:-1:-1;;;;;29472:18:0;;29464:68;;;;-1:-1:-1;;;29464:68:0;;12364:2:1;29464:68:0;;;12346:21:1;12403:2;12383:18;;;12376:30;12442:34;12422:18;;;12415:62;-1:-1:-1;;;12493:18:1;;;12486:35;12538:19;;29464:68:0;12162:401:1;29464:68:0;-1:-1:-1;;;;;29551:16:0;;29543:64;;;;-1:-1:-1;;;29543:64:0;;8862:2:1;29543:64:0;;;8844:21:1;8901:2;8881:18;;;8874:30;8940:34;8920:18;;;8913:62;-1:-1:-1;;;8991:18:1;;;8984:33;9034:19;;29543:64:0;8660:399:1;29543:64:0;29635:1;29626:6;:10;29618:64;;;;-1:-1:-1;;;29618:64:0;;11202:2:1;29618:64:0;;;11184:21:1;11241:2;11221:18;;;11214:30;11280:34;11260:18;;;11253:62;-1:-1:-1;;;11331:18:1;;;11324:39;11380:19;;29618:64:0;11000:405:1;29618:64:0;-1:-1:-1;;;;;29701:20:0;;;;;;:14;:20;;;;;;;;:29;29693:46;;;;-1:-1:-1;;;29693:46:0;;;;;;11612:2:1;11594:21;;;11651:1;11631:18;;;11624:29;-1:-1:-1;;;11684:2:1;11669:18;;11662:34;11728:2;11713:18;;11410:327;29693:46:0;-1:-1:-1;;;;;29758:18:0;;;;;;:14;:18;;;;;;;;:27;29750:44;;;;-1:-1:-1;;;29750:44:0;;;;;;11612:2:1;11594:21;;;11651:1;11631:18;;;11624:29;-1:-1:-1;;;11684:2:1;11669:18;;11662:34;11728:2;11713:18;;11410:327;29750:44:0;29812:12;;;;;;;29807:236;;-1:-1:-1;;;;;29849:22:0;;;;;;:16;:22;;;;;;;;;:46;;-1:-1:-1;;;;;;29875:20:0;;;;;;:16;:20;;;;;;;;29849:46;29841:80;;;;-1:-1:-1;;;29841:80:0;;10852:2:1;29841:80:0;;;10834:21:1;10891:2;10871:18;;;10864:30;-1:-1:-1;;;10910:18:1;;;10903:51;10971:18;;29841:80:0;10650:345:1;29841:80:0;-1:-1:-1;;;;;29954:13:0;19409:16;19382:7;19409:16;;;:7;:16;;;;;;29944:29;;:52;;;29983:13;-1:-1:-1;;;;;29977:19:0;:2;-1:-1:-1;;;;;29977:19:0;;;29944:52;29936:95;;;;-1:-1:-1;;;29936:95:0;;13175:2:1;29936:95:0;;;13157:21:1;13214:2;13194:18;;;13187:30;13253:32;13233:18;;;13226:60;13303:18;;29936:95:0;12973:354:1;29936:95:0;30059:18;;;;30055:697;;;4678:7;4705:6;-1:-1:-1;;;;;30097:15:0;;;4705:6;;30097:15;;;;:32;;-1:-1:-1;4678:7:0;4705:6;-1:-1:-1;;;;;30116:13:0;;;4705:6;;30116:13;;30097:32;:77;;;-1:-1:-1;;;;;;30133:21:0;;30147:6;30133:21;;;;:41;;-1:-1:-1;;;;;;30158:16:0;;;;30133:41;30094:647;;;30221:13;-1:-1:-1;;;;;30213:21:0;:4;-1:-1:-1;;;;;30213:21:0;;:44;;;;30244:13;-1:-1:-1;;;;;30238:19:0;:2;-1:-1:-1;;;;;30238:19:0;;30213:44;30209:259;;;-1:-1:-1;;;;;30304:22:0;;;;;;:18;:22;;;;;;;;30303:23;:52;;;;-1:-1:-1;;;;;;30331:24:0;;;;;;:18;:24;;;;;;;;30330:25;30303:52;30300:149;;;30402:10;:22;30392:32;;;30384:41;;;;;;30503:15;-1:-1:-1;;;;;30489:30:0;:2;-1:-1:-1;;;;;30489:30:0;;;:53;;;;;30529:13;-1:-1:-1;;;;;30523:19:0;:2;-1:-1:-1;;;;;30523:19:0;;;30489:53;30486:240;;;-1:-1:-1;;;;;30571:22:0;;;;;;:18;:22;;;;;;;;30567:140;;30656:26;;30646:6;30630:13;30640:2;-1:-1:-1;;;;;19409:16:0;19382:7;19409:16;;;:7;:16;;;;;;;19316:117;30630:13;:22;;;;:::i;:::-;:52;;30622:61;;;;;;30776:13;-1:-1:-1;;;;;30768:21:0;:4;-1:-1:-1;;;;;30768:21:0;;:55;;;;;30807:15;-1:-1:-1;;;;;30793:30:0;:2;-1:-1:-1;;;;;30793:30:0;;;30768:55;:82;;;;-1:-1:-1;;;;;;30828:22:0;;;;;;:18;:22;;;;;;;;30827:23;30768:82;30764:647;;;30889:12;:31;;;30885:204;;;-1:-1:-1;;;;;30953:15:0;;;;;;:11;:15;;;;;;30971;-1:-1:-1;30945:42:0;;;;;;31047:21;;31028:41;;:15;:41;:::i;:::-;-1:-1:-1;;;;;31010:15:0;;;;;;:11;:15;;;;;:59;30885:204;30764:647;;;31122:13;-1:-1:-1;;;;;31114:21:0;:4;-1:-1:-1;;;;;31114:21:0;;;:50;;;;-1:-1:-1;;;;;;31140:24:0;;;;;;:18;:24;;;;;;;;31139:25;31114:50;31110:301;;;31188:12;:32;;;;;;31184:212;;;-1:-1:-1;;;;;31253:18:0;;;;;;:12;:18;;;;;;31275:15;-1:-1:-1;31253:37:0;31245:46;;;;;;31354:21;;31335:41;;:15;:41;:::i;:::-;-1:-1:-1;;;;;31314:18:0;;;;;;:12;:18;;;;;:62;31184:212;31442:16;;;;31441:17;:55;;;;;31483:13;-1:-1:-1;;;;;31475:21:0;:4;-1:-1:-1;;;;;31475:21:0;;;31441:55;:93;;;;-1:-1:-1;31513:21:0;;;;;;;31441:93;31423:626;;;31610:4;31561:28;19409:16;;;:7;:16;;;;;;31635:13;;;;;;;:58;;;;;31676:17;;31652:20;:41;;31635:58;:109;;;;-1:-1:-1;31718:26:0;;31697:17;;:47;;31635:109;31631:407;;;31780:26;;31765:42;;:14;:42::i;:::-;31631:407;;;31834:13;;;;;;;31833:14;:66;;;;;31875:24;;31851:20;:48;;31833:66;:124;;;;-1:-1:-1;31931:26:0;;31903:24;;:54;;31833:124;31829:209;;;31995:26;;31978:44;;:16;:44::i;:::-;31546:503;31423:626;-1:-1:-1;;;;;32242:24:0;;32122:12;32242:24;;;:18;:24;;;;;;32137:4;;32242:24;;;:50;;-1:-1:-1;;;;;;32270:22:0;;;;;;:18;:22;;;;;;;;32242:50;32238:98;;;-1:-1:-1;32319:5:0;32238:98;32419:41;32434:4;32440:2;32444:6;32452:7;32419:14;:41::i;25475:889::-;17027:16;:23;;-1:-1:-1;;17027:23:0;17046:4;17027:23;;;25577:21:::1;17027:16:::0;25632::::1;25647:1;25632:12:::0;:16:::1;:::i;:::-;25609:39:::0;-1:-1:-1;25659:23:0::1;25685:27;25609:39:::0;25685:12;:27:::1;:::i;:::-;25659:53:::0;-1:-1:-1;25729:16:0;;25725:79:::1;;25762:30;25779:12;25762:16;:30::i;:::-;25837:21;25816:18;25904:27;25917:14:::0;25837:21;25904:27:::1;:::i;:::-;25869:63;;25967:1;25949:15;:19;:43;;;;;25991:1;25972:16;:20;25949:43;25945:192;;;26009:47;26022:15;26039:16;26009:12;:47::i;:::-;26076:49;::::0;;15017:25:1;;;15073:2;15058:18;;15051:34;;;26076:49:0::1;::::0;14990:18:1;26076:49:0::1;;;;;;;25945:192;26170:12;26149:17;;:33;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;26219:26:0;;26199:17:::1;::::0;:46:::1;:108:::0;::::1;;;;26306:1;26285:17;;26266:16;;26250:13;;:32;;;;:::i;:::-;:52;;;;:::i;:::-;26249:58;26199:108;26195:162;;;26324:13;:21:::0;;-1:-1:-1;;26324:21:0::1;::::0;;26195:162:::1;-1:-1:-1::0;;17073:16:0;:24;;-1:-1:-1;;17073:24:0;;;-1:-1:-1;;;;25475:889:0:o;26372:614::-;17027:16;:23;;-1:-1:-1;;17027:23:0;17046:4;17027:23;;;26455:16;;26451:79:::1;;26488:30;26505:12;26488:16;:30::i;:::-;26569:21;26605:20:::0;;26601:145:::1;;26642:16;::::0;:43:::1;::::0;-1:-1:-1;;;;;26642:16:0;;::::1;::::0;:43;::::1;;;::::0;26668:16;;26642::::1;:43:::0;:16;:43;26668:16;26642;:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;26705:29:0::1;::::0;13478:25:1;;;26705:29:0::1;::::0;13466:2:1;13451:18;26705:29:0::1;;;;;;;26601:145;26786:12;26758:24;;:40;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;26842:26:0;;26815:24:::1;::::0;:53:::1;:115:::0;::::1;;;;26928:1;26908:17;;26889:16;;26873:13;;:32;;;;:::i;:::-;:52;;;;:::i;:::-;:56;26815:115;26811:168;;;26947:13;:20:::0;;-1:-1:-1;;26947:20:0::1;::::0;::::1;::::0;;26811:168:::1;-1:-1:-1::0;;17073:16:0;:24;;-1:-1:-1;;17073:24:0;;;26372:614::o;32724:1586::-;32829:17;32861:25;32897;32933:12;32970:7;32966:1048;;;33008:13;-1:-1:-1;;;;;32998:23:0;:6;-1:-1:-1;;;;;32998:23:0;;32994:447;;;33062:16;;33042:36;;33117:16;;33097:36;;32994:447;;;33172:13;-1:-1:-1;;;;;33159:26:0;:9;-1:-1:-1;;;;;33159:26:0;;33155:286;;;33226:17;;33206:37;;33282:17;;33262:37;;33155:286;;;33360:13;;33340:33;;33412:13;;33392:33;;33155:286;33461:7;33457:116;;;33509:3;33489:23;;33551:3;33531:23;;33457:116;33655:4;33612:37;33632:17;33612;:37;:::i;:::-;33602:48;;:6;:48;:::i;:::-;33601:59;;;;:::i;:::-;33589:71;-1:-1:-1;33723:1:0;33682:37;33702:17;33682;:37;:::i;:::-;33681:43;33677:326;;;33745:27;33809:37;33829:17;33809;:37;:::i;:::-;33776:29;33788:17;33776:9;:29;:::i;:::-;:71;;;;:::i;:::-;33745:103;;33888:19;33867:17;;:40;;;;;;;:::i;:::-;;;;-1:-1:-1;33955:31:0;;-1:-1:-1;33967:19:0;33955:9;:31;:::i;:::-;33926:24;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;;33677:326:0;34034:15;34052:18;34061:9;34052:6;:18;:::i;:::-;-1:-1:-1;;;;;34081:15:0;;;;;;:7;:15;;;;;:25;;34034:36;;-1:-1:-1;34100:6:0;;34081:15;;;:25;;34100:6;;34081:25;:::i;:::-;;;;-1:-1:-1;;34133:4:0;34117:22;;;;:7;:22;;;;;:35;;34143:9;;34117:22;:35;;34143:9;;34117:35;:::i;:::-;;;;-1:-1:-1;;34168:42:0;;13478:25:1;;;34193:4:0;;-1:-1:-1;;;;;34168:42:0;;;;;13466:2:1;13451:18;34168:42:0;;;;;;;-1:-1:-1;;;;;34221:18:0;;;;;;:7;:18;;;;;:29;;34243:7;;34221:18;:29;;34243:7;;34221:29;:::i;:::-;;;;;;;;34283:9;-1:-1:-1;;;;;34266:36:0;34275:6;-1:-1:-1;;;;;34266:36:0;;34294:7;34266:36;;;;13478:25:1;;13466:2;13451:18;;13332:177;34266:36:0;;;;;;;;32818:1492;;;;;32724:1586;;;;:::o;27756:692::-;27906:16;;;27920:1;27906:16;;;;;;;;27882:21;;27906:16;;;;;;;;;;-1:-1:-1;27906:16:0;27882:40;;27951:4;27933;27938:1;27933:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;27933:23:0;;;-1:-1:-1;;;;;27933:23:0;;;;;27977:15;-1:-1:-1;;;;;27977:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27967:4;27972:1;27967:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27967:32:0;;;:7;;;;;;;;;;:32;;;;28035:4;28015:26;;;;:11;:26;;;;;;28050:15;28015:52;;;;;;;;;;;:66;-1:-1:-1;28012:166:0;;;28098:68;28115:4;28130:15;-1:-1:-1;;28098:8:0;:68::i;:::-;28216:224;;-1:-1:-1;;;28216:224:0;;-1:-1:-1;;;;;28216:15:0;:66;;;;:224;;28297:11;;28323:1;;28367:4;;28394;;28414:15;;28216:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27811:637;27756:692;:::o;28456:560::-;28562:4;28542:26;;;;:11;:26;;;;;;;;28577:15;-1:-1:-1;;;;;28542:52:0;;;;;;;;;:66;-1:-1:-1;28539:166:0;;;28625:68;28642:4;28657:15;-1:-1:-1;;28625:8:0;:68::i;:::-;28951:16;;28747:261;;-1:-1:-1;;;28747:261:0;;28819:4;28747:261;;;6944:34:1;6994:18;;;6987:34;;;28865:1:0;7037:18:1;;;7030:34;;;7080:18;;;7073:34;-1:-1:-1;;;;;28951:16:0;;;7123:19:1;;;7116:44;28982:15:0;7176:19:1;;;7169:35;28747:15:0;:31;;;;;;28786:9;;6878:19:1;;28747:261:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28456:560;;:::o;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;:::-;250:5;14:247;-1:-1:-1;;;14:247:1:o;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;456:31;:::i;782:388::-;850:6;858;911:2;899:9;890:7;886:23;882:32;879:52;;;927:1;924;917:12;879:52;966:9;953:23;985:31;1010:5;985:31;:::i;:::-;1035:5;-1:-1:-1;1092:2:1;1077:18;;1064:32;1105:33;1064:32;1105:33;:::i;:::-;1157:7;1147:17;;;782:388;;;;;:::o;1175:456::-;1252:6;1260;1268;1321:2;1309:9;1300:7;1296:23;1292:32;1289:52;;;1337:1;1334;1327:12;1289:52;1376:9;1363:23;1395:31;1420:5;1395:31;:::i;:::-;1445:5;-1:-1:-1;1502:2:1;1487:18;;1474:32;1515:33;1474:32;1515:33;:::i;:::-;1175:456;;1567:7;;-1:-1:-1;;;1621:2:1;1606:18;;;;1593:32;;1175:456::o;1636:382::-;1701:6;1709;1762:2;1750:9;1741:7;1737:23;1733:32;1730:52;;;1778:1;1775;1768:12;1730:52;1817:9;1804:23;1836:31;1861:5;1836:31;:::i;:::-;1886:5;-1:-1:-1;1943:2:1;1928:18;;1915:32;1956:30;1915:32;1956:30;:::i;2023:315::-;2091:6;2099;2152:2;2140:9;2131:7;2127:23;2123:32;2120:52;;;2168:1;2165;2158:12;2120:52;2207:9;2194:23;2226:31;2251:5;2226:31;:::i;:::-;2276:5;2328:2;2313:18;;;;2300:32;;-1:-1:-1;;;2023:315:1:o;2343:750::-;2435:6;2443;2451;2504:2;2492:9;2483:7;2479:23;2475:32;2472:52;;;2520:1;2517;2510:12;2472:52;2560:9;2547:23;2589:18;2630:2;2622:6;2619:14;2616:34;;;2646:1;2643;2636:12;2616:34;2684:6;2673:9;2669:22;2659:32;;2729:7;2722:4;2718:2;2714:13;2710:27;2700:55;;2751:1;2748;2741:12;2700:55;2791:2;2778:16;2817:2;2809:6;2806:14;2803:34;;;2833:1;2830;2823:12;2803:34;2888:7;2881:4;2871:6;2868:1;2864:14;2860:2;2856:23;2852:34;2849:47;2846:67;;;2909:1;2906;2899:12;2846:67;2940:4;2932:13;;;;-1:-1:-1;2964:6:1;-1:-1:-1;;3005:20:1;;2992:34;3035:28;2992:34;3035:28;:::i;:::-;3082:5;3072:15;;;2343:750;;;;;:::o;3098:241::-;3154:6;3207:2;3195:9;3186:7;3182:23;3178:32;3175:52;;;3223:1;3220;3213:12;3175:52;3262:9;3249:23;3281:28;3303:5;3281:28;:::i;3344:245::-;3411:6;3464:2;3452:9;3443:7;3439:23;3435:32;3432:52;;;3480:1;3477;3470:12;3432:52;3512:9;3506:16;3531:28;3553:5;3531:28;:::i;3594:376::-;3656:6;3664;3717:2;3705:9;3696:7;3692:23;3688:32;3685:52;;;3733:1;3730;3723:12;3685:52;3772:9;3759:23;3791:28;3813:5;3791:28;:::i;3975:180::-;4034:6;4087:2;4075:9;4066:7;4062:23;4058:32;4055:52;;;4103:1;4100;4093:12;4055:52;-1:-1:-1;4126:23:1;;3975:180;-1:-1:-1;3975:180:1:o;4160:184::-;4230:6;4283:2;4271:9;4262:7;4258:23;4254:32;4251:52;;;4299:1;4296;4289:12;4251:52;-1:-1:-1;4322:16:1;;4160:184;-1:-1:-1;4160:184:1:o;4349:248::-;4417:6;4425;4478:2;4466:9;4457:7;4453:23;4449:32;4446:52;;;4494:1;4491;4484:12;4446:52;-1:-1:-1;;4517:23:1;;;4587:2;4572:18;;;4559:32;;-1:-1:-1;4349:248:1:o;4602:316::-;4679:6;4687;4695;4748:2;4736:9;4727:7;4723:23;4719:32;4716:52;;;4764:1;4761;4754:12;4716:52;-1:-1:-1;;4787:23:1;;;4857:2;4842:18;;4829:32;;-1:-1:-1;4908:2:1;4893:18;;;4880:32;;4602:316;-1:-1:-1;4602:316:1:o;4923:306::-;5011:6;5019;5027;5080:2;5068:9;5059:7;5055:23;5051:32;5048:52;;;5096:1;5093;5086:12;5048:52;5125:9;5119:16;5109:26;;5175:2;5164:9;5160:18;5154:25;5144:35;;5219:2;5208:9;5204:18;5198:25;5188:35;;4923:306;;;;;:::o;5234:653::-;5344:6;5352;5360;5368;5376;5384;5392;5445:3;5433:9;5424:7;5420:23;5416:33;5413:53;;;5462:1;5459;5452:12;5413:53;5498:9;5485:23;5475:33;;5555:2;5544:9;5540:18;5527:32;5517:42;;5606:2;5595:9;5591:18;5578:32;5568:42;;5657:2;5646:9;5642:18;5629:32;5619:42;;5708:3;5697:9;5693:19;5680:33;5670:43;;5760:3;5749:9;5745:19;5732:33;5722:43;;5815:3;5804:9;5800:19;5787:33;5829:28;5851:5;5829:28;:::i;:::-;5876:5;5866:15;;;5234:653;;;;;;;;;;:::o;8058:597::-;8170:4;8199:2;8228;8217:9;8210:21;8260:6;8254:13;8303:6;8298:2;8287:9;8283:18;8276:34;8328:1;8338:140;8352:6;8349:1;8346:13;8338:140;;;8447:14;;;8443:23;;8437:30;8413:17;;;8432:2;8409:26;8402:66;8367:10;;8338:140;;;8496:6;8493:1;8490:13;8487:91;;;8566:1;8561:2;8552:6;8541:9;8537:22;8533:31;8526:42;8487:91;-1:-1:-1;8639:2:1;8618:15;-1:-1:-1;;8614:29:1;8599:45;;;;8646:2;8595:54;;8058:597;-1:-1:-1;;;8058:597:1:o;10289:356::-;10491:2;10473:21;;;10510:18;;;10503:30;10569:34;10564:2;10549:18;;10542:62;10636:2;10621:18;;10289:356::o;13858:980::-;14120:4;14168:3;14157:9;14153:19;14199:6;14188:9;14181:25;14225:2;14263:6;14258:2;14247:9;14243:18;14236:34;14306:3;14301:2;14290:9;14286:18;14279:31;14330:6;14365;14359:13;14396:6;14388;14381:22;14434:3;14423:9;14419:19;14412:26;;14473:2;14465:6;14461:15;14447:29;;14494:1;14504:195;14518:6;14515:1;14512:13;14504:195;;;14583:13;;-1:-1:-1;;;;;14579:39:1;14567:52;;14674:15;;;;14639:12;;;;14615:1;14533:9;14504:195;;;-1:-1:-1;;;;;;;14755:32:1;;;;14750:2;14735:18;;14728:60;-1:-1:-1;;;14819:3:1;14804:19;14797:35;14716:3;13858:980;-1:-1:-1;;;13858:980:1:o;15691:128::-;15731:3;15762:1;15758:6;15755:1;15752:13;15749:39;;;15768:18;;:::i;:::-;-1:-1:-1;15804:9:1;;15691:128::o;15824:217::-;15864:1;15890;15880:132;;15934:10;15929:3;15925:20;15922:1;15915:31;15969:4;15966:1;15959:15;15997:4;15994:1;15987:15;15880:132;-1:-1:-1;16026:9:1;;15824:217::o;16046:168::-;16086:7;16152:1;16148;16144:6;16140:14;16137:1;16134:21;16129:1;16122:9;16115:17;16111:45;16108:71;;;16159:18;;:::i;:::-;-1:-1:-1;16199:9:1;;16046:168::o;16219:125::-;16259:4;16287:1;16284;16281:8;16278:34;;;16292:18;;:::i;:::-;-1:-1:-1;16329:9:1;;16219:125::o;16349:380::-;16428:1;16424:12;;;;16471;;;16492:61;;16546:4;16538:6;16534:17;16524:27;;16492:61;16599:2;16591:6;16588:14;16568:18;16565:38;16562:161;;;16645:10;16640:3;16636:20;16633:1;16626:31;16680:4;16677:1;16670:15;16708:4;16705:1;16698:15;16562:161;;16349:380;;;:::o;16734:135::-;16773:3;-1:-1:-1;;16794:17:1;;16791:43;;;16814:18;;:::i;:::-;-1:-1:-1;16861:1:1;16850:13;;16734:135::o;16874:127::-;16935:10;16930:3;16926:20;16923:1;16916:31;16966:4;16963:1;16956:15;16990:4;16987:1;16980:15;17006:127;17067:10;17062:3;17058:20;17055:1;17048:31;17098:4;17095:1;17088:15;17122:4;17119:1;17112:15;17270:131;-1:-1:-1;;;;;17345:31:1;;17335:42;;17325:70;;17391:1;17388;17381:12;17406:118;17492:5;17485:13;17478:21;17471:5;17468:32;17458:60;;17514:1;17511;17504:12

Swarm Source

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