ETH Price: $1,863.38 (-13.17%)
 

Overview

Max Total Supply

100,000,000 DEPLOY

Holders

186

Transfers

-
0

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Deploy

Compiler Version
v0.8.30+commit.73712a01

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2025-09-04
*/

// SPDX-License-Identifier: UNLICENSE

// Twitter: https://x.com/dp_app
// Website: https://Dp.app
// Telegram: https://t.me/Deployofficial

pragma solidity 0.8.30;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

    function transfer(address recipient, uint256 amount) external returns (bool);

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

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

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

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

    function token0() external view returns (address);

    function token1() external view returns (address);

    function sync() external;
}

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

    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 getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);
}

interface IWETH {
    function deposit() external payable;

    function withdraw(uint256 wad) external;

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

    function transfer(address recipient, uint256 amount) external returns (bool);

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    function totalSupply() external view returns (uint256);

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

contract Deploy is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public _isExcludedFromFee;
    address payable private _taxWallet;

    uint256 public buyTax = 20;
    uint256 public sellTax = 20;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 100_000_000 * 10 ** _decimals;
    string private constant _name = unicode"Deploy";
    string private constant _symbol = unicode"DEPLOY";
    uint256 public _maxWalletSize = (_tTotal * 2) / 100;
    uint256 public _taxSwapUpperLimit = (_tTotal * 4) / 1000; // 0.4%
    uint256 public _taxSwapLowerLimit = (_tTotal * 5) / 10000; // 0.05%
    uint256 public _taxETHSwapLimit = 1e18;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool public tradingEnabled;
    bool private inSwap;
    bool private swapEnabled;
    uint256 private sellCount;
    uint256 private lastSellBlock;
    uint256 private launchTimestamp;
    uint256 private launchBlock;
    uint256 private taxSellPerBlockLimit = 2;
    bool public allowOnlyTxOrigin = true;
    bool private isToken0;

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

    constructor() {
        _taxWallet = payable(0xeb35747A2e7218BFED3dF57d8d46817a4086F89e);

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _isExcludedFromFee[address(uniswapV2Router)] = true;

        _approve(msg.sender, address(this), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
        isToken0 = IUniswapV2Pair(uniswapV2Pair).token0() == address(this);

        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint256).max);
        _balances[owner()] = _tTotal;
        emit Transfer(address(0), owner(), _tTotal);
    }

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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")
        );
        return true;
    }

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

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

        if (!_isExcludedFromFee[to] && !_isExcludedFromFee[from]) {
            require(tradingEnabled);
            if (_maxWalletSize < _tTotal / 100 && block.number > launchBlock) {
                // dynamic max wallet size after launch
                uint nextMaxWallet = _tTotal * 5 / 10000 * (block.number - launchBlock + 1);
                if (nextMaxWallet < _tTotal / 100) {
                    _maxWalletSize = nextMaxWallet;
                } else {
                    _maxWalletSize = _tTotal / 100;
                }
            }
            // if sell
            if (to == uniswapV2Pair) {
                taxAmount = (amount * sellTax) / 100;
                uint256 contractTokenBalance = balanceOf(address(this));
                if (
                    !inSwap &&
                    swapEnabled &&
                    launchTimestamp + 25 <= block.timestamp &&
                    contractTokenBalance >= _taxSwapLowerLimit
                ) {
                    if (block.number > lastSellBlock) {
                        sellCount = 0;
                    }
                    if (sellCount < taxSellPerBlockLimit) {
                        (uint112 r0, uint112 r1, ) = IUniswapV2Pair(uniswapV2Pair).getReserves();
                        uint112 ethReserves = isToken0 ? r1 : r0;
                        uint112 tokenReserves = isToken0 ? r0 : r1;
                        uint256 maxTokenSwapByEthAmount = uniswapV2Router.getAmountIn(
                            _taxETHSwapLimit,
                            tokenReserves,
                            ethReserves
                        );
                        swapTokensForEth(
                            min(maxTokenSwapByEthAmount, min(contractTokenBalance, _taxSwapUpperLimit))
                        );
                        uint256 contractETHBalance = address(this).balance;
                        if (contractETHBalance > 0) {
                            sendETHToFee(address(this).balance);
                        }
                        sellCount++;
                        lastSellBlock = block.number;
                    }
                }
            } else {
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
            }

            // if buy
            if (from == uniswapV2Pair) {
                taxAmount = (amount * buyTax) / 100;
                require(!allowOnlyTxOrigin || tx.origin == to);
            }
        }

        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(from, address(this), taxAmount);
        }
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Can call only once.");
        launchTimestamp = block.timestamp;
        launchBlock = block.number;
        tradingEnabled = true;
        swapEnabled = true;
    }

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

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    // lift against buying to multiple wallets from a contract
    function setAllowOnlyTxOrigin(bool value) external onlyOwner {
        allowOnlyTxOrigin = value;
    }

    function setTaxSwapLowerLimit(uint256 newLimit) external onlyOwner {
        _taxSwapLowerLimit = newLimit;
    }

    function setTaxSwapUpperLimit(uint256 newLimit) external onlyOwner {
        _taxSwapUpperLimit = newLimit;
    }

    function setTaxSellCountLimit(uint256 newNumber) external onlyOwner {
        taxSellPerBlockLimit = newNumber;
    }

    function setMaxWalletPercent(uint256 newPercent) external onlyOwner {
        // 0.01% = 1
        // 1%    = 100
        // 100%  = 100_000
        _maxWalletSize = (totalSupply() / 10000) * newPercent;
    }

    function setTaxETHSwapLimit(uint256 newLimit) external onlyOwner {
        _taxETHSwapLimit = newLimit;
    }

    function setValuesToNormal() external onlyOwner {
        _maxWalletSize = _tTotal;
        buyTax = 4;
        sellTax = 4;
        allowOnlyTxOrigin = false;
        _taxSwapLowerLimit = totalSupply() / 10_000;
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function setFees(uint256 _newBuyFee, uint256 _newSellFee) external onlyOwner {
        require(_newBuyFee <= 50 && _newSellFee <= 50);
        buyTax = _newBuyFee;
        sellTax = _newSellFee;
    }

    function saveERC20(address _address) external onlyOwner {
        uint256 _amount = IERC20(_address).balanceOf(address(this));
        IERC20(_address).transfer(msg.sender, _amount);
    }

    function saveETH() external onlyOwner {
        payable(msg.sender).transfer(address(this).balance);
    }

    function setTaxWallet(address newWallet) external onlyOwner {
        _taxWallet = payable(newWallet);
    }

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

    function includeFromFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    // manual unclog
    function manualSwap() external {
        require(msg.sender == _taxWallet);
        uint256 contractTokenBalance = balanceOf(address(this));
        (uint112 r0, uint112 r1, ) = IUniswapV2Pair(uniswapV2Pair).getReserves();
        uint112 ethReserves = isToken0 ? r1 : r0;
        uint112 tokenReserves = isToken0 ? r0 : r1;
        uint256 maxTokenSwapByEthAmount = uniswapV2Router.getAmountIn(
            _taxETHSwapLimit,
            tokenReserves,
            ethReserves
        );
        swapTokensForEth(min(maxTokenSwapByEthAmount, min(contractTokenBalance, _taxSwapUpperLimit)));
        uint256 contractETHBalance = address(this).balance;
        if (contractETHBalance > 0) {
            sendETHToFee(address(this).balance);
        }
    }

    function addLiquidity(uint256 tokenDesired, uint256 ethDesired) external payable onlyOwner {
        require(msg.value >= ethDesired, "Send enough ETH for LP");
        (uint112 reserve0, uint112 reserve1, ) = IUniswapV2Pair(uniswapV2Pair).getReserves();
        uint256 wethReserve = isToken0 ? reserve1 : reserve0;
        IWETH weth = IWETH(uniswapV2Router.WETH());
        weth.deposit{value: msg.value}();
        uint256 alreadyAddedEth;
        uint256 alreadyAddedTokens;
        if (wethReserve > 0) {
            bool isEthReserveHigher = ethDesired > tokenDesired;
            (uint256 higherReserve, uint256 lowerReserve) = isEthReserveHigher
                ? (ethDesired, tokenDesired)
                : (tokenDesired, ethDesired);
            uint256 ratioBaseUnit = 100_000;
            uint256 ratio = (higherReserve * ratioBaseUnit) / lowerReserve;
            if (isEthReserveHigher) {
                // if they sent more eth than our base unit
                if (wethReserve > ratio) {
                    uint256 tokenTransferNeeded = wethReserve / ratio;
                    IERC20(address(this)).transferFrom(msg.sender, uniswapV2Pair, tokenTransferNeeded);
                    alreadyAddedEth = wethReserve;
                    alreadyAddedTokens = tokenTransferNeeded;
                } else {
                    weth.transfer(uniswapV2Pair, ratio - wethReserve);
                    IERC20(address(this)).transferFrom(msg.sender, uniswapV2Pair, ratioBaseUnit);
                    alreadyAddedEth = ratio;
                    alreadyAddedTokens = ratioBaseUnit;
                }
            } else {
                // if they sent more eth than our base unit
                if (wethReserve > ratioBaseUnit) {
                    uint256 tokenTransferNeeded = wethReserve * ratio;
                    IERC20(address(this)).transferFrom(msg.sender, uniswapV2Pair, tokenTransferNeeded);
                    alreadyAddedEth = wethReserve;
                    alreadyAddedTokens = tokenTransferNeeded;
                } else {
                    IERC20(address(this)).transferFrom(msg.sender, uniswapV2Pair, ratio - wethReserve);
                    weth.transfer(uniswapV2Pair, ratioBaseUnit);
                    alreadyAddedEth = ratioBaseUnit;
                    alreadyAddedTokens = ratio;
                }
            }
            IUniswapV2Pair(uniswapV2Pair).sync();
            // lp is fixed to our desired ratio now
        }
        IERC20(address(this)).transferFrom(msg.sender, address(this), tokenDesired);
        weth.approve(address(uniswapV2Router), msg.value);
        _approve(address(this), address(uniswapV2Router), tokenDesired);
        uniswapV2Router.addLiquidity(
            address(weth),
            address(this),
            ethDesired - alreadyAddedEth,
            tokenDesired - alreadyAddedTokens,
            0,
            0,
            msg.sender,
            block.timestamp
        );

        // send back reamining eth, if any
        uint256 balanceLeft = weth.balanceOf(address(this));
        if (balanceLeft > 0) {
            weth.withdraw(balanceLeft);
            payable(msg.sender).transfer(balanceLeft);
        }
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

API
[{"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":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxETHSwapLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapLowerLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapUpperLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenDesired","type":"uint256"},{"internalType":"uint256","name":"ethDesired","type":"uint256"}],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"allowOnlyTxOrigin","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"saveERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saveETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setAllowOnlyTxOrigin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newBuyFee","type":"uint256"},{"internalType":"uint256","name":"_newSellFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPercent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTaxETHSwapLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNumber","type":"uint256"}],"name":"setTaxSellCountLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTaxSwapLowerLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTaxSwapUpperLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setValuesToNormal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","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"},{"stateMutability":"payable","type":"receive"}]

