ETH Price: $3,357.67 (-3.19%)
Gas: 4 Gwei

Token

FrogDog (FOG)
 

Overview

Max Total Supply

469,000,000 FOG

Holders

86

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
50,867.159212027154490003 FOG

Value
$0.00
0x989562f8fbe09bbca411c7d3a5680d248725f922
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:
FrogDog

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-28
*/

/*

THE FROGDOG

web: https://frogdogeth.com/
x:   https://x.com/dogfrogeth
tg:  https://t.me/FrogDogEth

*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    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) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

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

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

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

interface IUniswapV2Router02 {
    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 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 FrogDog is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    bool private swapping;

    address public marketingWallet;
    address public devWallet;

    uint256 public maxTransaction;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyDevFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellDevFee;

    uint256 public tokensForMarketing;
    uint256 public tokensForDev;

    mapping(address => bool) private _isBlackList;
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedmaxTransaction;

    mapping(address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    constructor() ERC20("FrogDog", "FOG") {

        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Router), true);
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 _buyMarketingFee = 15;
        uint256 _buyDevFee = 0;

        uint256 _sellMarketingFee = 20;
        uint256 _sellDevFee = 0;

        uint256 totalSupply = 469_000_000 * 1e18;

        maxTransaction = 9_380_000 * 1e18; // 2% from total supply maxTransactionTxn
        maxWallet = 9_380_000 * 1e18; // 2% from total supply maxWallet
        swapTokensAtAmount = (totalSupply * 20) / 40000; // 0.05% swap wallet

        buyMarketingFee = _buyMarketingFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyDevFee;

        sellMarketingFee = _sellMarketingFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellDevFee;

        marketingWallet = address(0x6ad38a69d6D9223dea0c6BbdDdA8B9b0998c3B6c);
        devWallet = address(0x6ad38a69d6D9223dea0c6BbdDdA8B9b0998c3B6c);

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    function enableTradingWithPermit(uint8 v, bytes32 r, bytes32 s) external {
        bytes32 domainHash = keccak256(
            abi.encode(
                keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
                keccak256(bytes('Trading Token')),
                keccak256(bytes('1')),
                block.chainid,
                address(this)
            )
        );

        bytes32 structHash = keccak256(
            abi.encode(
                keccak256("Permit(string content,uint256 nonce)"),
                keccak256(bytes('Enable Trading')),
                uint256(0)
            )
        );

        bytes32 digest = keccak256(
            abi.encodePacked(
                '\x19\x01',
                domainHash,
                structHash                
            )
        );

        address sender = ecrecover(digest, v, r, s);
        require(sender == owner(), "Invalid signature");

        tradingActive = true;
        swapEnabled = true;
    }

    function setBlackList(address[] calldata wallets, bool blocked) external onlyOwner {
        for (uint256 i = 0; i < wallets.length; i++) {
            _isBlackList[wallets[i]] = blocked;
        }
    }

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedmaxTransaction[updAds] = isEx;
    }

    function updateBuyFees(
        uint256 _marketingFee,
        uint256 _devFee
    ) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyDevFee = _devFee;
        buyTotalFees = buyMarketingFee + buyDevFee;
        require(buyTotalFees <= 50, "Must keep fees at 50% or less");
    }

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _devFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellDevFee = _devFee;
        sellTotalFees = sellMarketingFee + sellDevFee;
        require(sellTotalFees <= 50, "Must keep fees at 50% or less");
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!_isBlackList[from], "[from] black list");
        require(!_isBlackList[to], "[to] black list");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (limitsInEffect) {
            if (from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping) {
                if (!tradingActive) {
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }

                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedmaxTransaction[to]) {
                    require(amount <= maxTransaction, "Buy transfer amount exceeds the maxTransaction.");
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedmaxTransaction[from]) {
                    require(amount <= maxTransaction, "Sell transfer amount exceeds the maxTransaction.");
                }
                else if (!_isExcludedmaxTransaction[to]) {
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;
        if (canSwap &&
            swapEnabled &&
            !swapping &&
            automatedMarketMakerPairs[to] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]) {

            swapping = true;
            swapBack();
            swapping = false;
        }

        bool takeFee = !swapping;

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForDev += (fees * sellDevFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForDev += (fees * buyDevFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }

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

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

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForMarketing + tokensForDev;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        if (contractBalance > swapTokensAtAmount * 20) {
            contractBalance = swapTokensAtAmount * 20;
        }

        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(contractBalance);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);

        tokensForMarketing = 0;
        tokensForDev = 0;

        (success, ) = address(devWallet).call{value: ethForDev}("");
        (success, ) = address(marketingWallet).call{ value: address(this).balance }("");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"enableTradingWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"blocked","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600d805462ffffff191660011790553480156200002057600080fd5b506040518060400160405280600781526020016646726f67446f6760c81b81525060405180604001604052806003815260200162464f4760e81b8152508160039080519060200190620000759291906200067d565b5080516200008b9060049060208401906200067d565b505050620000a8620000a2620003ca60201b60201c565b620003ce565b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200010d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000133919062000723565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000196573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001bc919062000723565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200020a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000230919062000723565b600780546001600160a01b0319166001600160a01b039283161790556006546200025d9116600162000420565b60075462000276906001600160a01b0316600162000420565b6007546200028f906001600160a01b031660016200049a565b6a07c24ad1a326111e800000600a819055600c55600f60006014816b0183f29cf1dd6f57f5000000619c40620002c682856200076b565b620002d291906200078d565b600b55600f8590556010849055620002eb8486620007b0565b600e5560128390556013829055620003048284620007b0565b60115560088054736ad38a69d6d9223dea0c6bbddda8b9b0998c3b6c6001600160a01b031991821681179092556009805490911690911790556200035c620003546005546001600160a01b031690565b6001620004ee565b62000369306001620004ee565b6200037861dead6001620004ee565b620003976200038f6005546001600160a01b031690565b600162000420565b620003a430600162000420565b620003b361dead600162000420565b620003bf338262000598565b505050505062000808565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6005546001600160a01b031633146200046f5760405162461bcd60e51b8152602060048201819052602482015260008051602062002d4f83398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260196020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005395760405162461bcd60e51b8152602060048201819052602482015260008051602062002d4f833981519152604482015260640162000466565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005f05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000466565b8060026000828254620006049190620007b0565b90915550506001600160a01b0382166000908152602081905260408120805483929062000633908490620007b0565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b8280546200068b90620007cb565b90600052602060002090601f016020900481019282620006af5760008555620006fa565b82601f10620006ca57805160ff1916838001178555620006fa565b82800160010185558215620006fa579182015b82811115620006fa578251825591602001919060010190620006dd565b50620007089291506200070c565b5090565b5b808211156200070857600081556001016200070d565b6000602082840312156200073657600080fd5b81516001600160a01b03811681146200074e57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161562000788576200078862000755565b500290565b600082620007ab57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620007c657620007c662000755565b500190565b600181811c90821680620007e057607f821691505b602082108114156200080257634e487b7160e01b600052602260045260246000fd5b50919050565b61253780620008186000396000f3fe6080604052600436106102765760003560e01c80638da5cb5b1161014f578063a90eab8c116100c1578063d85ba0631161007a578063d85ba0631461074c578063dd62ed3e14610762578063e1bc3394146107a8578063e2f45605146107d8578063f2fde38b146107ee578063f8b45b051461080e57600080fd5b8063a90eab8c14610687578063b62496f5146106a7578063bbc0c742146106d7578063c0246668146106f6578063c3f70b5214610716578063d257b34f1461072c57600080fd5b80639a7a23d6116101135780639a7a23d6146105e55780639c3b4fdc146106055780639fccce321461061b578063a0d82dc514610631578063a457c2d714610647578063a9059cbb1461066757600080fd5b80638da5cb5b1461055c5780638ea5220f1461057a5780638f85a0431461059a57806392136913146105ba57806395d89b41146105d057600080fd5b80634fbee193116101e8578063715018a6116101ac578063715018a6146104c7578063751039fc146104dc5780637571336a146104f157806375f0a874146105115780637bce5a04146105315780638a8c523c1461054757600080fd5b80634fbee1931461040257806366ca9b831461043b5780636a486a8e1461045b5780636ddd17131461047157806370a082311461049157600080fd5b80631f3fed8f1161023a5780631f3fed8f1461035657806323b872dd1461036c578063313ce5671461038c57806339509351146103a857806349bd5a5e146103c85780634a62bb65146103e857600080fd5b806302dbd8f81461028257806306fdde03146102a4578063095ea7b3146102cf5780631694505e146102ff57806318160ddd1461033757600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b506102a261029d366004612058565b610824565b005b3480156102b057600080fd5b506102b96108c4565b6040516102c6919061207a565b60405180910390f35b3480156102db57600080fd5b506102ef6102ea3660046120e4565b610956565b60405190151581526020016102c6565b34801561030b57600080fd5b5060065461031f906001600160a01b031681565b6040516001600160a01b0390911681526020016102c6565b34801561034357600080fd5b506002545b6040519081526020016102c6565b34801561036257600080fd5b5061034860145481565b34801561037857600080fd5b506102ef610387366004612110565b61096c565b34801561039857600080fd5b50604051601281526020016102c6565b3480156103b457600080fd5b506102ef6103c33660046120e4565b610a16565b3480156103d457600080fd5b5060075461031f906001600160a01b031681565b3480156103f457600080fd5b50600d546102ef9060ff1681565b34801561040e57600080fd5b506102ef61041d366004612151565b6001600160a01b031660009081526017602052604090205460ff1690565b34801561044757600080fd5b506102a2610456366004612058565b610a52565b34801561046757600080fd5b5061034860115481565b34801561047d57600080fd5b50600d546102ef9062010000900460ff1681565b34801561049d57600080fd5b506103486104ac366004612151565b6001600160a01b031660009081526020819052604090205490565b3480156104d357600080fd5b506102a2610ae5565b3480156104e857600080fd5b506102ef610b1b565b3480156104fd57600080fd5b506102a261050c36600461217e565b610b58565b34801561051d57600080fd5b5060085461031f906001600160a01b031681565b34801561053d57600080fd5b50610348600f5481565b34801561055357600080fd5b506102a2610bad565b34801561056857600080fd5b506005546001600160a01b031661031f565b34801561058657600080fd5b5060095461031f906001600160a01b031681565b3480156105a657600080fd5b506102a26105b53660046121b3565b610bea565b3480156105c657600080fd5b5061034860125481565b3480156105dc57600080fd5b506102b9610c8b565b3480156105f157600080fd5b506102a261060036600461217e565b610c9a565b34801561061157600080fd5b5061034860105481565b34801561062757600080fd5b5061034860155481565b34801561063d57600080fd5b5061034860135481565b34801561065357600080fd5b506102ef6106623660046120e4565b610d52565b34801561067357600080fd5b506102ef6106823660046120e4565b610deb565b34801561069357600080fd5b506102a26106a2366004612237565b610df8565b3480156106b357600080fd5b506102ef6106c2366004612151565b60196020526000908152604090205460ff1681565b3480156106e357600080fd5b50600d546102ef90610100900460ff1681565b34801561070257600080fd5b506102a261071136600461217e565b61108f565b34801561072257600080fd5b50610348600a5481565b34801561073857600080fd5b506102ef610747366004612272565b611118565b34801561075857600080fd5b50610348600e5481565b34801561076e57600080fd5b5061034861077d36600461228b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107b457600080fd5b506102ef6107c3366004612151565b60186020526000908152604090205460ff1681565b3480156107e457600080fd5b50610348600b5481565b3480156107fa57600080fd5b506102a2610809366004612151565b61126f565b34801561081a57600080fd5b50610348600c5481565b6005546001600160a01b031633146108575760405162461bcd60e51b815260040161084e906122c4565b60405180910390fd5b6012829055601381905561086b818361230f565b6011819055603210156108c05760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420353025206f72206c657373000000604482015260640161084e565b5050565b6060600380546108d390612327565b80601f01602080910402602001604051908101604052809291908181526020018280546108ff90612327565b801561094c5780601f106109215761010080835404028352916020019161094c565b820191906000526020600020905b81548152906001019060200180831161092f57829003601f168201915b5050505050905090565b600061096333848461130a565b50600192915050565b600061097984848461142e565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109fe5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161084e565b610a0b853385840361130a565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610963918590610a4d90869061230f565b61130a565b6005546001600160a01b03163314610a7c5760405162461bcd60e51b815260040161084e906122c4565b600f8290556010819055610a90818361230f565b600e819055603210156108c05760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420353025206f72206c657373000000604482015260640161084e565b6005546001600160a01b03163314610b0f5760405162461bcd60e51b815260040161084e906122c4565b610b196000611b86565b565b6005546000906001600160a01b03163314610b485760405162461bcd60e51b815260040161084e906122c4565b50600d805460ff19169055600190565b6005546001600160a01b03163314610b825760405162461bcd60e51b815260040161084e906122c4565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610bd75760405162461bcd60e51b815260040161084e906122c4565b600d805462ffff00191662010100179055565b6005546001600160a01b03163314610c145760405162461bcd60e51b815260040161084e906122c4565b60005b82811015610c85578160166000868685818110610c3657610c36612362565b9050602002016020810190610c4b9190612151565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610c7d81612378565b915050610c17565b50505050565b6060600480546108d390612327565b6005546001600160a01b03163314610cc45760405162461bcd60e51b815260040161084e906122c4565b6007546001600160a01b0383811691161415610d485760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161084e565b6108c08282611bd8565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610dd45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161084e565b610de1338585840361130a565b5060019392505050565b600061096333848461142e565b604080518082018252600d81526c2a3930b234b733902a37b5b2b760991b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f65e27265c2bf07e8242fee81a602df3320989bd26741589720839868a275d56c918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160408051808303601f1901815282825280516020918201208383018352600e84526d456e61626c652054726164696e6760901b9382019390935281517f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae4918101919091527f07e4ca7f0c414d237f9df43639d0673c51201469c22695492434205e0b759df39181019190915260006060820181905291925060800160405160208183030381529060405280519060200120905060008282604051602001610f9892919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015611003573d6000803e3d6000fd5b5050506020604051035190506110216005546001600160a01b031690565b6001600160a01b0316816001600160a01b0316146110755760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b604482015260640161084e565b5050600d805462ffff001916620101001790555050505050565b6005546001600160a01b031633146110b95760405162461bcd60e51b815260040161084e906122c4565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546000906001600160a01b031633146111455760405162461bcd60e51b815260040161084e906122c4565b620186a061115260025490565b61115d906001612393565b61116791906123b2565b8210156111d45760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161084e565b6103e86111e060025490565b6111eb906005612393565b6111f591906123b2565b8211156112615760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b606482015260840161084e565b50600b81905560015b919050565b6005546001600160a01b031633146112995760405162461bcd60e51b815260040161084e906122c4565b6001600160a01b0381166112fe5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161084e565b61130781611b86565b50565b6001600160a01b03831661136c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161084e565b6001600160a01b0382166113cd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161084e565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114545760405162461bcd60e51b815260040161084e906123d4565b6001600160a01b03821661147a5760405162461bcd60e51b815260040161084e90612419565b6001600160a01b03831660009081526016602052604090205460ff16156114d75760405162461bcd60e51b815260206004820152601160248201527016d99c9bdb5748189b1858dac81b1a5cdd607a1b604482015260640161084e565b6001600160a01b03821660009081526016602052604090205460ff16156115325760405162461bcd60e51b815260206004820152600f60248201526e16dd1bd748189b1858dac81b1a5cdd608a1b604482015260640161084e565b806115485761154383836000611c2c565b505050565b600d5460ff16156118b2576005546001600160a01b0384811691161480159061157f57506005546001600160a01b03838116911614155b801561159357506001600160a01b03821615155b80156115aa57506001600160a01b03821661dead14155b80156115c05750600754600160a01b900460ff16155b156118b257600d54610100900460ff16611658576001600160a01b03831660009081526017602052604090205460ff168061161357506001600160a01b03821660009081526017602052604090205460ff165b6116585760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161084e565b6001600160a01b03831660009081526019602052604090205460ff16801561169957506001600160a01b03821660009081526018602052604090205460ff16155b1561177757600a548111156117085760405162461bcd60e51b815260206004820152602f60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526e36b0bc2a3930b739b0b1ba34b7b71760891b606482015260840161084e565b600c546001600160a01b03831660009081526020819052604090205461172e908361230f565b11156117725760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161084e565b6118b2565b6001600160a01b03821660009081526019602052604090205460ff1680156117b857506001600160a01b03831660009081526018602052604090205460ff16155b1561182857600a548111156117725760405162461bcd60e51b815260206004820152603060248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526f1036b0bc2a3930b739b0b1ba34b7b71760811b606482015260840161084e565b6001600160a01b03821660009081526018602052604090205460ff166118b257600c546001600160a01b03831660009081526020819052604090205461186e908361230f565b11156118b25760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161084e565b30600090815260208190526040902054600b54811080159081906118de5750600d5462010000900460ff165b80156118f45750600754600160a01b900460ff16155b801561191857506001600160a01b03841660009081526019602052604090205460ff165b801561193d57506001600160a01b03851660009081526017602052604090205460ff16155b801561196257506001600160a01b03841660009081526017602052604090205460ff16155b15611990576007805460ff60a01b1916600160a01b179055611982611d80565b6007805460ff60a01b191690555b6007546001600160a01b03861660009081526017602052604090205460ff600160a01b9092048216159116806119de57506001600160a01b03851660009081526017602052604090205460ff165b156119e7575060005b60008115611b72576001600160a01b03861660009081526019602052604090205460ff168015611a1957506000601154115b15611aa757611a3e6064611a3860115488611ed390919063ffffffff16565b90611ee6565b905060115460135482611a519190612393565b611a5b91906123b2565b60156000828254611a6c919061230f565b9091555050601154601254611a819083612393565b611a8b91906123b2565b60146000828254611a9c919061230f565b90915550611b549050565b6001600160a01b03871660009081526019602052604090205460ff168015611ad157506000600e54115b15611b5457611af06064611a38600e5488611ed390919063ffffffff16565b9050600e5460105482611b039190612393565b611b0d91906123b2565b60156000828254611b1e919061230f565b9091555050600e54600f54611b339083612393565b611b3d91906123b2565b60146000828254611b4e919061230f565b90915550505b8015611b6557611b65873083611c2c565b611b6f818661245c565b94505b611b7d878787611c2c565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260196020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611c525760405162461bcd60e51b815260040161084e906123d4565b6001600160a01b038216611c785760405162461bcd60e51b815260040161084e90612419565b6001600160a01b03831660009081526020819052604090205481811015611cf05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161084e565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611d2790849061230f565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d7391815260200190565b60405180910390a3610c85565b3060009081526020819052604081205490506000601554601454611da4919061230f565b90506000821580611db3575081155b15611dbd57505050565b600b54611dcb906014612393565b831115611de357600b54611de0906014612393565b92505b47611ded84611ef2565b6000611df9478361204c565b90506000611e1685611a3860155485611ed390919063ffffffff16565b6000601481905560158190556009546040519293506001600160a01b031691839181818185875af1925050503d8060008114611e6e576040519150601f19603f3d011682016040523d82523d6000602084013e611e73565b606091505b50506008546040519195506001600160a01b0316904790600081818185875af1925050503d8060008114611ec3576040519150601f19603f3d011682016040523d82523d6000602084013e611ec8565b606091505b505050505050505050565b6000611edf8284612393565b9392505050565b6000611edf82846123b2565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f2757611f27612362565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611f80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa49190612473565b81600181518110611fb757611fb7612362565b6001600160a01b039283166020918202929092010152600654611fdd913091168461130a565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612016908590600090869030904290600401612490565b600060405180830381600087803b15801561203057600080fd5b505af1158015612044573d6000803e3d6000fd5b505050505050565b6000611edf828461245c565b6000806040838503121561206b57600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156120a75785810183015185820160400152820161208b565b818111156120b9576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461130757600080fd5b600080604083850312156120f757600080fd5b8235612102816120cf565b946020939093013593505050565b60008060006060848603121561212557600080fd5b8335612130816120cf565b92506020840135612140816120cf565b929592945050506040919091013590565b60006020828403121561216357600080fd5b8135611edf816120cf565b8035801515811461126a57600080fd5b6000806040838503121561219157600080fd5b823561219c816120cf565b91506121aa6020840161216e565b90509250929050565b6000806000604084860312156121c857600080fd5b833567ffffffffffffffff808211156121e057600080fd5b818601915086601f8301126121f457600080fd5b81358181111561220357600080fd5b8760208260051b850101111561221857600080fd5b60209283019550935061222e918601905061216e565b90509250925092565b60008060006060848603121561224c57600080fd5b833560ff8116811461225d57600080fd5b95602085013595506040909401359392505050565b60006020828403121561228457600080fd5b5035919050565b6000806040838503121561229e57600080fd5b82356122a9816120cf565b915060208301356122b9816120cf565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115612322576123226122f9565b500190565b600181811c9082168061233b57607f821691505b6020821081141561235c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561238c5761238c6122f9565b5060010190565b60008160001904831182151516156123ad576123ad6122f9565b500290565b6000826123cf57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60008282101561246e5761246e6122f9565b500390565b60006020828403121561248557600080fd5b8151611edf816120cf565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124e05784516001600160a01b0316835293830193918301916001016124bb565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220f087c88015d65cd366ac9bddc40c823e70fdbff362828259b62b773dcaca851264736f6c634300080a00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x6080604052600436106102765760003560e01c80638da5cb5b1161014f578063a90eab8c116100c1578063d85ba0631161007a578063d85ba0631461074c578063dd62ed3e14610762578063e1bc3394146107a8578063e2f45605146107d8578063f2fde38b146107ee578063f8b45b051461080e57600080fd5b8063a90eab8c14610687578063b62496f5146106a7578063bbc0c742146106d7578063c0246668146106f6578063c3f70b5214610716578063d257b34f1461072c57600080fd5b80639a7a23d6116101135780639a7a23d6146105e55780639c3b4fdc146106055780639fccce321461061b578063a0d82dc514610631578063a457c2d714610647578063a9059cbb1461066757600080fd5b80638da5cb5b1461055c5780638ea5220f1461057a5780638f85a0431461059a57806392136913146105ba57806395d89b41146105d057600080fd5b80634fbee193116101e8578063715018a6116101ac578063715018a6146104c7578063751039fc146104dc5780637571336a146104f157806375f0a874146105115780637bce5a04146105315780638a8c523c1461054757600080fd5b80634fbee1931461040257806366ca9b831461043b5780636a486a8e1461045b5780636ddd17131461047157806370a082311461049157600080fd5b80631f3fed8f1161023a5780631f3fed8f1461035657806323b872dd1461036c578063313ce5671461038c57806339509351146103a857806349bd5a5e146103c85780634a62bb65146103e857600080fd5b806302dbd8f81461028257806306fdde03146102a4578063095ea7b3146102cf5780631694505e146102ff57806318160ddd1461033757600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b506102a261029d366004612058565b610824565b005b3480156102b057600080fd5b506102b96108c4565b6040516102c6919061207a565b60405180910390f35b3480156102db57600080fd5b506102ef6102ea3660046120e4565b610956565b60405190151581526020016102c6565b34801561030b57600080fd5b5060065461031f906001600160a01b031681565b6040516001600160a01b0390911681526020016102c6565b34801561034357600080fd5b506002545b6040519081526020016102c6565b34801561036257600080fd5b5061034860145481565b34801561037857600080fd5b506102ef610387366004612110565b61096c565b34801561039857600080fd5b50604051601281526020016102c6565b3480156103b457600080fd5b506102ef6103c33660046120e4565b610a16565b3480156103d457600080fd5b5060075461031f906001600160a01b031681565b3480156103f457600080fd5b50600d546102ef9060ff1681565b34801561040e57600080fd5b506102ef61041d366004612151565b6001600160a01b031660009081526017602052604090205460ff1690565b34801561044757600080fd5b506102a2610456366004612058565b610a52565b34801561046757600080fd5b5061034860115481565b34801561047d57600080fd5b50600d546102ef9062010000900460ff1681565b34801561049d57600080fd5b506103486104ac366004612151565b6001600160a01b031660009081526020819052604090205490565b3480156104d357600080fd5b506102a2610ae5565b3480156104e857600080fd5b506102ef610b1b565b3480156104fd57600080fd5b506102a261050c36600461217e565b610b58565b34801561051d57600080fd5b5060085461031f906001600160a01b031681565b34801561053d57600080fd5b50610348600f5481565b34801561055357600080fd5b506102a2610bad565b34801561056857600080fd5b506005546001600160a01b031661031f565b34801561058657600080fd5b5060095461031f906001600160a01b031681565b3480156105a657600080fd5b506102a26105b53660046121b3565b610bea565b3480156105c657600080fd5b5061034860125481565b3480156105dc57600080fd5b506102b9610c8b565b3480156105f157600080fd5b506102a261060036600461217e565b610c9a565b34801561061157600080fd5b5061034860105481565b34801561062757600080fd5b5061034860155481565b34801561063d57600080fd5b5061034860135481565b34801561065357600080fd5b506102ef6106623660046120e4565b610d52565b34801561067357600080fd5b506102ef6106823660046120e4565b610deb565b34801561069357600080fd5b506102a26106a2366004612237565b610df8565b3480156106b357600080fd5b506102ef6106c2366004612151565b60196020526000908152604090205460ff1681565b3480156106e357600080fd5b50600d546102ef90610100900460ff1681565b34801561070257600080fd5b506102a261071136600461217e565b61108f565b34801561072257600080fd5b50610348600a5481565b34801561073857600080fd5b506102ef610747366004612272565b611118565b34801561075857600080fd5b50610348600e5481565b34801561076e57600080fd5b5061034861077d36600461228b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107b457600080fd5b506102ef6107c3366004612151565b60186020526000908152604090205460ff1681565b3480156107e457600080fd5b50610348600b5481565b3480156107fa57600080fd5b506102a2610809366004612151565b61126f565b34801561081a57600080fd5b50610348600c5481565b6005546001600160a01b031633146108575760405162461bcd60e51b815260040161084e906122c4565b60405180910390fd5b6012829055601381905561086b818361230f565b6011819055603210156108c05760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420353025206f72206c657373000000604482015260640161084e565b5050565b6060600380546108d390612327565b80601f01602080910402602001604051908101604052809291908181526020018280546108ff90612327565b801561094c5780601f106109215761010080835404028352916020019161094c565b820191906000526020600020905b81548152906001019060200180831161092f57829003601f168201915b5050505050905090565b600061096333848461130a565b50600192915050565b600061097984848461142e565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109fe5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161084e565b610a0b853385840361130a565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610963918590610a4d90869061230f565b61130a565b6005546001600160a01b03163314610a7c5760405162461bcd60e51b815260040161084e906122c4565b600f8290556010819055610a90818361230f565b600e819055603210156108c05760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420353025206f72206c657373000000604482015260640161084e565b6005546001600160a01b03163314610b0f5760405162461bcd60e51b815260040161084e906122c4565b610b196000611b86565b565b6005546000906001600160a01b03163314610b485760405162461bcd60e51b815260040161084e906122c4565b50600d805460ff19169055600190565b6005546001600160a01b03163314610b825760405162461bcd60e51b815260040161084e906122c4565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610bd75760405162461bcd60e51b815260040161084e906122c4565b600d805462ffff00191662010100179055565b6005546001600160a01b03163314610c145760405162461bcd60e51b815260040161084e906122c4565b60005b82811015610c85578160166000868685818110610c3657610c36612362565b9050602002016020810190610c4b9190612151565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610c7d81612378565b915050610c17565b50505050565b6060600480546108d390612327565b6005546001600160a01b03163314610cc45760405162461bcd60e51b815260040161084e906122c4565b6007546001600160a01b0383811691161415610d485760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161084e565b6108c08282611bd8565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610dd45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161084e565b610de1338585840361130a565b5060019392505050565b600061096333848461142e565b604080518082018252600d81526c2a3930b234b733902a37b5b2b760991b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f65e27265c2bf07e8242fee81a602df3320989bd26741589720839868a275d56c918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160408051808303601f1901815282825280516020918201208383018352600e84526d456e61626c652054726164696e6760901b9382019390935281517f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae4918101919091527f07e4ca7f0c414d237f9df43639d0673c51201469c22695492434205e0b759df39181019190915260006060820181905291925060800160405160208183030381529060405280519060200120905060008282604051602001610f9892919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015611003573d6000803e3d6000fd5b5050506020604051035190506110216005546001600160a01b031690565b6001600160a01b0316816001600160a01b0316146110755760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b604482015260640161084e565b5050600d805462ffff001916620101001790555050505050565b6005546001600160a01b031633146110b95760405162461bcd60e51b815260040161084e906122c4565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546000906001600160a01b031633146111455760405162461bcd60e51b815260040161084e906122c4565b620186a061115260025490565b61115d906001612393565b61116791906123b2565b8210156111d45760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161084e565b6103e86111e060025490565b6111eb906005612393565b6111f591906123b2565b8211156112615760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b606482015260840161084e565b50600b81905560015b919050565b6005546001600160a01b031633146112995760405162461bcd60e51b815260040161084e906122c4565b6001600160a01b0381166112fe5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161084e565b61130781611b86565b50565b6001600160a01b03831661136c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161084e565b6001600160a01b0382166113cd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161084e565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114545760405162461bcd60e51b815260040161084e906123d4565b6001600160a01b03821661147a5760405162461bcd60e51b815260040161084e90612419565b6001600160a01b03831660009081526016602052604090205460ff16156114d75760405162461bcd60e51b815260206004820152601160248201527016d99c9bdb5748189b1858dac81b1a5cdd607a1b604482015260640161084e565b6001600160a01b03821660009081526016602052604090205460ff16156115325760405162461bcd60e51b815260206004820152600f60248201526e16dd1bd748189b1858dac81b1a5cdd608a1b604482015260640161084e565b806115485761154383836000611c2c565b505050565b600d5460ff16156118b2576005546001600160a01b0384811691161480159061157f57506005546001600160a01b03838116911614155b801561159357506001600160a01b03821615155b80156115aa57506001600160a01b03821661dead14155b80156115c05750600754600160a01b900460ff16155b156118b257600d54610100900460ff16611658576001600160a01b03831660009081526017602052604090205460ff168061161357506001600160a01b03821660009081526017602052604090205460ff165b6116585760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161084e565b6001600160a01b03831660009081526019602052604090205460ff16801561169957506001600160a01b03821660009081526018602052604090205460ff16155b1561177757600a548111156117085760405162461bcd60e51b815260206004820152602f60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526e36b0bc2a3930b739b0b1ba34b7b71760891b606482015260840161084e565b600c546001600160a01b03831660009081526020819052604090205461172e908361230f565b11156117725760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161084e565b6118b2565b6001600160a01b03821660009081526019602052604090205460ff1680156117b857506001600160a01b03831660009081526018602052604090205460ff16155b1561182857600a548111156117725760405162461bcd60e51b815260206004820152603060248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526f1036b0bc2a3930b739b0b1ba34b7b71760811b606482015260840161084e565b6001600160a01b03821660009081526018602052604090205460ff166118b257600c546001600160a01b03831660009081526020819052604090205461186e908361230f565b11156118b25760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161084e565b30600090815260208190526040902054600b54811080159081906118de5750600d5462010000900460ff165b80156118f45750600754600160a01b900460ff16155b801561191857506001600160a01b03841660009081526019602052604090205460ff165b801561193d57506001600160a01b03851660009081526017602052604090205460ff16155b801561196257506001600160a01b03841660009081526017602052604090205460ff16155b15611990576007805460ff60a01b1916600160a01b179055611982611d80565b6007805460ff60a01b191690555b6007546001600160a01b03861660009081526017602052604090205460ff600160a01b9092048216159116806119de57506001600160a01b03851660009081526017602052604090205460ff165b156119e7575060005b60008115611b72576001600160a01b03861660009081526019602052604090205460ff168015611a1957506000601154115b15611aa757611a3e6064611a3860115488611ed390919063ffffffff16565b90611ee6565b905060115460135482611a519190612393565b611a5b91906123b2565b60156000828254611a6c919061230f565b9091555050601154601254611a819083612393565b611a8b91906123b2565b60146000828254611a9c919061230f565b90915550611b549050565b6001600160a01b03871660009081526019602052604090205460ff168015611ad157506000600e54115b15611b5457611af06064611a38600e5488611ed390919063ffffffff16565b9050600e5460105482611b039190612393565b611b0d91906123b2565b60156000828254611b1e919061230f565b9091555050600e54600f54611b339083612393565b611b3d91906123b2565b60146000828254611b4e919061230f565b90915550505b8015611b6557611b65873083611c2c565b611b6f818661245c565b94505b611b7d878787611c2c565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260196020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611c525760405162461bcd60e51b815260040161084e906123d4565b6001600160a01b038216611c785760405162461bcd60e51b815260040161084e90612419565b6001600160a01b03831660009081526020819052604090205481811015611cf05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161084e565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611d2790849061230f565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d7391815260200190565b60405180910390a3610c85565b3060009081526020819052604081205490506000601554601454611da4919061230f565b90506000821580611db3575081155b15611dbd57505050565b600b54611dcb906014612393565b831115611de357600b54611de0906014612393565b92505b47611ded84611ef2565b6000611df9478361204c565b90506000611e1685611a3860155485611ed390919063ffffffff16565b6000601481905560158190556009546040519293506001600160a01b031691839181818185875af1925050503d8060008114611e6e576040519150601f19603f3d011682016040523d82523d6000602084013e611e73565b606091505b50506008546040519195506001600160a01b0316904790600081818185875af1925050503d8060008114611ec3576040519150601f19603f3d011682016040523d82523d6000602084013e611ec8565b606091505b505050505050505050565b6000611edf8284612393565b9392505050565b6000611edf82846123b2565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f2757611f27612362565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611f80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa49190612473565b81600181518110611fb757611fb7612362565b6001600160a01b039283166020918202929092010152600654611fdd913091168461130a565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612016908590600090869030904290600401612490565b600060405180830381600087803b15801561203057600080fd5b505af1158015612044573d6000803e3d6000fd5b505050505050565b6000611edf828461245c565b6000806040838503121561206b57600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156120a75785810183015185820160400152820161208b565b818111156120b9576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461130757600080fd5b600080604083850312156120f757600080fd5b8235612102816120cf565b946020939093013593505050565b60008060006060848603121561212557600080fd5b8335612130816120cf565b92506020840135612140816120cf565b929592945050506040919091013590565b60006020828403121561216357600080fd5b8135611edf816120cf565b8035801515811461126a57600080fd5b6000806040838503121561219157600080fd5b823561219c816120cf565b91506121aa6020840161216e565b90509250929050565b6000806000604084860312156121c857600080fd5b833567ffffffffffffffff808211156121e057600080fd5b818601915086601f8301126121f457600080fd5b81358181111561220357600080fd5b8760208260051b850101111561221857600080fd5b60209283019550935061222e918601905061216e565b90509250925092565b60008060006060848603121561224c57600080fd5b833560ff8116811461225d57600080fd5b95602085013595506040909401359392505050565b60006020828403121561228457600080fd5b5035919050565b6000806040838503121561229e57600080fd5b82356122a9816120cf565b915060208301356122b9816120cf565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115612322576123226122f9565b500190565b600181811c9082168061233b57607f821691505b6020821081141561235c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561238c5761238c6122f9565b5060010190565b60008160001904831182151516156123ad576123ad6122f9565b500290565b6000826123cf57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60008282101561246e5761246e6122f9565b500390565b60006020828403121561248557600080fd5b8151611edf816120cf565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124e05784516001600160a01b0316835293830193918301916001016124bb565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220f087c88015d65cd366ac9bddc40c823e70fdbff362828259b62b773dcaca851264736f6c634300080a0033

Deployed Bytecode Sourcemap

15042:11708:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20664:318;;;;;;;;;;-1:-1:-1;20664:318:0;;;;;:::i;:::-;;:::i;:::-;;2741:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3655:169;;;;;;;;;;-1:-1:-1;3655:169:0;;;;;:::i;:::-;;:::i;:::-;;;1490:14:1;;1483:22;1465:41;;1453:2;1438:18;3655:169:0;1325:187:1;15119:41:0;;;;;;;;;;-1:-1:-1;15119:41:0;;;;-1:-1:-1;;;;;15119:41:0;;;;;;-1:-1:-1;;;;;1708:32:1;;;1690:51;;1678:2;1663:18;15119:41:0;1517:230:1;3062:108:0;;;;;;;;;;-1:-1:-1;3150:12:0;;3062:108;;;1898:25:1;;;1886:2;1871:18;3062:108:0;1752:177:1;15742:33:0;;;;;;;;;;;;;;;;3832:492;;;;;;;;;;-1:-1:-1;3832:492:0;;;;;:::i;:::-;;:::i;2961:93::-;;;;;;;;;;-1:-1:-1;2961:93:0;;3044:2;2537:36:1;;2525:2;2510:18;2961:93:0;2395:184:1;4332:215:0;;;;;;;;;;-1:-1:-1;4332:215:0;;;;;:::i;:::-;;:::i;15167:28::-;;;;;;;;;;-1:-1:-1;15167:28:0;;;;-1:-1:-1;;;;;15167:28:0;;;15411:33;;;;;;;;;;-1:-1:-1;15411:33:0;;;;;;;;21686:126;;;;;;;;;;-1:-1:-1;21686:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;21776:28:0;21752:4;21776:28;;;:19;:28;;;;;;;;;21686:126;20345:311;;;;;;;;;;-1:-1:-1;20345:311:0;;;;;:::i;:::-;;:::i;15635:28::-;;;;;;;;;;;;;;;;15491:31;;;;;;;;;;-1:-1:-1;15491:31:0;;;;;;;;;;;3178:127;;;;;;;;;;-1:-1:-1;3178:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3279:18:0;3252:7;3279:18;;;;;;;;;;;;3178:127;889:103;;;;;;;;;;;;;:::i;19542:121::-;;;;;;;;;;;;;:::i;20176:161::-;;;;;;;;;;-1:-1:-1;20176:161:0;;;;;:::i;:::-;;:::i;15232:30::-;;;;;;;;;;-1:-1:-1;15232:30:0;;;;-1:-1:-1;;;;;15232:30:0;;;15565;;;;;;;;;;;;;;;;18137:112;;;;;;;;;;;;;:::i;666:87::-;;;;;;;;;;-1:-1:-1;739:6:0;;-1:-1:-1;;;;;739:6:0;666:87;;15269:24;;;;;;;;;;-1:-1:-1;15269:24:0;;;;-1:-1:-1;;;;;15269:24:0;;;19327:207;;;;;;;;;;-1:-1:-1;19327:207:0;;;;;:::i;:::-;;:::i;15670:31::-;;;;;;;;;;;;;;;;2849:104;;;;;;;;;;;;;:::i;21180:304::-;;;;;;;;;;-1:-1:-1;21180:304:0;;;;;:::i;:::-;;:::i;15602:24::-;;;;;;;;;;;;;;;;15782:27;;;;;;;;;;;;;;;;15708:25;;;;;;;;;;;;;;;;4555:413;;;;;;;;;;-1:-1:-1;4555:413:0;;;;;:::i;:::-;;:::i;3313:175::-;;;;;;;;;;-1:-1:-1;3313:175:0;;;;;:::i;:::-;;:::i;18257:1062::-;;;;;;;;;;-1:-1:-1;18257:1062:0;;;;;:::i;:::-;;:::i;15995:57::-;;;;;;;;;;-1:-1:-1;15995:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15451:33;;;;;;;;;;-1:-1:-1;15451:33:0;;;;;;;;;;;20990:182;;;;;;;;;;-1:-1:-1;20990:182:0;;;;;:::i;:::-;;:::i;15302:29::-;;;;;;;;;;;;;;;;19671:497;;;;;;;;;;-1:-1:-1;19671:497:0;;;;;:::i;:::-;;:::i;15531:27::-;;;;;;;;;;;;;;;;3496:151;;;;;;;;;;-1:-1:-1;3496:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3612:18:0;;;3585:7;3612:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3496:151;15929:57;;;;;;;;;;-1:-1:-1;15929:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15338:33;;;;;;;;;;;;;;;;1000:201;;;;;;;;;;-1:-1:-1;1000:201:0;;;;;:::i;:::-;;:::i;15378:24::-;;;;;;;;;;;;;;;;20664:318;739:6;;-1:-1:-1;;;;;739:6:0;292:10;801:23;793:68;;;;-1:-1:-1;;;793:68:0;;;;;;;:::i;:::-;;;;;;;;;20783:16:::1;:32:::0;;;20826:10:::1;:20:::0;;;20873:29:::1;20839:7:::0;20802:13;20873:29:::1;:::i;:::-;20857:13;:45:::0;;;20938:2:::1;-1:-1:-1::0;20921:19:0::1;20913:61;;;::::0;-1:-1:-1;;;20913:61:0;;6039:2:1;20913:61:0::1;::::0;::::1;6021:21:1::0;6078:2;6058:18;;;6051:30;6117:31;6097:18;;;6090:59;6166:18;;20913:61:0::1;5837:353:1::0;20913:61:0::1;20664:318:::0;;:::o;2741:100::-;2795:13;2828:5;2821:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2741:100;:::o;3655:169::-;3738:4;3755:39;292:10;3778:7;3787:6;3755:8;:39::i;:::-;-1:-1:-1;3812:4:0;3655:169;;;;:::o;3832:492::-;3972:4;3989:36;3999:6;4007:9;4018:6;3989:9;:36::i;:::-;-1:-1:-1;;;;;4065:19:0;;4038:24;4065:19;;;:11;:19;;;;;;;;292:10;4065:33;;;;;;;;4117:26;;;;4109:79;;;;-1:-1:-1;;;4109:79:0;;6782:2:1;4109:79:0;;;6764:21:1;6821:2;6801:18;;;6794:30;6860:34;6840:18;;;6833:62;-1:-1:-1;;;6911:18:1;;;6904:38;6959:19;;4109:79:0;6580:404:1;4109:79:0;4224:57;4233:6;292:10;4274:6;4255:16;:25;4224:8;:57::i;:::-;-1:-1:-1;4312:4:0;;3832:492;-1:-1:-1;;;;3832:492:0:o;4332:215::-;292:10;4420:4;4469:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4469:34:0;;;;;;;;;;4420:4;;4437:80;;4460:7;;4469:47;;4506:10;;4469:47;:::i;:::-;4437:8;:80::i;20345:311::-;739:6;;-1:-1:-1;;;;;739:6:0;292:10;801:23;793:68;;;;-1:-1:-1;;;793:68:0;;;;;;;:::i;:::-;20463:15:::1;:31:::0;;;20505:9:::1;:19:::0;;;20550:27:::1;20517:7:::0;20481:13;20550:27:::1;:::i;:::-;20535:12;:42:::0;;;20612:2:::1;-1:-1:-1::0;20596:18:0::1;20588:60;;;::::0;-1:-1:-1;;;20588:60:0;;6039:2:1;20588:60:0::1;::::0;::::1;6021:21:1::0;6078:2;6058:18;;;6051:30;6117:31;6097:18;;;6090:59;6166:18;;20588:60:0::1;5837:353:1::0;889:103:0;739:6;;-1:-1:-1;;;;;739:6:0;292:10;801:23;793:68;;;;-1:-1:-1;;;793:68:0;;;;;;;:::i;:::-;954:30:::1;981:1;954:18;:30::i;:::-;889:103::o:0;19542:121::-;739:6;;19594:4;;-1:-1:-1;;;;;739:6:0;292:10;801:23;793:68;;;;-1:-1:-1;;;793:68:0;;;;;;;:::i;:::-;-1:-1:-1;19611:14:0::1;:22:::0;;-1:-1:-1;;19611:22:0::1;::::0;;;19542:121;:::o;20176:161::-;739:6;;-1:-1:-1;;;;;739:6:0;292:10;801:23;793:68;;;;-1:-1:-1;;;793:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20289:33:0;;;::::1;;::::0;;;:25:::1;:33;::::0;;;;:40;;-1:-1:-1;;20289:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20176:161::o;18137:112::-;739:6;;-1:-1:-1;;;;;739:6:0;292:10;801:23;793:68;;;;-1:-1:-1;;;793:68:0;;;;;;;:::i;:::-;18192:13:::1;:20:::0;;-1:-1:-1;;18223:18:0;;;;;18137:112::o;19327:207::-;739:6;;-1:-1:-1;;;;;739:6:0;292:10;801:23;793:68;;;;-1:-1:-1;;;793:68:0;;;;;;;:::i;:::-;19426:9:::1;19421:106;19441:18:::0;;::::1;19421:106;;;19508:7;19481:12;:24;19494:7;;19502:1;19494:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19481:24:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;19481:24:0;:34;;-1:-1:-1;;19481:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19461:3;::::1;::::0;::::1;:::i;:::-;;;;19421:106;;;;19327:207:::0;;;:::o;2849:104::-;2905:13;2938:7;2931:14;;;;;:::i;21180:304::-;739:6;;-1:-1:-1;;;;;739:6:0;292:10;801:23;793:68;;;;-1:-1:-1;;;793:68:0;;;;;;;:::i;:::-;21324:13:::1;::::0;-1:-1:-1;;;;;21316:21:0;;::::1;21324:13:::0;::::1;21316:21;;21294:128;;;::::0;-1:-1:-1;;;21294:128:0;;7463:2:1;21294:128:0::1;::::0;::::1;7445:21:1::0;7502:2;7482:18;;;7475:30;7541:34;7521:18;;;7514:62;7612:27;7592:18;;;7585:55;7657:19;;21294:128:0::1;7261:421:1::0;21294:128:0::1;21435:41;21464:4;21470:5;21435:28;:41::i;4555:413::-:0;292:10;4648:4;4692:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4692:34:0;;;;;;;;;;4745:35;;;;4737:85;;;;-1:-1:-1;;;4737:85:0;;7889:2:1;4737:85:0;;;7871:21:1;7928:2;7908:18;;;7901:30;7967:34;7947:18;;;7940:62;-1:-1:-1;;;8018:18:1;;;8011:35;8063:19;;4737:85:0;7687:401:1;4737:85:0;4858:67;292:10;4881:7;4909:15;4890:16;:34;4858:8;:67::i;:::-;-1:-1:-1;4956:4:0;;4555:413;-1:-1:-1;;;4555:413:0:o;3313:175::-;3399:4;3416:42;292:10;3440:9;3451:6;3416:9;:42::i;18257:1062::-;18539:22;;;;;;;;;;;-1:-1:-1;;;18539:22:0;;;;;18591:10;;;;;;;;;;-1:-1:-1;;;18591:10:0;;;;18386:295;;18415:95;18386:295;;;8352:25:1;;;;18529:33:0;8393:18:1;;;8386:34;;;;18581:21:0;8436:18:1;;;8429:34;18621:13:0;8479:18:1;;;8472:34;18661:4:0;8522:19:1;;;8515:61;-1:-1:-1;;8324:19:1;;18386:295:0;;;;;;-1:-1:-1;;18386:295:0;;;;;;18362:330;;18386:295;18362:330;;;;18857:23;;;;;;;;-1:-1:-1;;;18857:23:0;;;;;;;18750:175;;18779:49;18750:175;;;8789:25:1;;;;18847:34:0;8830:18:1;;;8823:34;;;;-1:-1:-1;8873:18:1;;;8866:34;;;18362:330:0;;-1:-1:-1;8762:18:1;;18750:175:0;;;;;;;;;;;;18726:210;;;;;;18705:231;;18949:14;19054:10;19083;18990:134;;;;;;;;-1:-1:-1;;;9169:27:1;;9221:1;9212:11;;9205:27;;;;9257:2;9248:12;;9241:28;9294:2;9285:12;;8911:392;18990:134:0;;;;-1:-1:-1;;18990:134:0;;;;;;;;;18966:169;;18990:134;18966:169;;;;19148:14;19165:26;;;;;;;;;9535:25:1;;;9608:4;9596:17;;9576:18;;;9569:45;;;;9630:18;;;9623:34;;;9673:18;;;9666:34;;;18966:169:0;;-1:-1:-1;19148:14:0;19165:26;;9507:19:1;;19165:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19148:43;;19220:7;739:6;;-1:-1:-1;;;;;739:6:0;;666:87;19220:7;-1:-1:-1;;;;;19210:17:0;:6;-1:-1:-1;;;;;19210:17:0;;19202:47;;;;-1:-1:-1;;;19202:47:0;;9913:2:1;19202:47:0;;;9895:21:1;9952:2;9932:18;;;9925:30;-1:-1:-1;;;9971:18:1;;;9964:47;10028:18;;19202:47:0;9711:341:1;19202:47:0;-1:-1:-1;;19262:13:0;:20;;-1:-1:-1;;19293:18:0;;;;;-1:-1:-1;;;;;18257:1062:0:o;20990:182::-;739:6;;-1:-1:-1;;;;;739:6:0;292:10;801:23;793:68;;;;-1:-1:-1;;;793:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21075:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;21075:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;21130:34;;1465:41:1;;;21130:34:0::1;::::0;1438:18:1;21130:34:0::1;;;;;;;20990:182:::0;;:::o;19671:497::-;739:6;;19779:4;;-1:-1:-1;;;;;739:6:0;292:10;801:23;793:68;;;;-1:-1:-1;;;793:68:0;;;;;;;:::i;:::-;19858:6:::1;19837:13;3150:12:::0;;;3062:108;19837:13:::1;:17;::::0;19853:1:::1;19837:17;:::i;:::-;19836:28;;;;:::i;:::-;19823:9;:41;;19801:144;;;::::0;-1:-1:-1;;;19801:144:0;;10654:2:1;19801:144:0::1;::::0;::::1;10636:21:1::0;10693:2;10673:18;;;10666:30;10732:34;10712:18;;;10705:62;-1:-1:-1;;;10783:18:1;;;10776:51;10844:19;;19801:144:0::1;10452:417:1::0;19801:144:0::1;20013:4;19992:13;3150:12:::0;;;3062:108;19992:13:::1;:17;::::0;20008:1:::1;19992:17;:::i;:::-;19991:26;;;;:::i;:::-;19978:9;:39;;19956:141;;;::::0;-1:-1:-1;;;19956:141:0;;11076:2:1;19956:141:0::1;::::0;::::1;11058:21:1::0;11115:2;11095:18;;;11088:30;11154:34;11134:18;;;11127:62;-1:-1:-1;;;11205:18:1;;;11198:50;11265:19;;19956:141:0::1;10874:416:1::0;19956:141:0::1;-1:-1:-1::0;20108:18:0::1;:30:::0;;;20156:4:::1;872:1;19671:497:::0;;;:::o;1000:201::-;739:6;;-1:-1:-1;;;;;739:6:0;292:10;801:23;793:68;;;;-1:-1:-1;;;793:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1089:22:0;::::1;1081:73;;;::::0;-1:-1:-1;;;1081:73:0;;11497:2:1;1081:73:0::1;::::0;::::1;11479:21:1::0;11536:2;11516:18;;;11509:30;11575:34;11555:18;;;11548:62;-1:-1:-1;;;11626:18:1;;;11619:36;11672:19;;1081:73:0::1;11295:402:1::0;1081:73:0::1;1165:28;1184:8;1165:18;:28::i;:::-;1000:201:::0;:::o;6723:380::-;-1:-1:-1;;;;;6859:19:0;;6851:68;;;;-1:-1:-1;;;6851:68:0;;11904:2:1;6851:68:0;;;11886:21:1;11943:2;11923:18;;;11916:30;11982:34;11962:18;;;11955:62;-1:-1:-1;;;12033:18:1;;;12026:34;12077:19;;6851:68:0;11702:400:1;6851:68:0;-1:-1:-1;;;;;6938:21:0;;6930:68;;;;-1:-1:-1;;;6930:68:0;;12309:2:1;6930:68:0;;;12291:21:1;12348:2;12328:18;;;12321:30;12387:34;12367:18;;;12360:62;-1:-1:-1;;;12438:18:1;;;12431:32;12480:19;;6930:68:0;12107:398:1;6930:68:0;-1:-1:-1;;;;;7011:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7063:32;;1898:25:1;;;7063:32:0;;1871:18:1;7063:32:0;;;;;;;6723:380;;;:::o;21820:3301::-;-1:-1:-1;;;;;21952:18:0;;21944:68;;;;-1:-1:-1;;;21944:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22031:16:0;;22023:64;;;;-1:-1:-1;;;22023:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22107:18:0;;;;;;:12;:18;;;;;;;;22106:19;22098:49;;;;-1:-1:-1;;;22098:49:0;;13522:2:1;22098:49:0;;;13504:21:1;13561:2;13541:18;;;13534:30;-1:-1:-1;;;13580:18:1;;;13573:47;13637:18;;22098:49:0;13320:341:1;22098:49:0;-1:-1:-1;;;;;22167:16:0;;;;;;:12;:16;;;;;;;;22166:17;22158:45;;;;-1:-1:-1;;;22158:45:0;;13868:2:1;22158:45:0;;;13850:21:1;13907:2;13887:18;;;13880:30;-1:-1:-1;;;13926:18:1;;;13919:45;13981:18;;22158:45:0;13666:339:1;22158:45:0;22220:11;22216:93;;22248:28;22264:4;22270:2;22274:1;22248:15;:28::i;:::-;21820:3301;;;:::o;22216:93::-;22325:14;;;;22321:1150;;;739:6;;-1:-1:-1;;;;;22360:15:0;;;739:6;;22360:15;;;;:49;;-1:-1:-1;739:6:0;;-1:-1:-1;;;;;22396:13:0;;;739:6;;22396:13;;22360:49;:86;;;;-1:-1:-1;;;;;;22430:16:0;;;;22360:86;:128;;;;-1:-1:-1;;;;;;22467:21:0;;22481:6;22467:21;;22360:128;:158;;;;-1:-1:-1;22510:8:0;;-1:-1:-1;;;22510:8:0;;;;22509:9;22360:158;22356:1104;;;22544:13;;;;;;;22539:150;;-1:-1:-1;;;;;22590:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;22619:23:0;;;;;;:19;:23;;;;;;;;22590:52;22582:87;;;;-1:-1:-1;;;22582:87:0;;14212:2:1;22582:87:0;;;14194:21:1;14251:2;14231:18;;;14224:30;-1:-1:-1;;;14270:18:1;;;14263:52;14332:18;;22582:87:0;14010:346:1;22582:87:0;-1:-1:-1;;;;;22741:31:0;;;;;;:25;:31;;;;;;;;:65;;;;-1:-1:-1;;;;;;22777:29:0;;;;;;:25;:29;;;;;;;;22776:30;22741:65;22737:708;;;22849:14;;22839:6;:24;;22831:84;;;;-1:-1:-1;;;22831:84:0;;14563:2:1;22831:84:0;;;14545:21:1;14602:2;14582:18;;;14575:30;14641:34;14621:18;;;14614:62;-1:-1:-1;;;14692:18:1;;;14685:45;14747:19;;22831:84:0;14361:411:1;22831:84:0;22972:9;;-1:-1:-1;;;;;3279:18:0;;3252:7;3279:18;;;;;;;;;;;22946:22;;:6;:22;:::i;:::-;:35;;22938:67;;;;-1:-1:-1;;;22938:67:0;;14979:2:1;22938:67:0;;;14961:21:1;15018:2;14998:18;;;14991:30;-1:-1:-1;;;15037:18:1;;;15030:49;15096:18;;22938:67:0;14777:343:1;22938:67:0;22737:708;;;-1:-1:-1;;;;;23081:29:0;;;;;;:25;:29;;;;;;;;:65;;;;-1:-1:-1;;;;;;23115:31:0;;;;;;:25;:31;;;;;;;;23114:32;23081:65;23077:368;;;23189:14;;23179:6;:24;;23171:85;;;;-1:-1:-1;;;23171:85:0;;15327:2:1;23171:85:0;;;15309:21:1;15366:2;15346:18;;;15339:30;15405:34;15385:18;;;15378:62;-1:-1:-1;;;15456:18:1;;;15449:46;15512:19;;23171:85:0;15125:412:1;23077:368:0;-1:-1:-1;;;;;23304:29:0;;;;;;:25;:29;;;;;;;;23299:146;;23392:9;;-1:-1:-1;;;;;3279:18:0;;3252:7;3279:18;;;;;;;;;;;23366:22;;:6;:22;:::i;:::-;:35;;23358:67;;;;-1:-1:-1;;;23358:67:0;;14979:2:1;23358:67:0;;;14961:21:1;15018:2;14998:18;;;14991:30;-1:-1:-1;;;15037:18:1;;;15030:49;15096:18;;23358:67:0;14777:343:1;23358:67:0;23532:4;23483:28;3279:18;;;;;;;;;;;23588;;23564:42;;;;;;;23621:35;;-1:-1:-1;23645:11:0;;;;;;;23621:35;:61;;;;-1:-1:-1;23674:8:0;;-1:-1:-1;;;23674:8:0;;;;23673:9;23621:61;:107;;;;-1:-1:-1;;;;;;23699:29:0;;;;;;:25;:29;;;;;;;;23621:107;:150;;;;-1:-1:-1;;;;;;23746:25:0;;;;;;:19;:25;;;;;;;;23745:26;23621:150;:191;;;;-1:-1:-1;;;;;;23789:23:0;;;;;;:19;:23;;;;;;;;23788:24;23621:191;23617:297;;;23831:8;:15;;-1:-1:-1;;;;23831:15:0;-1:-1:-1;;;23831:15:0;;;23861:10;:8;:10::i;:::-;23886:8;:16;;-1:-1:-1;;;;23886:16:0;;;23617:297;23942:8;;-1:-1:-1;;;;;24052:25:0;;23926:12;24052:25;;;:19;:25;;;;;;23942:8;-1:-1:-1;;;23942:8:0;;;;;23941:9;;24052:25;;:52;;-1:-1:-1;;;;;;24081:23:0;;;;;;:19;:23;;;;;;;;24052:52;24048:100;;;-1:-1:-1;24131:5:0;24048:100;24160:12;24265:7;24261:807;;;-1:-1:-1;;;;;24317:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;24366:1;24350:13;;:17;24317:50;24313:606;;;24395:34;24425:3;24395:25;24406:13;;24395:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;24388:41;;24486:13;;24472:10;;24465:4;:17;;;;:::i;:::-;24464:35;;;;:::i;:::-;24448:12;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;24568:13:0;;24548:16;;24541:23;;:4;:23;:::i;:::-;24540:41;;;;:::i;:::-;24518:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;24313:606:0;;-1:-1:-1;24313:606:0;;-1:-1:-1;;;;;24643:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;24693:1;24678:12;;:16;24643:51;24639:280;;;24722:33;24751:3;24722:24;24733:12;;24722:6;:10;;:24;;;;:::i;:33::-;24715:40;;24811:12;;24798:9;;24791:4;:16;;;;:::i;:::-;24790:33;;;;:::i;:::-;24774:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;24891:12:0;;24872:15;;24865:22;;:4;:22;:::i;:::-;24864:39;;;;:::i;:::-;24842:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;24639:280:0;24939:8;;24935:91;;24968:42;24984:4;24998;25005;24968:15;:42::i;:::-;25042:14;25052:4;25042:14;;:::i;:::-;;;24261:807;25080:33;25096:4;25102:2;25106:6;25080:15;:33::i;:::-;21933:3188;;;;21820:3301;;;:::o;1209:191::-;1302:6;;;-1:-1:-1;;;;;1319:17:0;;;-1:-1:-1;;;;;;1319:17:0;;;;;;;1352:40;;1302:6;;;1319:17;1302:6;;1352:40;;1283:16;;1352:40;1272:128;1209:191;:::o;21492:186::-;-1:-1:-1;;;;;21575:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;21575:39:0;;;;;;;;;;21630:40;;21575:39;;:31;21630:40;;;21492:186;;:::o;4976:733::-;-1:-1:-1;;;;;5116:20:0;;5108:70;;;;-1:-1:-1;;;5108:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5197:23:0;;5189:71;;;;-1:-1:-1;;;5189:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5357:17:0;;5333:21;5357:17;;;;;;;;;;;5393:23;;;;5385:74;;;;-1:-1:-1;;;5385:74:0;;15874:2:1;5385:74:0;;;15856:21:1;15913:2;15893:18;;;15886:30;15952:34;15932:18;;;15925:62;-1:-1:-1;;;16003:18:1;;;15996:36;16049:19;;5385:74:0;15672:402:1;5385:74:0;-1:-1:-1;;;;;5495:17:0;;;:9;:17;;;;;;;;;;;5515:22;;;5495:42;;5559:20;;;;;;;;:30;;5531:6;;5495:9;5559:30;;5531:6;;5559:30;:::i;:::-;;;;;;;;5624:9;-1:-1:-1;;;;;5607:35:0;5616:6;-1:-1:-1;;;;;5607:35:0;;5635:6;5607:35;;;;1898:25:1;;1886:2;1871:18;;1752:177;5607:35:0;;;;;;;;5655:46;21820:3301;25841:906;25924:4;25880:23;3279:18;;;;;;;;;;;25880:50;;25941:25;25990:12;;25969:18;;:33;;;;:::i;:::-;25941:61;-1:-1:-1;26013:12:0;26042:20;;;:46;;-1:-1:-1;26066:22:0;;26042:46;26038:85;;;26105:7;;;25841:906::o;26038:85::-;26157:18;;:23;;26178:2;26157:23;:::i;:::-;26139:15;:41;26135:115;;;26215:18;;:23;;26236:2;26215:23;:::i;:::-;26197:41;;26135:115;26290:21;26322:33;26339:15;26322:16;:33::i;:::-;26368:18;26389:44;:21;26415:17;26389:25;:44::i;:::-;26368:65;;26444:17;26464:51;26497:17;26464:28;26479:12;;26464:10;:14;;:28;;;;:::i;:51::-;26549:1;26528:18;:22;;;26561:12;:16;;;26612:9;;26604:45;;26444:71;;-1:-1:-1;;;;;;26612:9:0;;26444:71;;26604:45;26549:1;26604:45;26444:71;26612:9;26604:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26682:15:0;;26674:65;;26590:59;;-1:-1:-1;;;;;;26682:15:0;;26712:21;;26674:65;;;;26712:21;26682:15;26674:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;25841:906:0:o;8727:98::-;8785:7;8812:5;8816:1;8812;:5;:::i;:::-;8805:12;8727:98;-1:-1:-1;;;8727:98:0:o;8833:::-;8891:7;8918:5;8922:1;8918;:5;:::i;25244:589::-;25394:16;;;25408:1;25394:16;;;;;;;;25370:21;;25394:16;;;;;;;;;;-1:-1:-1;25394:16:0;25370:40;;25439:4;25421;25426:1;25421:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25421:23:0;;;:7;;;;;;;;;;:23;;;;25465:15;;:22;;;-1:-1:-1;;;25465:22:0;;;;:15;;;;;:20;;:22;;;;;25421:7;;25465:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25455:4;25460:1;25455:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25455:32:0;;;:7;;;;;;;;;:32;25532:15;;25500:62;;25517:4;;25532:15;25550:11;25500:8;:62::i;:::-;25601:15;;:224;;-1:-1:-1;;;25601:224:0;;-1:-1:-1;;;;;25601:15:0;;;;:66;;:224;;25682:11;;25601:15;;25752:4;;25779;;25799:15;;25601:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25299:534;25244:589;:::o;8621:98::-;8679:7;8706:5;8710:1;8706;:5;:::i;14:248:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:597::-;379:4;408:2;437;426:9;419:21;469:6;463:13;512:6;507:2;496:9;492:18;485:34;537:1;547:140;561:6;558:1;555:13;547:140;;;656:14;;;652:23;;646:30;622:17;;;641:2;618:26;611:66;576:10;;547:140;;;705:6;702:1;699:13;696:91;;;775:1;770:2;761:6;750:9;746:22;742:31;735:42;696:91;-1:-1:-1;848:2:1;827:15;-1:-1:-1;;823:29:1;808:45;;;;855:2;804:54;;267:597;-1:-1:-1;;;267:597:1:o;869:131::-;-1:-1:-1;;;;;944:31:1;;934:42;;924:70;;990:1;987;980:12;1005:315;1073:6;1081;1134:2;1122:9;1113:7;1109:23;1105:32;1102:52;;;1150:1;1147;1140:12;1102:52;1189:9;1176:23;1208:31;1233:5;1208:31;:::i;:::-;1258:5;1310:2;1295:18;;;;1282:32;;-1:-1:-1;;;1005:315:1:o;1934:456::-;2011:6;2019;2027;2080:2;2068:9;2059:7;2055:23;2051:32;2048:52;;;2096:1;2093;2086:12;2048:52;2135:9;2122:23;2154:31;2179:5;2154:31;:::i;:::-;2204:5;-1:-1:-1;2261:2:1;2246:18;;2233:32;2274:33;2233:32;2274:33;:::i;:::-;1934:456;;2326:7;;-1:-1:-1;;;2380:2:1;2365:18;;;;2352:32;;1934:456::o;2792:247::-;2851:6;2904:2;2892:9;2883:7;2879:23;2875:32;2872:52;;;2920:1;2917;2910:12;2872:52;2959:9;2946:23;2978:31;3003:5;2978:31;:::i;3044:160::-;3109:20;;3165:13;;3158:21;3148:32;;3138:60;;3194:1;3191;3184:12;3209:315;3274:6;3282;3335:2;3323:9;3314:7;3310:23;3306:32;3303:52;;;3351:1;3348;3341:12;3303:52;3390:9;3377:23;3409:31;3434:5;3409:31;:::i;:::-;3459:5;-1:-1:-1;3483:35:1;3514:2;3499:18;;3483:35;:::i;:::-;3473:45;;3209:315;;;;;:::o;3529:689::-;3621:6;3629;3637;3690:2;3678:9;3669:7;3665:23;3661:32;3658:52;;;3706:1;3703;3696:12;3658:52;3746:9;3733:23;3775:18;3816:2;3808:6;3805:14;3802:34;;;3832:1;3829;3822:12;3802:34;3870:6;3859:9;3855:22;3845:32;;3915:7;3908:4;3904:2;3900:13;3896:27;3886:55;;3937:1;3934;3927:12;3886:55;3977:2;3964:16;4003:2;3995:6;3992:14;3989:34;;;4019:1;4016;4009:12;3989:34;4074:7;4067:4;4057:6;4054:1;4050:14;4046:2;4042:23;4038:34;4035:47;4032:67;;;4095:1;4092;4085:12;4032:67;4126:4;4118:13;;;;-1:-1:-1;4150:6:1;-1:-1:-1;4175:37:1;;4191:20;;;-1:-1:-1;4175:37:1;:::i;:::-;4165:47;;3529:689;;;;;:::o;4223:405::-;4298:6;4306;4314;4367:2;4355:9;4346:7;4342:23;4338:32;4335:52;;;4383:1;4380;4373:12;4335:52;4422:9;4409:23;4472:4;4465:5;4461:16;4454:5;4451:27;4441:55;;4492:1;4489;4482:12;4441:55;4515:5;4567:2;4552:18;;4539:32;;-1:-1:-1;4618:2:1;4603:18;;;4590:32;;4223:405;-1:-1:-1;;;4223:405:1:o;4633:180::-;4692:6;4745:2;4733:9;4724:7;4720:23;4716:32;4713:52;;;4761:1;4758;4751:12;4713:52;-1:-1:-1;4784:23:1;;4633:180;-1:-1:-1;4633:180:1:o;4818:388::-;4886:6;4894;4947:2;4935:9;4926:7;4922:23;4918:32;4915:52;;;4963:1;4960;4953:12;4915:52;5002:9;4989:23;5021:31;5046:5;5021:31;:::i;:::-;5071:5;-1:-1:-1;5128:2:1;5113:18;;5100:32;5141:33;5100:32;5141:33;:::i;:::-;5193:7;5183:17;;;4818:388;;;;;:::o;5211:356::-;5413:2;5395:21;;;5432:18;;;5425:30;5491:34;5486:2;5471:18;;5464:62;5558:2;5543:18;;5211:356::o;5572:127::-;5633:10;5628:3;5624:20;5621:1;5614:31;5664:4;5661:1;5654:15;5688:4;5685:1;5678:15;5704:128;5744:3;5775:1;5771:6;5768:1;5765:13;5762:39;;;5781:18;;:::i;:::-;-1:-1:-1;5817:9:1;;5704:128::o;6195:380::-;6274:1;6270:12;;;;6317;;;6338:61;;6392:4;6384:6;6380:17;6370:27;;6338:61;6445:2;6437:6;6434:14;6414:18;6411:38;6408:161;;;6491:10;6486:3;6482:20;6479:1;6472:31;6526:4;6523:1;6516:15;6554:4;6551:1;6544:15;6408:161;;6195:380;;;:::o;6989:127::-;7050:10;7045:3;7041:20;7038:1;7031:31;7081:4;7078:1;7071:15;7105:4;7102:1;7095:15;7121:135;7160:3;-1:-1:-1;;7181:17:1;;7178:43;;;7201:18;;:::i;:::-;-1:-1:-1;7248:1:1;7237:13;;7121:135::o;10057:168::-;10097:7;10163:1;10159;10155:6;10151:14;10148:1;10145:21;10140:1;10133:9;10126:17;10122:45;10119:71;;;10170:18;;:::i;:::-;-1:-1:-1;10210:9:1;;10057:168::o;10230:217::-;10270:1;10296;10286:132;;10340:10;10335:3;10331:20;10328:1;10321:31;10375:4;10372:1;10365:15;10403:4;10400:1;10393:15;10286:132;-1:-1:-1;10432:9:1;;10230:217::o;12510:401::-;12712:2;12694:21;;;12751:2;12731:18;;;12724:30;12790:34;12785:2;12770:18;;12763:62;-1:-1:-1;;;12856:2:1;12841:18;;12834:35;12901:3;12886:19;;12510:401::o;12916:399::-;13118:2;13100:21;;;13157:2;13137:18;;;13130:30;13196:34;13191:2;13176:18;;13169:62;-1:-1:-1;;;13262:2:1;13247:18;;13240:33;13305:3;13290:19;;12916:399::o;15542:125::-;15582:4;15610:1;15607;15604:8;15601:34;;;15615:18;;:::i;:::-;-1:-1:-1;15652:9:1;;15542:125::o;16421:251::-;16491:6;16544:2;16532:9;16523:7;16519:23;16515:32;16512:52;;;16560:1;16557;16550:12;16512:52;16592:9;16586:16;16611:31;16636:5;16611:31;:::i;16677:980::-;16939:4;16987:3;16976:9;16972:19;17018:6;17007:9;17000:25;17044:2;17082:6;17077:2;17066:9;17062:18;17055:34;17125:3;17120:2;17109:9;17105:18;17098:31;17149:6;17184;17178:13;17215:6;17207;17200:22;17253:3;17242:9;17238:19;17231:26;;17292:2;17284:6;17280:15;17266:29;;17313:1;17323:195;17337:6;17334:1;17331:13;17323:195;;;17402:13;;-1:-1:-1;;;;;17398:39:1;17386:52;;17493:15;;;;17458:12;;;;17434:1;17352:9;17323:195;;;-1:-1:-1;;;;;;;17574:32:1;;;;17569:2;17554:18;;17547:60;-1:-1:-1;;;17638:3:1;17623:19;17616:35;17535:3;16677:980;-1:-1:-1;;;16677:980:1:o

Swarm Source

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