608060405260146005819055600655606461001c6009600a61076e565b61002a906305f5e100610783565b610035906002610783565b61003f919061079a565b6007556103e86100516009600a61076e565b61005f906305f5e100610783565b61006a906004610783565b610074919061079a565b6008556127106100866009600a61076e565b610094906305f5e100610783565b61009f906005610783565b6100a9919061079a565b600955670de0b6b3a7640000600a5560026011556012805460ff191660011790553480156100d5575f5ffd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600480546001600160a01b03191673eb35747a2e7218bfed3df57d8d46817a4086f89e179055600160035f6101525f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905530808252600390945282812080548616600190811790915560045490921681529182208054851682179055600b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091559091527ffb19a963956c9cb662dd3ae48988c4b90766df71ea130109840abe0a1b23dba88054909316179091556102259033906102126009600a61076e565b610220906305f5e100610783565b61054d565b600b5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610275573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061029991906107b9565b6001600160a01b031663c9c6539630600b5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102f8573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031c91906107b9565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610366573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061038a91906107b9565b600c80546001600160a01b0319166001600160a01b0392909216918217905560408051630dfe168160e01b81529051309291630dfe16819160048083019260209291908290030181865afa1580156103e4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061040891906107b9565b6012805461ff0019166001600160a01b03928316939093146101000292909217909155600c54600b5460405163095ea7b360e01b815290831660048201525f19602482015291169063095ea7b3906044016020604051808303815f875af1158015610475573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049991906107df565b506104a66009600a61076e565b6104b4906305f5e100610783565b60015f6104c85f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f20556104f25f546001600160a01b031690565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6105296009600a61076e565b610537906305f5e100610783565b60405190815260200160405180910390a36107fe565b6001600160a01b0383166105b45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b0382166106155760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105ab565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156106c4578085048111156106a8576106a8610675565b60018416156106b657908102905b60019390931c92800261068d565b935093915050565b5f826106da57506001610768565b816106e657505f610768565b81600181146106fc576002811461070657610722565b6001915050610768565b60ff84111561071757610717610675565b50506001821b610768565b5060208310610133831016604e8410600b8410161715610745575081810a610768565b6107515f198484610689565b805f190482111561076457610764610675565b0290505b92915050565b5f61077c60ff8416836106cc565b9392505050565b808202811582820484141761076857610768610675565b5f826107b457634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156107c9575f5ffd5b81516001600160a01b038116811461077c575f5ffd5b5f602082840312156107ef575f5ffd5b8151801515811461077c575f5ffd5b61255d8061080b5f395ff3fe60806040526004361061020a575f3560e01c80637b5818aa11610113578063a9059cbb1161009d578063dd62ed3e1161006d578063dd62ed3e146105c8578063e206a8d81461060c578063ea414b281461062b578063f166104b1461064a578063ff5118281461065f575f5ffd5b8063a9059cbb14610566578063aace8f5514610585578063cc1776d31461059a578063d34a0e7e146105af575f5ffd5b80638da5cb5b116100e35780638da5cb5b146104cb5780638f9a55c0146104f157806395d89b41146105065780639cd441da146105345780639fe0fde814610547575f5ffd5b80637b5818aa1461047057806382bf293c14610484578063896f1a95146104a35780638a8c523c146104b7575f5ffd5b80634ada218b116101945780635d525afc116101645780635d525afc146103bc578063709c8ea9146103db57806370a08231146103fa578063715018a61461042e578063768dc71014610442575f5ffd5b80634ada218b1461035e5780634f7041a51461037e57806351bc3c851461039357806354cd55a0146103a7575f5ffd5b806318160ddd116101da57806318160ddd146102c457806323b872dd146102e6578063313ce56714610305578063437823ec14610320578063464ab73f1461033f575f5ffd5b806306fdde0314610215578063095ea7b3146102555780630b78f9c014610284578063152fb630146102a5575f5ffd5b3661021157005b5f5ffd5b348015610220575f5ffd5b506040805180820190915260068152654465706c6f7960d01b60208201525b60405161024c9190612068565b60405180910390f35b348015610260575f5ffd5b5061027461026f3660046120b1565b61067e565b604051901515815260200161024c565b34801561028f575f5ffd5b506102a361029e3660046120db565b610694565b005b3480156102b0575f5ffd5b506102a36102bf3660046120fb565b6106eb565b3480156102cf575f5ffd5b506102d8610719565b60405190815260200161024c565b3480156102f1575f5ffd5b50610274610300366004612112565b610739565b348015610310575f5ffd5b506040516009815260200161024c565b34801561032b575f5ffd5b506102a361033a366004612150565b6107a0565b34801561034a575f5ffd5b506102a3610359366004612178565b6107ec565b348015610369575f5ffd5b50600c5461027490600160a01b900460ff1681565b348015610389575f5ffd5b506102d860055481565b34801561039e575f5ffd5b506102a3610828565b3480156103b2575f5ffd5b506102d860085481565b3480156103c7575f5ffd5b506102a36103d63660046120fb565b6109c3565b3480156103e6575f5ffd5b506102a36103f53660046120fb565b6109f1565b348015610405575f5ffd5b506102d8610414366004612150565b6001600160a01b03165f9081526001602052604090205490565b348015610439575f5ffd5b506102a3610a1f565b34801561044d575f5ffd5b5061027461045c366004612150565b60036020525f908152604090205460ff1681565b34801561047b575f5ffd5b506102a3610a90565b34801561048f575f5ffd5b506102a361049e3660046120fb565b610b04565b3480156104ae575f5ffd5b506102a3610b53565b3480156104c2575f5ffd5b506102a3610ba8565b3480156104d6575f5ffd5b505f546040516001600160a01b03909116815260200161024c565b3480156104fc575f5ffd5b506102d860075481565b348015610511575f5ffd5b506040805180820190915260068152654445504c4f5960d01b602082015261023f565b6102a36105423660046120db565b610c42565b348015610552575f5ffd5b506102a36105613660046120fb565b611424565b348015610571575f5ffd5b506102746105803660046120b1565b61144d565b348015610590575f5ffd5b506102d8600a5481565b3480156105a5575f5ffd5b506102d860065481565b3480156105ba575f5ffd5b506012546102749060ff1681565b3480156105d3575f5ffd5b506102d86105e2366004612193565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610617575f5ffd5b506102a3610626366004612150565b611459565b348015610636575f5ffd5b506102a3610645366004612150565b611560565b348015610655575f5ffd5b506102d860095481565b34801561066a575f5ffd5b506102a3610679366004612150565b6115ab565b5f61068a3384846115f4565b5060015b92915050565b5f546001600160a01b031633146106c65760405162461bcd60e51b81526004016106bd906121ca565b60405180910390fd5b603282111580156106d8575060328111155b6106e0575f5ffd5b600591909155600655565b5f546001600160a01b031633146107145760405162461bcd60e51b81526004016106bd906121ca565b601155565b5f6107266009600a6122f6565b610734906305f5e100612304565b905090565b5f610745848484611717565b610796843361079185604051806060016040528060288152602001612500602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611dcf565b6115f4565b5060019392505050565b5f546001600160a01b031633146107c95760405162461bcd60e51b81526004016106bd906121ca565b6001600160a01b03165f908152600360205260409020805460ff19166001179055565b5f546001600160a01b031633146108155760405162461bcd60e51b81526004016106bd906121ca565b6012805460ff1916911515919091179055565b6004546001600160a01b0316331461083e575f5ffd5b305f9081526001602052604081205490505f5f600c5f9054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156108a1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c59190612336565b5060125491935091505f90610100900460ff166108e257826108e4565b815b6012549091505f90610100900460ff166108fe5782610900565b835b600b54600a546040516385f8c25960e01b815260048101919091526001600160701b038084166024830152851660448201529192505f916001600160a01b03909116906385f8c25990606401602060405180830381865afa158015610967573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098b9190612382565b90506109aa6109a5826109a089600854611e07565b611e07565b611e1e565b4780156109ba576109ba47611f8e565b50505050505050565b5f546001600160a01b031633146109ec5760405162461bcd60e51b81526004016106bd906121ca565b600855565b5f546001600160a01b03163314610a1a5760405162461bcd60e51b81526004016106bd906121ca565b600a55565b5f546001600160a01b03163314610a485760405162461bcd60e51b81526004016106bd906121ca565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610ab95760405162461bcd60e51b81526004016106bd906121ca565b610ac56009600a6122f6565b610ad3906305f5e100612304565b600755600460058190556006556012805460ff19169055612710610af5610719565b610aff9190612399565b600955565b5f546001600160a01b03163314610b2d5760405162461bcd60e51b81526004016106bd906121ca565b80612710610b39610719565b610b439190612399565b610b4d9190612304565b60075550565b5f546001600160a01b03163314610b7c5760405162461bcd60e51b81526004016106bd906121ca565b60405133904780156108fc02915f818181858888f19350505050158015610ba5573d5f5f3e3d5ffd5b50565b5f546001600160a01b03163314610bd15760405162461bcd60e51b81526004016106bd906121ca565b600c54600160a01b900460ff1615610c215760405162461bcd60e51b815260206004820152601360248201527221b0b71031b0b6361037b7363c9037b731b29760691b60448201526064016106bd565b42600f5543601055600c805462ff00ff60a01b19166201000160a01b179055565b5f546001600160a01b03163314610c6b5760405162461bcd60e51b81526004016106bd906121ca565b80341015610cb45760405162461bcd60e51b8152602060048201526016602482015275053656e6420656e6f7567682045544820666f72204c560541b60448201526064016106bd565b5f5f600c5f9054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610d06573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2a9190612336565b5060125491935091505f90610100900460ff16610d475782610d49565b815b6001600160701b031690505f600b5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610da5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dc991906123b8565b9050806001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b158015610e04575f5ffd5b505af1158015610e16573d5f5f3e3d5ffd5b50505050505f5f5f841115611176578787115f8082610e36578a8a610e39565b898b5b9092509050620186a05f82610e4e8386612304565b610e589190612399565b905084156110005780891115610ef3575f610e73828b612399565b600c546040516323b872dd60e01b815291925030916323b872dd91610ea89133916001600160a01b03169086906004016123d3565b6020604051808303815f875af1158015610ec4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ee891906123f7565b50899750955061110e565b600c546001600160a01b03808a169163a9059cbb9116610f138c85612412565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610f5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7f91906123f7565b50600c546040516323b872dd60e01b815230916323b872dd91610fb49133916001600160a01b039091169087906004016123d3565b6020604051808303815f875af1158015610fd0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff491906123f7565b5080965081955061110e565b81891115611013575f610e73828b612304565b600c5430906323b872dd9033906001600160a01b03166110338d86612412565b6040518463ffffffff1660e01b8152600401611051939291906123d3565b6020604051808303815f875af115801561106d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109191906123f7565b50600c5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529089169063a9059cbb906044016020604051808303815f875af11580156110e2573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110691906123f7565b508196508095505b600c5f9054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561115a575f5ffd5b505af115801561116c573d5f5f3e3d5ffd5b5050505050505050505b6040516323b872dd60e01b815230906323b872dd9061119d90339084908d906004016123d3565b6020604051808303815f875af11580156111b9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111dd91906123f7565b50600b5460405163095ea7b360e01b81526001600160a01b0391821660048201523460248201529084169063095ea7b3906044016020604051808303815f875af115801561122d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125191906123f7565b50600b5461126a9030906001600160a01b03168a6115f4565b600b546001600160a01b031663e8e337008430611287868c612412565b611291868e612412565b6040516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152604483015260648201525f6084820181905260a48201523360c48201524260e4820152610104016060604051808303815f875af1158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190612425565b50506040516370a0823160e01b81523060048201525f91506001600160a01b038516906370a0823190602401602060405180830381865afa15801561136c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113909190612382565b9050801561141957604051632e1a7d4d60e01b8152600481018290526001600160a01b03851690632e1a7d4d906024015f604051808303815f87803b1580156113d7575f5ffd5b505af11580156113e9573d5f5f3e3d5ffd5b505060405133925083156108fc02915083905f818181858888f19350505050158015611417573d5f5f3e3d5ffd5b505b505050505050505050565b5f546001600160a01b03163314610aff5760405162461bcd60e51b81526004016106bd906121ca565b5f61068a338484611717565b5f546001600160a01b031633146114825760405162461bcd60e51b81526004016106bd906121ca565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156114c6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ea9190612382565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015611537573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155b91906123f7565b505050565b5f546001600160a01b031633146115895760405162461bcd60e51b81526004016106bd906121ca565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146115d45760405162461bcd60e51b81526004016106bd906121ca565b6001600160a01b03165f908152600360205260409020805460ff19169055565b6001600160a01b0383166116565760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106bd565b6001600160a01b0382166116b75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106bd565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661177b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106bd565b6001600160a01b0382166117dd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106bd565b5f811161183e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106bd565b6001600160a01b0382165f9081526003602052604081205460ff1615801561187e57506001600160a01b0384165f9081526003602052604090205460ff16155b15611c9257600c54600160a01b900460ff16611898575f5ffd5b60646118a66009600a6122f6565b6118b4906305f5e100612304565b6118be9190612399565b6007541080156118cf575060105443115b1561198f575f601054436118e39190612412565b6118ee906001612450565b6127106118fd6009600a6122f6565b61190b906305f5e100612304565b611916906005612304565b6119209190612399565b61192a9190612304565b9050606461193a6009600a6122f6565b611948906305f5e100612304565b6119529190612399565b81101561196357600781905561198d565b60646119716009600a6122f6565b61197f906305f5e100612304565b6119899190612399565b6007555b505b600c546001600160a01b0390811690841603611bc3576064600654836119b59190612304565b6119bf9190612399565b305f90815260016020526040902054600c5491925090600160a81b900460ff161580156119f55750600c54600160b01b900460ff165b8015611a0f575042600f546019611a0c9190612450565b11155b8015611a1d57506009548110155b15611bbd57600e54431115611a31575f600d555b601154600d541015611bbd575f5f600c5f9054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611a8f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ab39190612336565b5060125491935091505f90610100900460ff16611ad05782611ad2565b815b6012549091505f90610100900460ff16611aec5782611aee565b835b600b54600a546040516385f8c25960e01b815260048101919091526001600160701b038084166024830152851660448201529192505f916001600160a01b03909116906385f8c25990606401602060405180830381865afa158015611b55573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b799190612382565b9050611b8e6109a5826109a089600854611e07565b478015611b9e57611b9e47611f8e565b600d8054905f611bad83612463565b909155505043600e555050505050505b50611c3d565b60075482611be5856001600160a01b03165f9081526001602052604090205490565b611bef9190612450565b1115611c3d5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016106bd565b600c546001600160a01b0390811690851603611c9257606460055483611c639190612304565b611c6d9190612399565b60125490915060ff161580611c8a5750326001600160a01b038416145b611c92575f5ffd5b8015611d0a57305f90815260016020526040902054611cb19082611fc9565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d019085815260200190565b60405180910390a35b6001600160a01b0384165f90815260016020526040902054611d2c9083612027565b6001600160a01b0385165f90815260016020526040902055611d6f611d518383612027565b6001600160a01b0385165f9081526001602052604090205490611fc9565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611db88585612027565b60405190815260200160405180910390a350505050565b5f8184841115611df25760405162461bcd60e51b81526004016106bd9190612068565b505f611dfe8486612412565b95945050505050565b5f818311611e155782611e17565b815b9392505050565b600c805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110611e6457611e6461247b565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611ebb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611edf91906123b8565b81600181518110611ef257611ef261247b565b6001600160a01b039283166020918202929092010152600b54611f1891309116846115f4565b600b5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611f509085905f9086903090429060040161248f565b5f604051808303815f87803b158015611f67575f5ffd5b505af1158015611f79573d5f5f3e3d5ffd5b5050600c805460ff60a81b1916905550505050565b6004546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611fc5573d5f5f3e3d5ffd5b5050565b5f80611fd58385612450565b905083811015611e175760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106bd565b5f611e1783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611dcf565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610ba5575f5ffd5b5f5f604083850312156120c2575f5ffd5b82356120cd8161209d565b946020939093013593505050565b5f5f604083850312156120ec575f5ffd5b50508035926020909101359150565b5f6020828403121561210b575f5ffd5b5035919050565b5f5f5f60608486031215612124575f5ffd5b833561212f8161209d565b9250602084013561213f8161209d565b929592945050506040919091013590565b5f60208284031215612160575f5ffd5b8135611e178161209d565b8015158114610ba5575f5ffd5b5f60208284031215612188575f5ffd5b8135611e178161216b565b5f5f604083850312156121a4575f5ffd5b82356121af8161209d565b915060208301356121bf8161209d565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561224e57808504811115612232576122326121ff565b600184161561224057908102905b60019390931c928002612217565b935093915050565b5f826122645750600161068e565b8161227057505f61068e565b81600181146122865760028114612290576122ac565b600191505061068e565b60ff8411156122a1576122a16121ff565b50506001821b61068e565b5060208310610133831016604e8410600b84101617156122cf575081810a61068e565b6122db5f198484612213565b805f19048211156122ee576122ee6121ff565b029392505050565b5f611e1760ff841683612256565b808202811582820484141761068e5761068e6121ff565b80516001600160701b0381168114612331575f5ffd5b919050565b5f5f5f60608486031215612348575f5ffd5b6123518461231b565b925061235f6020850161231b565b9150604084015163ffffffff81168114612377575f5ffd5b809150509250925092565b5f60208284031215612392575f5ffd5b5051919050565b5f826123b357634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156123c8575f5ffd5b8151611e178161209d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60208284031215612407575f5ffd5b8151611e178161216b565b8181038181111561068e5761068e6121ff565b5f5f5f60608486031215612437575f5ffd5b5050815160208301516040909301519094929350919050565b8082018082111561068e5761068e6121ff565b5f60018201612474576124746121ff565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156124df5783516001600160a01b03168352602093840193909201916001016124b8565b50506001600160a01b03959095166060840152505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e0b4a4244551a7793f23df383382ee9551a4b712a60fdc8e468da76bbe500fe464736f6c634300081e0033

Deployed Bytecode

0x60806040526004361061020a575f3560e01c80637b5818aa11610113578063a9059cbb1161009d578063dd62ed3e1161006d578063dd62ed3e146105c8578063e206a8d81461060c578063ea414b281461062b578063f166104b1461064a578063ff5118281461065f575f5ffd5b8063a9059cbb14610566578063aace8f5514610585578063cc1776d31461059a578063d34a0e7e146105af575f5ffd5b80638da5cb5b116100e35780638da5cb5b146104cb5780638f9a55c0146104f157806395d89b41146105065780639cd441da146105345780639fe0fde814610547575f5ffd5b80637b5818aa1461047057806382bf293c14610484578063896f1a95146104a35780638a8c523c146104b7575f5ffd5b80634ada218b116101945780635d525afc116101645780635d525afc146103bc578063709c8ea9146103db57806370a08231146103fa578063715018a61461042e578063768dc71014610442575f5ffd5b80634ada218b1461035e5780634f7041a51461037e57806351bc3c851461039357806354cd55a0146103a7575f5ffd5b806318160ddd116101da57806318160ddd146102c457806323b872dd146102e6578063313ce56714610305578063437823ec14610320578063464ab73f1461033f575f5ffd5b806306fdde0314610215578063095ea7b3146102555780630b78f9c014610284578063152fb630146102a5575f5ffd5b3661021157005b5f5ffd5b348015610220575f5ffd5b506040805180820190915260068152654465706c6f7960d01b60208201525b60405161024c9190612068565b60405180910390f35b348015610260575f5ffd5b5061027461026f3660046120b1565b61067e565b604051901515815260200161024c565b34801561028f575f5ffd5b506102a361029e3660046120db565b610694565b005b3480156102b0575f5ffd5b506102a36102bf3660046120fb565b6106eb565b3480156102cf575f5ffd5b506102d8610719565b60405190815260200161024c565b3480156102f1575f5ffd5b50610274610300366004612112565b610739565b348015610310575f5ffd5b506040516009815260200161024c565b34801561032b575f5ffd5b506102a361033a366004612150565b6107a0565b34801561034a575f5ffd5b506102a3610359366004612178565b6107ec565b348015610369575f5ffd5b50600c5461027490600160a01b900460ff1681565b348015610389575f5ffd5b506102d860055481565b34801561039e575f5ffd5b506102a3610828565b3480156103b2575f5ffd5b506102d860085481565b3480156103c7575f5ffd5b506102a36103d63660046120fb565b6109c3565b3480156103e6575f5ffd5b506102a36103f53660046120fb565b6109f1565b348015610405575f5ffd5b506102d8610414366004612150565b6001600160a01b03165f9081526001602052604090205490565b348015610439575f5ffd5b506102a3610a1f565b34801561044d575f5ffd5b5061027461045c366004612150565b60036020525f908152604090205460ff1681565b34801561047b575f5ffd5b506102a3610a90565b34801561048f575f5ffd5b506102a361049e3660046120fb565b610b04565b3480156104ae575f5ffd5b506102a3610b53565b3480156104c2575f5ffd5b506102a3610ba8565b3480156104d6575f5ffd5b505f546040516001600160a01b03909116815260200161024c565b3480156104fc575f5ffd5b506102d860075481565b348015610511575f5ffd5b506040805180820190915260068152654445504c4f5960d01b602082015261023f565b6102a36105423660046120db565b610c42565b348015610552575f5ffd5b506102a36105613660046120fb565b611424565b348015610571575f5ffd5b506102746105803660046120b1565b61144d565b348015610590575f5ffd5b506102d8600a5481565b3480156105a5575f5ffd5b506102d860065481565b3480156105ba575f5ffd5b506012546102749060ff1681565b3480156105d3575f5ffd5b506102d86105e2366004612193565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610617575f5ffd5b506102a3610626366004612150565b611459565b348015610636575f5ffd5b506102a3610645366004612150565b611560565b348015610655575f5ffd5b506102d860095481565b34801561066a575f5ffd5b506102a3610679366004612150565b6115ab565b5f61068a3384846115f4565b5060015b92915050565b5f546001600160a01b031633146106c65760405162461bcd60e51b81526004016106bd906121ca565b60405180910390fd5b603282111580156106d8575060328111155b6106e0575f5ffd5b600591909155600655565b5f546001600160a01b031633146107145760405162461bcd60e51b81526004016106bd906121ca565b601155565b5f6107266009600a6122f6565b610734906305f5e100612304565b905090565b5f610745848484611717565b610796843361079185604051806060016040528060288152602001612500602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611dcf565b6115f4565b5060019392505050565b5f546001600160a01b031633146107c95760405162461bcd60e51b81526004016106bd906121ca565b6001600160a01b03165f908152600360205260409020805460ff19166001179055565b5f546001600160a01b031633146108155760405162461bcd60e51b81526004016106bd906121ca565b6012805460ff1916911515919091179055565b6004546001600160a01b0316331461083e575f5ffd5b305f9081526001602052604081205490505f5f600c5f9054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156108a1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c59190612336565b5060125491935091505f90610100900460ff166108e257826108e4565b815b6012549091505f90610100900460ff166108fe5782610900565b835b600b54600a546040516385f8c25960e01b815260048101919091526001600160701b038084166024830152851660448201529192505f916001600160a01b03909116906385f8c25990606401602060405180830381865afa158015610967573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098b9190612382565b90506109aa6109a5826109a089600854611e07565b611e07565b611e1e565b4780156109ba576109ba47611f8e565b50505050505050565b5f546001600160a01b031633146109ec5760405162461bcd60e51b81526004016106bd906121ca565b600855565b5f546001600160a01b03163314610a1a5760405162461bcd60e51b81526004016106bd906121ca565b600a55565b5f546001600160a01b03163314610a485760405162461bcd60e51b81526004016106bd906121ca565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610ab95760405162461bcd60e51b81526004016106bd906121ca565b610ac56009600a6122f6565b610ad3906305f5e100612304565b600755600460058190556006556012805460ff19169055612710610af5610719565b610aff9190612399565b600955565b5f546001600160a01b03163314610b2d5760405162461bcd60e51b81526004016106bd906121ca565b80612710610b39610719565b610b439190612399565b610b4d9190612304565b60075550565b5f546001600160a01b03163314610b7c5760405162461bcd60e51b81526004016106bd906121ca565b60405133904780156108fc02915f818181858888f19350505050158015610ba5573d5f5f3e3d5ffd5b50565b5f546001600160a01b03163314610bd15760405162461bcd60e51b81526004016106bd906121ca565b600c54600160a01b900460ff1615610c215760405162461bcd60e51b815260206004820152601360248201527221b0b71031b0b6361037b7363c9037b731b29760691b60448201526064016106bd565b42600f5543601055600c805462ff00ff60a01b19166201000160a01b179055565b5f546001600160a01b03163314610c6b5760405162461bcd60e51b81526004016106bd906121ca565b80341015610cb45760405162461bcd60e51b8152602060048201526016602482015275053656e6420656e6f7567682045544820666f72204c560541b60448201526064016106bd565b5f5f600c5f9054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610d06573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2a9190612336565b5060125491935091505f90610100900460ff16610d475782610d49565b815b6001600160701b031690505f600b5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610da5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dc991906123b8565b9050806001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b158015610e04575f5ffd5b505af1158015610e16573d5f5f3e3d5ffd5b50505050505f5f5f841115611176578787115f8082610e36578a8a610e39565b898b5b9092509050620186a05f82610e4e8386612304565b610e589190612399565b905084156110005780891115610ef3575f610e73828b612399565b600c546040516323b872dd60e01b815291925030916323b872dd91610ea89133916001600160a01b03169086906004016123d3565b6020604051808303815f875af1158015610ec4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ee891906123f7565b50899750955061110e565b600c546001600160a01b03808a169163a9059cbb9116610f138c85612412565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610f5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7f91906123f7565b50600c546040516323b872dd60e01b815230916323b872dd91610fb49133916001600160a01b039091169087906004016123d3565b6020604051808303815f875af1158015610fd0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff491906123f7565b5080965081955061110e565b81891115611013575f610e73828b612304565b600c5430906323b872dd9033906001600160a01b03166110338d86612412565b6040518463ffffffff1660e01b8152600401611051939291906123d3565b6020604051808303815f875af115801561106d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109191906123f7565b50600c5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529089169063a9059cbb906044016020604051808303815f875af11580156110e2573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110691906123f7565b508196508095505b600c5f9054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561115a575f5ffd5b505af115801561116c573d5f5f3e3d5ffd5b5050505050505050505b6040516323b872dd60e01b815230906323b872dd9061119d90339084908d906004016123d3565b6020604051808303815f875af11580156111b9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111dd91906123f7565b50600b5460405163095ea7b360e01b81526001600160a01b0391821660048201523460248201529084169063095ea7b3906044016020604051808303815f875af115801561122d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125191906123f7565b50600b5461126a9030906001600160a01b03168a6115f4565b600b546001600160a01b031663e8e337008430611287868c612412565b611291868e612412565b6040516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152604483015260648201525f6084820181905260a48201523360c48201524260e4820152610104016060604051808303815f875af1158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190612425565b50506040516370a0823160e01b81523060048201525f91506001600160a01b038516906370a0823190602401602060405180830381865afa15801561136c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113909190612382565b9050801561141957604051632e1a7d4d60e01b8152600481018290526001600160a01b03851690632e1a7d4d906024015f604051808303815f87803b1580156113d7575f5ffd5b505af11580156113e9573d5f5f3e3d5ffd5b505060405133925083156108fc02915083905f818181858888f19350505050158015611417573d5f5f3e3d5ffd5b505b505050505050505050565b5f546001600160a01b03163314610aff5760405162461bcd60e51b81526004016106bd906121ca565b5f61068a338484611717565b5f546001600160a01b031633146114825760405162461bcd60e51b81526004016106bd906121ca565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156114c6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ea9190612382565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015611537573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155b91906123f7565b505050565b5f546001600160a01b031633146115895760405162461bcd60e51b81526004016106bd906121ca565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146115d45760405162461bcd60e51b81526004016106bd906121ca565b6001600160a01b03165f908152600360205260409020805460ff19169055565b6001600160a01b0383166116565760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106bd565b6001600160a01b0382166116b75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106bd565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661177b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106bd565b6001600160a01b0382166117dd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106bd565b5f811161183e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106bd565b6001600160a01b0382165f9081526003602052604081205460ff1615801561187e57506001600160a01b0384165f9081526003602052604090205460ff16155b15611c9257600c54600160a01b900460ff16611898575f5ffd5b60646118a66009600a6122f6565b6118b4906305f5e100612304565b6118be9190612399565b6007541080156118cf575060105443115b1561198f575f601054436118e39190612412565b6118ee906001612450565b6127106118fd6009600a6122f6565b61190b906305f5e100612304565b611916906005612304565b6119209190612399565b61192a9190612304565b9050606461193a6009600a6122f6565b611948906305f5e100612304565b6119529190612399565b81101561196357600781905561198d565b60646119716009600a6122f6565b61197f906305f5e100612304565b6119899190612399565b6007555b505b600c546001600160a01b0390811690841603611bc3576064600654836119b59190612304565b6119bf9190612399565b305f90815260016020526040902054600c5491925090600160a81b900460ff161580156119f55750600c54600160b01b900460ff165b8015611a0f575042600f546019611a0c9190612450565b11155b8015611a1d57506009548110155b15611bbd57600e54431115611a31575f600d555b601154600d541015611bbd575f5f600c5f9054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611a8f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ab39190612336565b5060125491935091505f90610100900460ff16611ad05782611ad2565b815b6012549091505f90610100900460ff16611aec5782611aee565b835b600b54600a546040516385f8c25960e01b815260048101919091526001600160701b038084166024830152851660448201529192505f916001600160a01b03909116906385f8c25990606401602060405180830381865afa158015611b55573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b799190612382565b9050611b8e6109a5826109a089600854611e07565b478015611b9e57611b9e47611f8e565b600d8054905f611bad83612463565b909155505043600e555050505050505b50611c3d565b60075482611be5856001600160a01b03165f9081526001602052604090205490565b611bef9190612450565b1115611c3d5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016106bd565b600c546001600160a01b0390811690851603611c9257606460055483611c639190612304565b611c6d9190612399565b60125490915060ff161580611c8a5750326001600160a01b038416145b611c92575f5ffd5b8015611d0a57305f90815260016020526040902054611cb19082611fc9565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d019085815260200190565b60405180910390a35b6001600160a01b0384165f90815260016020526040902054611d2c9083612027565b6001600160a01b0385165f90815260016020526040902055611d6f611d518383612027565b6001600160a01b0385165f9081526001602052604090205490611fc9565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611db88585612027565b60405190815260200160405180910390a350505050565b5f8184841115611df25760405162461bcd60e51b81526004016106bd9190612068565b505f611dfe8486612412565b95945050505050565b5f818311611e155782611e17565b815b9392505050565b600c805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110611e6457611e6461247b565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611ebb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611edf91906123b8565b81600181518110611ef257611ef261247b565b6001600160a01b039283166020918202929092010152600b54611f1891309116846115f4565b600b5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611f509085905f9086903090429060040161248f565b5f604051808303815f87803b158015611f67575f5ffd5b505af1158015611f79573d5f5f3e3d5ffd5b5050600c805460ff60a81b1916905550505050565b6004546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611fc5573d5f5f3e3d5ffd5b5050565b5f80611fd58385612450565b905083811015611e175760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106bd565b5f611e1783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611dcf565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610ba5575f5ffd5b5f5f604083850312156120c2575f5ffd5b82356120cd8161209d565b946020939093013593505050565b5f5f604083850312156120ec575f5ffd5b50508035926020909101359150565b5f6020828403121561210b575f5ffd5b5035919050565b5f5f5f60608486031215612124575f5ffd5b833561212f8161209d565b9250602084013561213f8161209d565b929592945050506040919091013590565b5f60208284031215612160575f5ffd5b8135611e178161209d565b8015158114610ba5575f5ffd5b5f60208284031215612188575f5ffd5b8135611e178161216b565b5f5f604083850312156121a4575f5ffd5b82356121af8161209d565b915060208301356121bf8161209d565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561224e57808504811115612232576122326121ff565b600184161561224057908102905b60019390931c928002612217565b935093915050565b5f826122645750600161068e565b8161227057505f61068e565b81600181146122865760028114612290576122ac565b600191505061068e565b60ff8411156122a1576122a16121ff565b50506001821b61068e565b5060208310610133831016604e8410600b84101617156122cf575081810a61068e565b6122db5f198484612213565b805f19048211156122ee576122ee6121ff565b029392505050565b5f611e1760ff841683612256565b808202811582820484141761068e5761068e6121ff565b80516001600160701b0381168114612331575f5ffd5b919050565b5f5f5f60608486031215612348575f5ffd5b6123518461231b565b925061235f6020850161231b565b9150604084015163ffffffff81168114612377575f5ffd5b809150509250925092565b5f60208284031215612392575f5ffd5b5051919050565b5f826123b357634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156123c8575f5ffd5b8151611e178161209d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60208284031215612407575f5ffd5b8151611e178161216b565b8181038181111561068e5761068e6121ff565b5f5f5f60608486031215612437575f5ffd5b5050815160208301516040909301519094929350919050565b8082018082111561068e5761068e6121ff565b5f60018201612474576124746121ff565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156124df5783516001600160a01b03168352602093840193909201916001016124b8565b50506001600160a01b03959095166060840152505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e0b4a4244551a7793f23df383382ee9551a4b712a60fdc8e468da76bbe500fe464736f6c634300081e0033

Deployed Bytecode Sourcemap

5391:14417:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7654:83;;;;;;;;;;-1:-1:-1;7724:5:0;;;;;;;;;;;;-1:-1:-1;;;7724:5:0;;;;7654:83;;;;;;;:::i;:::-;;;;;;;;8487:161;;;;;;;;;;-1:-1:-1;8487:161:0;;;;;:::i;:::-;;:::i;:::-;;;1110:14:1;;1103:22;1085:41;;1073:2;1058:18;8487:161:0;945:187:1;14811:204:0;;;;;;;;;;-1:-1:-1;14811:204:0;;;;;:::i;:::-;;:::i;:::-;;14011:119;;;;;;;;;;-1:-1:-1;14011:119:0;;;;;:::i;:::-;;:::i;7931:95::-;;;;;;;;;;;;;:::i;:::-;;;1865:25:1;;;1853:2;1838:18;7931:95:0;1719:177:1;8656:397:0;;;;;;;;;;-1:-1:-1;8656:397:0;;;;;:::i;:::-;;:::i;7840:83::-;;;;;;;;;;-1:-1:-1;7840:83:0;;5805:1;2556:36:1;;2544:2;2529:18;7840:83:0;2414:184:1;15456:113:0;;;;;;;;;;-1:-1:-1;15456:113:0;;;;;:::i;:::-;;:::i;13652:105::-;;;;;;;;;;-1:-1:-1;13652:105:0;;;;;:::i;:::-;;:::i;6328:26::-;;;;;;;;;;-1:-1:-1;6328:26:0;;;;-1:-1:-1;;;6328:26:0;;;;;;5701;;;;;;;;;;;;;;;;15721:769;;;;;;;;;;;;;:::i;6052:56::-;;;;;;;;;;;;;;;;13888:115;;;;;;;;;;-1:-1:-1;13888:115:0;;;;;:::i;:::-;;:::i;14360:111::-;;;;;;;;;;-1:-1:-1;14360:111:0;;;;;:::i;:::-;;:::i;8034:119::-;;;;;;;;;;-1:-1:-1;8034:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;8127:18:0;8100:7;8127:18;;;:9;:18;;;;;;;8034:119;2777:148;;;;;;;;;;;;;:::i;5601:50::-;;;;;;;;;;-1:-1:-1;5601:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14479:224;;;;;;;;;;;;;:::i;14138:214::-;;;;;;;;;;-1:-1:-1;14138:214:0;;;;;:::i;:::-;;:::i;15222:108::-;;;;;;;;;;;;;:::i;12722:252::-;;;;;;;;;;;;;:::i;2563:79::-;;;;;;;;;;-1:-1:-1;2601:7:0;2628:6;2563:79;;-1:-1:-1;;;;;2628:6:0;;;3370:51:1;;3358:2;3343:18;2563:79:0;3224:203:1;5994:51:0;;;;;;;;;;;;;;;;7745:87;;;;;;;;;;-1:-1:-1;7817:7:0;;;;;;;;;;;;-1:-1:-1;;;7817:7:0;;;;7745:87;;16498:3270;;;;;;:::i;:::-;;:::i;13765:115::-;;;;;;;;;;-1:-1:-1;13765:115:0;;;;;:::i;:::-;;:::i;8161:167::-;;;;;;;;;;-1:-1:-1;8161:167:0;;;;;:::i;:::-;;:::i;6196:38::-;;;;;;;;;;;;;;;;5734:27;;;;;;;;;;;;;;;;6605:36;;;;;;;;;;-1:-1:-1;6605:36:0;;;;;;;;8336:143;;;;;;;;;;-1:-1:-1;8336:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;8444:18:0;;;8417:7;8444:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8336:143;15023:191;;;;;;;;;;-1:-1:-1;15023:191:0;;;;;:::i;:::-;;:::i;15338:110::-;;;;;;;;;;-1:-1:-1;15338:110:0;;;;;:::i;:::-;;:::i;6123:57::-;;;;;;;;;;;;;;;;15577:114;;;;;;;;;;-1:-1:-1;15577:114:0;;;;;:::i;:::-;;:::i;8487:161::-;8562:4;8579:39;287:10;8602:7;8611:6;8579:8;:39::i;:::-;-1:-1:-1;8636:4:0;8487:161;;;;;:::o;14811:204::-;2690:6;;-1:-1:-1;;;;;2690:6:0;287:10;2690:22;2682:67;;;;-1:-1:-1;;;2682:67:0;;;;;;;:::i;:::-;;;;;;;;;14921:2:::1;14907:10;:16;;:37;;;;;14942:2;14927:11;:17;;14907:37;14899:46;;;;;;14956:6;:19:::0;;;;14986:7:::1;:21:::0;14811:204::o;14011:119::-;2690:6;;-1:-1:-1;;;;;2690:6:0;287:10;2690:22;2682:67;;;;-1:-1:-1;;;2682:67:0;;;;;;;:::i;:::-;14090:20:::1;:32:::0;14011:119::o;7931:95::-;7984:7;5862:15;5805:1;5862:2;:15;:::i;:::-;5848:29;;:11;:29;:::i;:::-;8004:14;;7931:95;:::o;8656:397::-;8788:4;8805:36;8815:6;8823:9;8834:6;8805:9;:36::i;:::-;8852:171;8875:6;287:10;8923:89;8961:6;8923:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8923:19:0;;;;;;:11;:19;;;;;;;;287:10;8923:33;;;;;;;;;;:37;:89::i;:::-;8852:8;:171::i;:::-;-1:-1:-1;9041:4:0;8656:397;;;;;:::o;15456:113::-;2690:6;;-1:-1:-1;;;;;2690:6:0;287:10;2690:22;2682:67;;;;-1:-1:-1;;;2682:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15527:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;15527:34:0::1;15557:4;15527:34;::::0;;15456:113::o;13652:105::-;2690:6;;-1:-1:-1;;;;;2690:6:0;287:10;2690:22;2682:67;;;;-1:-1:-1;;;2682:67:0;;;;;;;:::i;:::-;13724:17:::1;:25:::0;;-1:-1:-1;;13724:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13652:105::o;15721:769::-;15785:10;;-1:-1:-1;;;;;15785:10:0;15771;:24;15763:33;;;;;;15856:4;15807:28;8127:18;;;:9;:18;;;;;;15807:55;;15874:10;15886;15917:13;;;;;;;;;-1:-1:-1;;;;;15917:13:0;-1:-1:-1;;;;;15902:41:0;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;15978:8:0;;15873:72;;-1:-1:-1;15873:72:0;-1:-1:-1;15956:19:0;;15978:8;;;;;:18;;15994:2;15978:18;;;15989:2;15978:18;16031:8;;15956:40;;-1:-1:-1;16007:21:0;;16031:8;;;;;:18;;16047:2;16031:18;;;16042:2;16031:18;16094:15;;16136:16;;16094:123;;-1:-1:-1;;;16094:123:0;;;;;6773:25:1;;;;-1:-1:-1;;;;;6834:43:1;;;6814:18;;;6807:71;6914:43;;6894:18;;;6887:71;16007:42:0;;-1:-1:-1;16060:31:0;;-1:-1:-1;;;;;16094:15:0;;;;:27;;6746:18:1;;16094:123:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16060:157;;16228:93;16245:75;16249:23;16274:45;16278:20;16300:18;;16274:3;:45::i;:::-;16245:3;:75::i;:::-;16228:16;:93::i;:::-;16361:21;16397:22;;16393:90;;16436:35;16449:21;16436:12;:35::i;:::-;15752:738;;;;;;;15721:769::o;13888:115::-;2690:6;;-1:-1:-1;;;;;2690:6:0;287:10;2690:22;2682:67;;;;-1:-1:-1;;;2682:67:0;;;;;;;:::i;:::-;13966:18:::1;:29:::0;13888:115::o;14360:111::-;2690:6;;-1:-1:-1;;;;;2690:6:0;287:10;2690:22;2682:67;;;;-1:-1:-1;;;2682:67:0;;;;;;;:::i;:::-;14436:16:::1;:27:::0;14360:111::o;2777:148::-;2690:6;;-1:-1:-1;;;;;2690:6:0;287:10;2690:22;2682:67;;;;-1:-1:-1;;;2682:67:0;;;;;;;:::i;:::-;2884:1:::1;2868:6:::0;;2847:40:::1;::::0;-1:-1:-1;;;;;2868:6:0;;::::1;::::0;2847:40:::1;::::0;2884:1;;2847:40:::1;2915:1;2898:19:::0;;-1:-1:-1;;;;;;2898:19:0::1;::::0;;2777:148::o;14479:224::-;2690:6;;-1:-1:-1;;;;;2690:6:0;287:10;2690:22;2682:67;;;;-1:-1:-1;;;2682:67:0;;;;;;;:::i;:::-;5862:15:::1;5805:1;5862:2;:15;:::i;:::-;5848:29;::::0;:11:::1;:29;:::i;:::-;14538:14;:24:::0;14582:1:::1;14573:6;:10:::0;;;14594:7:::1;:11:::0;14616:17:::1;:25:::0;;-1:-1:-1;;14616:25:0::1;::::0;;14689:6:::1;14673:13;:11;:13::i;:::-;:22;;;;:::i;:::-;14652:18;:43:::0;14479:224::o;14138:214::-;2690:6;;-1:-1:-1;;;;;2690:6:0;287:10;2690:22;2682:67;;;;-1:-1:-1;;;2682:67:0;;;;;;;:::i;:::-;14334:10:::1;14325:5;14309:13;:11;:13::i;:::-;:21;;;;:::i;:::-;14308:36;;;;:::i;:::-;14291:14;:53:::0;-1:-1:-1;14138:214:0:o;15222:108::-;2690:6;;-1:-1:-1;;;;;2690:6:0;287:10;2690:22;2682:67;;;;-1:-1:-1;;;2682:67:0;;;;;;;:::i;:::-;15271:51:::1;::::0;15279:10:::1;::::0;15300:21:::1;15271:51:::0;::::1;;;::::0;::::1;::::0;;;15300:21;15279:10;15271:51;::::1;;;;;;;;;;;;;;;;;;;;15222:108::o:0;12722:252::-;2690:6;;-1:-1:-1;;;;;2690:6:0;287:10;2690:22;2682:67;;;;-1:-1:-1;;;2682:67:0;;;;;;;:::i;:::-;12786:14:::1;::::0;-1:-1:-1;;;12786:14:0;::::1;;;12785:15;12777:47;;;::::0;-1:-1:-1;;;12777:47:0;;7628:2:1;12777:47:0::1;::::0;::::1;7610:21:1::0;7667:2;7647:18;;;7640:30;-1:-1:-1;;;7686:18:1;;;7679:49;7745:18;;12777:47:0::1;7426:343:1::0;12777:47:0::1;12853:15;12835;:33:::0;12893:12:::1;12879:11;:26:::0;12916:14:::1;:21:::0;;-1:-1:-1;;;;12948:18:0;-1:-1:-1;;;12948:18:0;;;12722:252::o;16498:3270::-;2690:6;;-1:-1:-1;;;;;2690:6:0;287:10;2690:22;2682:67;;;;-1:-1:-1;;;2682:67:0;;;;;;;:::i;:::-;16621:10:::1;16608:9;:23;;16600:58;;;::::0;-1:-1:-1;;;16600:58:0;;7976:2:1;16600:58:0::1;::::0;::::1;7958:21:1::0;8015:2;7995:18;;;7988:30;-1:-1:-1;;;8034:18:1;;;8027:52;8096:18;;16600:58:0::1;7774:346:1::0;16600:58:0::1;16670:16;16688;16725:13;;;;;;;;;-1:-1:-1::0;;;;;16725:13:0::1;-1:-1:-1::0;;;;;16710:41:0::1;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;16786:8:0::1;::::0;16669:84;;-1:-1:-1;16669:84:0;-1:-1:-1;16764:19:0::1;::::0;16786:8:::1;::::0;::::1;;;:30;;16808:8;16786:30;;;16797:8;16786:30;-1:-1:-1::0;;;;;16764:52:0::1;;;16827:10;16846:15;;;;;;;;;-1:-1:-1::0;;;;;16846:15:0::1;-1:-1:-1::0;;;;;16846:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16827:42;;16880:4;-1:-1:-1::0;;;;;16880:12:0::1;;16900:9;16880:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16923:23;16957:26;17012:1;16998:11;:15;16994:2015;;;17056:25:::0;;::::1;17030:23;::::0;17056:25;17144:110:::1;;17229:12;17243:10;17144:110;;;17183:10;17195:12;17144:110;17096:158:::0;;-1:-1:-1;17096:158:0;-1:-1:-1;17293:7:0::1;17269:21;17096:158:::0;17332:29:::1;17293:7:::0;17096:158;17332:29:::1;:::i;:::-;17331:46;;;;:::i;:::-;17315:62;;17396:18;17392:1502;;;17514:5;17500:11;:19;17496:637;;;17544:27;17574:19;17588:5:::0;17574:11;:19:::1;:::i;:::-;17663:13;::::0;17616:82:::1;::::0;-1:-1:-1;;;17616:82:0;;17544:49;;-1:-1:-1;17631:4:0::1;::::0;17616:34:::1;::::0;:82:::1;::::0;17651:10:::1;::::0;-1:-1:-1;;;;;17663:13:0::1;::::0;17544:49;;17616:82:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;17739:11:0;;-1:-1:-1;17794:19:0;-1:-1:-1;17392:1502:0::1;;17496:637;17876:13;::::0;-1:-1:-1;;;;;17862:13:0;;::::1;::::0;::::1;::::0;17876::::1;17891:19;17899:11:::0;17891:5;:19:::1;:::i;:::-;17862:49;::::0;-1:-1:-1;;;;;;17862:49:0::1;::::0;;;;;;-1:-1:-1;;;;;9332:32:1;;;17862:49:0::1;::::0;::::1;9314:51:1::0;9381:18;;;9374:34;9287:18;;17862:49:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;17981:13:0::1;::::0;17934:76:::1;::::0;-1:-1:-1;;;17934:76:0;;17949:4:::1;::::0;17934:34:::1;::::0;:76:::1;::::0;17969:10:::1;::::0;-1:-1:-1;;;;;17981:13:0;;::::1;::::0;17996;;17934:76:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18051:5;18033:23;;18100:13;18079:34;;17392:1502;;;18252:13;18238:11;:27;18234:645;;;18290:27;18320:19;18334:5:::0;18320:11;:19:::1;:::i;18234:645::-;18655:13;::::0;18623:4:::1;::::0;18608:34:::1;::::0;18643:10:::1;::::0;-1:-1:-1;;;;;18655:13:0::1;18670:19;18678:11:::0;18670:5;:19:::1;:::i;:::-;18608:82;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;18727:13:0::1;::::0;18713:43:::1;::::0;-1:-1:-1;;;18713:43:0;;-1:-1:-1;;;;;18727:13:0;;::::1;18713:43;::::0;::::1;9314:51:1::0;9381:18;;;9374:34;;;18713:13:0;;::::1;::::0;::::1;::::0;9287:18:1;;18713:43:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18797:13;18779:31;;18854:5;18833:26;;18234:645;18923:13;;;;;;;;;-1:-1:-1::0;;;;;18923:13:0::1;-1:-1:-1::0;;;;;18908:34:0::1;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17015:1994;;;;;16994:2015;19019:75;::::0;-1:-1:-1;;;19019:75:0;;19034:4:::1;::::0;19019:34:::1;::::0;:75:::1;::::0;19054:10:::1;::::0;19034:4;;19081:12;;19019:75:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;19126:15:0::1;::::0;19105:49:::1;::::0;-1:-1:-1;;;19105:49:0;;-1:-1:-1;;;;;19126:15:0;;::::1;19105:49;::::0;::::1;9314:51:1::0;19144:9:0::1;9381:18:1::0;;;9374:34;19105:12:0;;::::1;::::0;::::1;::::0;9287:18:1;;19105:49:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;19197:15:0::1;::::0;19165:63:::1;::::0;19182:4:::1;::::0;-1:-1:-1;;;;;19197:15:0::1;19215:12:::0;19165:8:::1;:63::i;:::-;19239:15;::::0;-1:-1:-1;;;;;19239:15:0::1;:28;19290:4:::0;19318::::1;19338:28;19351:15:::0;19338:10;:28:::1;:::i;:::-;19381:33;19396:18:::0;19381:12;:33:::1;:::i;:::-;19239:273;::::0;-1:-1:-1;;;;;;19239:273:0::1;::::0;;;;;;-1:-1:-1;;;;;9796:32:1;;;19239:273:0::1;::::0;::::1;9778:51:1::0;9865:32;;;;9845:18;;;9838:60;9914:18;;;9907:34;9957:18;;;9950:34;19429:1:0::1;10000:19:1::0;;;9993:35;;;10044:19;;;10037:35;19461:10:0::1;10088:19:1::0;;;10081:61;19486:15:0::1;10158:19:1::0;;;10151:35;9750:19;;19239:273:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;19591:29:0::1;::::0;-1:-1:-1;;;19591:29:0;;19614:4:::1;19591:29;::::0;::::1;3370:51:1::0;19569:19:0::1;::::0;-1:-1:-1;;;;;;19591:14:0;::::1;::::0;::::1;::::0;3343:18:1;;19591:29:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19569:51:::0;-1:-1:-1;19635:15:0;;19631:130:::1;;19667:26;::::0;-1:-1:-1;;;19667:26:0;;::::1;::::0;::::1;1865:25:1::0;;;-1:-1:-1;;;;;19667:13:0;::::1;::::0;::::1;::::0;1838:18:1;;19667:26:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;19708:41:0::1;::::0;19716:10:::1;::::0;-1:-1:-1;19708:41:0;::::1;;;::::0;-1:-1:-1;19737:11:0;;19708:41:::1;::::0;;;19737:11;19716:10;19708:41;::::1;;;;;;;;;;;;;;;;;;;;19631:130;16589:3179;;;;;;;16498:3270:::0;;:::o;13765:115::-;2690:6;;-1:-1:-1;;;;;2690:6:0;287:10;2690:22;2682:67;;;;-1:-1:-1;;;2682:67:0;;;;;;;:::i;8161:167::-;8239:4;8256:42;287:10;8280:9;8291:6;8256:9;:42::i;15023:191::-;2690:6;;-1:-1:-1;;;;;2690:6:0;287:10;2690:22;2682:67;;;;-1:-1:-1;;;2682:67:0;;;;;;;:::i;:::-;15108:41:::1;::::0;-1:-1:-1;;;15108:41:0;;15143:4:::1;15108:41;::::0;::::1;3370:51:1::0;15090:15:0::1;::::0;-1:-1:-1;;;;;15108:26:0;::::1;::::0;::::1;::::0;3343:18:1;;15108:41:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15160:46;::::0;-1:-1:-1;;;15160:46:0;;15186:10:::1;15160:46;::::0;::::1;9314:51:1::0;9381:18;;;9374:34;;;15090:59:0;;-1:-1:-1;;;;;;15160:25:0;::::1;::::0;::::1;::::0;9287:18:1;;15160:46:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15079:135;15023:191:::0;:::o;15338:110::-;2690:6;;-1:-1:-1;;;;;2690:6:0;287:10;2690:22;2682:67;;;;-1:-1:-1;;;2682:67:0;;;;;;;:::i;:::-;15409:10:::1;:31:::0;;-1:-1:-1;;;;;;15409:31:0::1;-1:-1:-1::0;;;;;15409:31:0;;;::::1;::::0;;;::::1;::::0;;15338:110::o;15577:114::-;2690:6;;-1:-1:-1;;;;;2690:6:0;287:10;2690:22;2682:67;;;;-1:-1:-1;;;2682:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15648:27:0::1;15678:5;15648:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;15648:35:0::1;::::0;;15577:114::o;9061:369::-;-1:-1:-1;;;;;9188:19:0;;9180:68;;;;-1:-1:-1;;;9180:68:0;;10860:2:1;9180:68:0;;;10842:21:1;10899:2;10879:18;;;10872:30;10938:34;10918:18;;;10911:62;-1:-1:-1;;;10989:18:1;;;10982:34;11033:19;;9180:68:0;10658:400:1;9180:68:0;-1:-1:-1;;;;;9267:21:0;;9259:68;;;;-1:-1:-1;;;9259:68:0;;11265:2:1;9259:68:0;;;11247:21:1;11304:2;11284:18;;;11277:30;11343:34;11323:18;;;11316:62;-1:-1:-1;;;11394:18:1;;;11387:32;11436:19;;9259:68:0;11063:398:1;9259:68:0;-1:-1:-1;;;;;9338:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9390:32;;1865:25:1;;;9390:32:0;;1838:18:1;9390:32:0;;;;;;;9061:369;;;:::o;9438:3276::-;-1:-1:-1;;;;;9560:18:0;;9552:68;;;;-1:-1:-1;;;9552:68:0;;11668:2:1;9552:68:0;;;11650:21:1;11707:2;11687:18;;;11680:30;11746:34;11726:18;;;11719:62;-1:-1:-1;;;11797:18:1;;;11790:35;11842:19;;9552:68:0;11466:401:1;9552:68:0;-1:-1:-1;;;;;9639:16:0;;9631:64;;;;-1:-1:-1;;;9631:64:0;;12074:2:1;9631:64:0;;;12056:21:1;12113:2;12093:18;;;12086:30;12152:34;12132:18;;;12125:62;-1:-1:-1;;;12203:18:1;;;12196:33;12246:19;;9631:64:0;11872:399:1;9631:64:0;9723:1;9714:6;:10;9706:64;;;;-1:-1:-1;;;9706:64:0;;12478:2:1;9706:64:0;;;12460:21:1;12517:2;12497:18;;;12490:30;12556:34;12536:18;;;12529:62;-1:-1:-1;;;12607:18:1;;;12600:39;12656:19;;9706:64:0;12276:405:1;9706:64:0;-1:-1:-1;;;;;9820:22:0;;9781:17;9820:22;;;:18;:22;;;;;;;;9819:23;:52;;;;-1:-1:-1;;;;;;9847:24:0;;;;;;:18;:24;;;;;;;;9846:25;9819:52;9815:2528;;;9896:14;;-1:-1:-1;;;9896:14:0;;;;9888:23;;;;;;9957:3;5862:15;5805:1;5862:2;:15;:::i;:::-;5848:29;;:11;:29;:::i;:::-;9947:13;;;;:::i;:::-;9930:14;;:30;:60;;;;;9979:11;;9964:12;:26;9930:60;9926:438;;;10068:18;10127:11;;10112:12;:26;;;;:::i;:::-;:30;;10141:1;10112:30;:::i;:::-;10103:5;5862:15;5805:1;5862:2;:15;:::i;:::-;5848:29;;:11;:29;:::i;:::-;10089:11;;10099:1;10089:11;:::i;:::-;:19;;;;:::i;:::-;:54;;;;:::i;:::-;10068:75;-1:-1:-1;10192:3:0;5862:15;5805:1;5862:2;:15;:::i;:::-;5848:29;;:11;:29;:::i;:::-;10182:13;;;;:::i;:::-;10166;:29;10162:187;;;10220:14;:30;;;10162:187;;;10326:3;5862:15;5805:1;5862:2;:15;:::i;:::-;5848:29;;:11;:29;:::i;:::-;10316:13;;;;:::i;:::-;10299:14;:30;10162:187;9992:372;9926:438;10412:13;;-1:-1:-1;;;;;10412:13:0;;;10406:19;;;;10402:1729;;10479:3;10468:7;;10459:6;:16;;;;:::i;:::-;10458:24;;;;:::i;:::-;10550:4;10501:28;8127:18;;;:9;:18;;;;;;10602:6;;10446:36;;-1:-1:-1;8127:18:0;-1:-1:-1;;;10602:6:0;;;;10601:7;:43;;;;-1:-1:-1;10633:11:0;;-1:-1:-1;;;10633:11:0;;;;10601:43;:107;;;;;10693:15;10669;;10687:2;10669:20;;;;:::i;:::-;:39;;10601:107;:174;;;;;10757:18;;10733:20;:42;;10601:174;10575:1421;;;10837:13;;10822:12;:28;10818:98;;;10891:1;10879:9;:13;10818:98;10954:20;;10942:9;;:32;10938:1039;;;11004:10;11016;11047:13;;;;;;;;;-1:-1:-1;;;;;11047:13:0;-1:-1:-1;;;;;11032:41:0;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11124:8:0;;11003:72;;-1:-1:-1;11003:72:0;-1:-1:-1;11102:19:0;;11124:8;;;;;:18;;11140:2;11124:18;;;11135:2;11124:18;11193:8;;11102:40;;-1:-1:-1;11169:21:0;;11193:8;;;;;:18;;11209:2;11193:18;;;11204:2;11193:18;11272:15;;11330:16;;11272:187;;-1:-1:-1;;;11272:187:0;;;;;6773:25:1;;;;-1:-1:-1;;;;;6834:43:1;;;6814:18;;;6807:71;6914:43;;6894:18;;;6887:71;11169:42:0;;-1:-1:-1;11238:31:0;;-1:-1:-1;;;;;11272:15:0;;;;:27;;6746:18:1;;11272:187:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11238:221;;11486:149;11533:75;11537:23;11562:45;11566:20;11588:18;;11562:3;:45::i;11486:149::-;11691:21;11743:22;;11739:122;;11798:35;11811:21;11798:12;:35::i;:::-;11887:9;:11;;;:9;:11;;;:::i;:::-;;;;-1:-1:-1;;11941:12:0;11925:13;:28;-1:-1:-1;;;;;;10938:1039:0;10427:1584;10402:1729;;;12070:14;;12060:6;12044:13;12054:2;-1:-1:-1;;;;;8127:18:0;8100:7;8127:18;;;:9;:18;;;;;;;8034:119;12044:13;:22;;;;:::i;:::-;:40;;12036:79;;;;-1:-1:-1;;;12036:79:0;;13158:2:1;12036:79:0;;;13140:21:1;13197:2;13177:18;;;13170:30;13236:28;13216:18;;;13209:56;13282:18;;12036:79:0;12956:350:1;12036:79:0;12182:13;;-1:-1:-1;;;;;12182:13:0;;;12174:21;;;;12170:162;;12248:3;12238:6;;12229;:15;;;;:::i;:::-;12228:23;;;;:::i;:::-;12279:17;;12216:35;;-1:-1:-1;12279:17:0;;12278:18;;:37;;-1:-1:-1;12300:9:0;-1:-1:-1;;;;;12300:15:0;;;12278:37;12270:46;;;;;;12359:13;;12355:172;;12434:4;12416:24;;;;:9;:24;;;;;;:39;;12445:9;12416:28;:39::i;:::-;12407:4;12389:24;;;;:9;:24;;;;;;;:66;;;;12475:40;;-1:-1:-1;;;;;12475:40:0;;;;;;;12505:9;1865:25:1;;1853:2;1838:18;;1719:177;12475:40:0;;;;;;;;12355:172;-1:-1:-1;;;;;12555:15:0;;;;;;:9;:15;;;;;;:27;;12575:6;12555:19;:27::i;:::-;-1:-1:-1;;;;;12537:15:0;;;;;;:9;:15;;;;;:45;12609:40;12627:21;:6;12638:9;12627:10;:21::i;:::-;-1:-1:-1;;;;;12609:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;12593:13:0;;;;;;;:9;:13;;;;;:56;;;;12665:41;;;12684:21;:6;12695:9;12684:10;:21::i;:::-;12665:41;;1865:25:1;;;1853:2;1838:18;12665:41:0;;;;;;;9541:3173;9438:3276;;;:::o;1390:224::-;1510:7;1546:12;1538:6;;;;1530:29;;;;-1:-1:-1;;;1530:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1570:9:0;1582:5;1586:1;1582;:5;:::i;:::-;1570:17;1390:224;-1:-1:-1;;;;;1390:224:0:o;12982:107::-;13039:7;13071:1;13067;:5;13066:15;;13080:1;13066:15;;;13076:1;13066:15;13059:22;12982:107;-1:-1:-1;;;12982:107:0:o;13097:483::-;6712:6;:13;;-1:-1:-1;;;;6712:13:0;-1:-1:-1;;;6712:13:0;;;13199:16:::1;::::0;;13213:1:::1;13199:16:::0;;;;;::::1;::::0;;-1:-1:-1;;13199:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13199:16:0::1;13175:40;;13244:4;13226;13231:1;13226:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13226:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;13270:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;13270:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;13226:7;;13270:22;;;;;:15;:22:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13260:4;13265:1;13260:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13260:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;13335:15:::1;::::0;13303:62:::1;::::0;13320:4:::1;::::0;13335:15:::1;13353:11:::0;13303:8:::1;:62::i;:::-;13376:15;::::0;:196:::1;::::0;-1:-1:-1;;;13376:196:0;;-1:-1:-1;;;;;13376:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;13457:11;;13376:15:::1;::::0;13499:4;;13526::::1;::::0;13546:15:::1;::::0;13376:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;6748:6:0;:14;;-1:-1:-1;;;;6748:14:0;;;-1:-1:-1;;;;13097:483:0:o;14711:92::-;14768:10;;:27;;-1:-1:-1;;;;;14768:10:0;;;;:27;;;;;14788:6;;14768:10;:27;:10;:27;14788:6;14768:10;:27;;;;;;;;;;;;;;;;;;;;;14711:92;:::o;1059:179::-;1117:7;;1149:5;1153:1;1149;:5;:::i;:::-;1137:17;;1178:1;1173;:6;;1165:46;;;;-1:-1:-1;;;1165:46:0;;14741:2:1;1165:46:0;;;14723:21:1;14780:2;14760:18;;;14753:30;14819:29;14799:18;;;14792:57;14866:18;;1165:46:0;14539:351:1;1246:136:0;1304:7;1331:43;1335:1;1338;1331:43;;;;;;;;;;;;;;;;;:3;:43::i;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;1137:346::-;1205:6;1213;1266:2;1254:9;1245:7;1241:23;1237:32;1234:52;;;1282:1;1279;1272:12;1234:52;-1:-1:-1;;1327:23:1;;;1447:2;1432:18;;;1419:32;;-1:-1:-1;1137:346:1:o;1488:226::-;1547:6;1600:2;1588:9;1579:7;1575:23;1571:32;1568:52;;;1616:1;1613;1606:12;1568:52;-1:-1:-1;1661:23:1;;1488:226;-1:-1:-1;1488:226:1:o;1901:508::-;1978:6;1986;1994;2047:2;2035:9;2026:7;2022:23;2018:32;2015:52;;;2063:1;2060;2053:12;2015:52;2102:9;2089:23;2121:31;2146:5;2121:31;:::i;:::-;2171:5;-1:-1:-1;2228:2:1;2213:18;;2200:32;2241:33;2200:32;2241:33;:::i;:::-;1901:508;;2293:7;;-1:-1:-1;;;2373:2:1;2358:18;;;;2345:32;;1901:508::o;2603:247::-;2662:6;2715:2;2703:9;2694:7;2690:23;2686:32;2683:52;;;2731:1;2728;2721:12;2683:52;2770:9;2757:23;2789:31;2814:5;2789:31;:::i;2855:118::-;2941:5;2934:13;2927:21;2920:5;2917:32;2907:60;;2963:1;2960;2953:12;2978:241;3034:6;3087:2;3075:9;3066:7;3062:23;3058:32;3055:52;;;3103:1;3100;3093:12;3055:52;3142:9;3129:23;3161:28;3183:5;3161:28;:::i;3432:388::-;3500:6;3508;3561:2;3549:9;3540:7;3536:23;3532:32;3529:52;;;3577:1;3574;3567:12;3529:52;3616:9;3603:23;3635:31;3660:5;3635:31;:::i;:::-;3685:5;-1:-1:-1;3742:2:1;3727:18;;3714:32;3755:33;3714:32;3755:33;:::i;:::-;3807:7;3797:17;;;3432:388;;;;;:::o;3825:356::-;4027:2;4009:21;;;4046:18;;;4039:30;4105:34;4100:2;4085:18;;4078:62;4172:2;4157:18;;3825:356::o;4186:127::-;4247:10;4242:3;4238:20;4235:1;4228:31;4278:4;4275:1;4268:15;4302:4;4299:1;4292:15;4318:375;4406:1;4424:5;4438:249;4459:1;4449:8;4446:15;4438:249;;;4509:4;4504:3;4500:14;4494:4;4491:24;4488:50;;;4518:18;;:::i;:::-;4568:1;4558:8;4554:16;4551:49;;;4582:16;;;;4551:49;4665:1;4661:16;;;;;4621:15;;4438:249;;;4318:375;;;;;;:::o;4698:902::-;4747:5;4777:8;4767:80;;-1:-1:-1;4818:1:1;4832:5;;4767:80;4866:4;4856:76;;-1:-1:-1;4903:1:1;4917:5;;4856:76;4948:4;4966:1;4961:59;;;;5034:1;5029:174;;;;4941:262;;4961:59;4991:1;4982:10;;5005:5;;;5029:174;5066:3;5056:8;5053:17;5050:43;;;5073:18;;:::i;:::-;-1:-1:-1;;5129:1:1;5115:16;;5188:5;;4941:262;;5287:2;5277:8;5274:16;5268:3;5262:4;5259:13;5255:36;5249:2;5239:8;5236:16;5231:2;5225:4;5222:12;5218:35;5215:77;5212:203;;;-1:-1:-1;5324:19:1;;;5400:5;;5212:203;5447:42;-1:-1:-1;;5472:8:1;5466:4;5447:42;:::i;:::-;5525:6;5521:1;5517:6;5513:19;5504:7;5501:32;5498:58;;;5536:18;;:::i;:::-;5574:20;;4698:902;-1:-1:-1;;;4698:902:1:o;5605:140::-;5663:5;5692:47;5733:4;5723:8;5719:19;5713:4;5692:47;:::i;5750:168::-;5823:9;;;5854;;5871:15;;;5865:22;;5851:37;5841:71;;5892:18;;:::i;5923:188::-;6002:13;;-1:-1:-1;;;;;6044:42:1;;6034:53;;6024:81;;6101:1;6098;6091:12;6024:81;5923:188;;;:::o;6116:450::-;6203:6;6211;6219;6272:2;6260:9;6251:7;6247:23;6243:32;6240:52;;;6288:1;6285;6278:12;6240:52;6311:40;6341:9;6311:40;:::i;:::-;6301:50;;6370:49;6415:2;6404:9;6400:18;6370:49;:::i;:::-;6360:59;;6462:2;6451:9;6447:18;6441:25;6506:10;6499:5;6495:22;6488:5;6485:33;6475:61;;6532:1;6529;6522:12;6475:61;6555:5;6545:15;;;6116:450;;;;;:::o;6969:230::-;7039:6;7092:2;7080:9;7071:7;7067:23;7063:32;7060:52;;;7108:1;7105;7098:12;7060:52;-1:-1:-1;7153:16:1;;6969:230;-1:-1:-1;6969:230:1:o;7204:217::-;7244:1;7270;7260:132;;7314:10;7309:3;7305:20;7302:1;7295:31;7349:4;7346:1;7339:15;7377:4;7374:1;7367:15;7260:132;-1:-1:-1;7406:9:1;;7204:217::o;8125:251::-;8195:6;8248:2;8236:9;8227:7;8223:23;8219:32;8216:52;;;8264:1;8261;8254:12;8216:52;8296:9;8290:16;8315:31;8340:5;8315:31;:::i;8381:371::-;-1:-1:-1;;;;;8601:32:1;;;8583:51;;8670:32;;;;8665:2;8650:18;;8643:60;8734:2;8719:18;;8712:34;;;;8571:2;8556:18;;8381:371::o;8757:245::-;8824:6;8877:2;8865:9;8856:7;8852:23;8848:32;8845:52;;;8893:1;8890;8883:12;8845:52;8925:9;8919:16;8944:28;8966:5;8944:28;:::i;9007:128::-;9074:9;;;9095:11;;;9092:37;;;9109:18;;:::i;10197:456::-;10285:6;10293;10301;10354:2;10342:9;10333:7;10329:23;10325:32;10322:52;;;10370:1;10367;10360:12;10322:52;-1:-1:-1;;10415:16:1;;10521:2;10506:18;;10500:25;10617:2;10602:18;;;10596:25;10415:16;;10500:25;;-1:-1:-1;10596:25:1;10197:456;-1:-1:-1;10197:456:1:o;12686:125::-;12751:9;;;12772:10;;;12769:36;;;12785:18;;:::i;12816:135::-;12855:3;12876:17;;;12873:43;;12896:18;;:::i;:::-;-1:-1:-1;12943:1:1;12932:13;;12816:135::o;13443:127::-;13504:10;13499:3;13495:20;13492:1;13485:31;13535:4;13532:1;13525:15;13559:4;13556:1;13549:15;13575:959;13837:4;13885:3;13874:9;13870:19;13916:6;13905:9;13898:25;13959:6;13954:2;13943:9;13939:18;13932:34;14002:3;13997:2;13986:9;13982:18;13975:31;14026:6;14061;14055:13;14092:6;14084;14077:22;14130:3;14119:9;14115:19;14108:26;;14169:2;14161:6;14157:15;14143:29;;14190:1;14200:195;14214:6;14211:1;14208:13;14200:195;;;14279:13;;-1:-1:-1;;;;;14275:39:1;14263:52;;14344:2;14370:15;;;;14335:12;;;;14311:1;14229:9;14200:195;;;-1:-1:-1;;;;;;;14451:32:1;;;;14446:2;14431:18;;14424:60;-1:-1:-1;;14515:3:1;14500:19;14493:35;14412:3;13575:959;-1:-1:-1;;;13575:959:1:o

Swarm Source

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