ETH Price: $3,173.27 (-3.93%)
Gas: 10 Gwei

Token

Magiverse (MAGI)
 

Overview

Max Total Supply

1,000,000,000 MAGI

Holders

196

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
990,765.513210972 MAGI

Value
$0.00
0xba5ed69ad282ec55a2f50bdeed948792dc43d31f
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:
MAGIVERSE

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/**   
-------------------------------------------------------------------------------- 
                             *                  (              (    (        
      { --.\  |            (  `    (     (      )\ )           )\ ) )\ )     
       '-._\\ | (\___     )\))(   )\    )\ )  (()/((   (  (  (()/((()/((    
           `\\|{/ ^ _)--((_)()((((_)( (()/(   /(_))\  )\ )\  /(_))/(_))\   
       .'^^^^^^^  /`    (_()((_)\ _ )\ /(_))_(_))((_)((_|(_)(_)) (_))((_)  
      //\   ) ,  /      |  \/  (_)_\(_|_)) __|_ _\ \ / /| __| _ \/ __| __| 
,  _.'/  `\<-- \<       | |\/| |/ _ \   | (_ || | \ V / | _||   /\__ \ _|  
 `^^^`     ^^   ^^      |_|  |_/_/ \_\   \___|___| \_/  |___|_|_\|___/___| 
--------------------------------------------------------------------------------

Step into the enchanted realm of Magiverse, a Play to Earn MMORPG where magic and adventure await at every turn.

Website: https://magiverse.online/
Whitepaper: https://info.magiverse.online/welcome
X: https://x.com/Magiverse_ERC
TG: https://t.me/magiverse 

                                                                       
*/

// SPDX-License-Identifier: UNLICENSE

pragma solidity 0.8.23;

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 IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

    uint256 private _initialBuyTax = 25;
    uint256 private _initialSellTax = 35;
    uint256 private _finalBuyTax = 5;
    uint256 private _finalSellTax = 5;
    uint256 private _reduceBuyTaxAt = 20;
    uint256 private _reduceSellTaxAt = 25;
    uint256 private _preventSwapBefore = 20;
    uint256 private _buyCount = 0;
    uint256 private _txCount = 0;

    uint256 private _marketingFee = 2;
    uint256 private _devFee = 1;
    uint256 private _LpFee = 1;
    uint256 private _stakingFee = 1;
    uint256 private _totalFee =
        _marketingFee.add(_devFee).add(_LpFee).add(_stakingFee);

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1_000_000_000 * 10 ** _decimals;
    string private constant _name = "Magiverse";
    string private constant _symbol = "MAGI";

    uint256 public _maxTxAmount = 2 * (_tTotal / 100);
    uint256 public _maxWalletSize = 2 * (_tTotal / 100);
    uint256 public _taxSwapThreshold = 5 * (_tTotal / 1000);

    uint256 private _minimumTaxSwapThreshold = 15 * (_tTotal / 10000);
    uint256 private _thresholdReduction = 5 * (_tTotal / 10000);
    uint256 private _reduceThresholdAfter = 100;

    uint256 public _stakingFeeTokens = 0;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool public _stakingFeeActive = false;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _taxWallet = payable(0x6E9B8A05aA14E445fd0f3EE5566B2C387F9be469);
        _devWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    receive() external payable {}

    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;
        uint256 stakingAmount = 0;
        if (from != owner() && to != owner()) {
            if (
                from == uniswapV2Pair &&
                to != address(uniswapV2Router) &&
                !_isExcludedFromFee[to]
            ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(
                    balanceOf(to) + amount <= _maxWalletSize,
                    "Exceeds the maxWalletSize."
                );
                taxAmount = amount
                    .mul(
                        (_buyCount > _reduceBuyTaxAt)
                            ? _finalBuyTax
                            : _initialBuyTax
                    )
                    .div(100);
                _buyCount++;
                _txCount++;
            }

            if (to == uniswapV2Pair && from != address(this)) {
                taxAmount = amount
                    .mul(
                        (_buyCount > _reduceSellTaxAt)
                            ? _finalSellTax
                            : _initialSellTax
                    )
                    .div(100);
                _txCount++;
            }

            uint256 contractTokenBalance = balanceOf(address(this)).sub(
                _stakingFeeTokens
            );
            if (
                !inSwap &&
                to == uniswapV2Pair &&
                swapEnabled &&
                contractTokenBalance > _taxSwapThreshold &&
                _buyCount > _preventSwapBefore
            ) {
                swapAndLiquify(
                    min(amount, min(contractTokenBalance, _maxTxAmount))
                );
            }
        }

        if (_stakingFeeActive) {
            stakingAmount = amount.mul(_stakingFee).div(100);
            _stakingFeeTokens = _stakingFeeTokens + stakingAmount;
            _balances[address(this)] = _balances[address(this)].add(
                stakingAmount
            );
            emit Transfer(from, address(this), stakingAmount);
            if (taxAmount > 0) {
                taxAmount = taxAmount - stakingAmount;
            }
        }

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

        if (
            _txCount > _reduceThresholdAfter &&
            _taxSwapThreshold > _minimumTaxSwapThreshold
        ) {
            _taxSwapThreshold = _taxSwapThreshold - _thresholdReduction;
            _txCount = 0;
        }
    }

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

    function swapAndLiquify(uint256 tokenBalance) private lockTheSwap {
        uint256 actualMarketingFee = _marketingFee;
        if (!_stakingFeeActive) {
            actualMarketingFee = _marketingFee.add(_stakingFee);
        }
        uint256 tokens_to_M = (tokenBalance * actualMarketingFee) / _totalFee;
        uint256 tokens_to_D = (tokenBalance * _devFee) / _totalFee;
        uint256 tokens_to_LP = (tokenBalance * _LpFee) / _totalFee;

        uint256 totalTokensToSwap = tokens_to_M + tokens_to_D + tokens_to_LP;

        uint256 liquidityTokens = (tokenBalance * tokens_to_LP) /
            totalTokensToSwap /
            2;

        uint256 balanceBeforeSwap = address(this).balance;

        swapTokensForEth(tokenBalance - liquidityTokens);

        uint256 ETH_Total = address(this).balance - balanceBeforeSwap;
        uint256 ETH_M = (ETH_Total * actualMarketingFee) / _totalFee;
        uint256 ETH_D = (ETH_Total * _devFee) / _totalFee;
        uint256 ETH_L = ETH_Total - ETH_M - ETH_D;

        if (liquidityTokens > 0 && ETH_L > 0) {
            addLiquidity(liquidityTokens, ETH_L);
        }

        sendToWallet(_taxWallet, ETH_M);

        ETH_Total = address(this).balance;
        sendToWallet(_devWallet, ETH_Total);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            _devWallet,
            block.timestamp
        );
    }

    function sendToWallet(address payable wallet, uint256 amount) private {
        wallet.transfer(amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        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
        );
    }

    /**
     * @dev Removes limits on transaction amounts and wallet sizes.
     * Can only be called by the contract owner.
     */
    function removeLimits() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    /**
     * @dev Opens trading by setting up the Uniswap pair and adding initial liquidity.
     * Can only be called by the contract owner.
     */
    function openTrading() external onlyOwner {
        require(!tradingOpen, "trading is already open");
        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
                address(this),
                uniswapV2Router.WETH()
            );
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }

    /**
     * @dev Reduces the transaction fees for buying and selling.
     * Can only be called by the tax wallet, doesn't allow to rise fees.
     * @param _newFee The new fee percentage to be set for both buying and selling.
     */
    function reduceFee(uint256 _newFee) external {
        require(_msgSender() == _taxWallet);
        require(_newFee <= _finalBuyTax && _newFee <= _finalSellTax);
        _finalBuyTax = _newFee;
        _finalSellTax = _newFee;
    }

    /**
     * @dev Transfers tokens held by the contract to the tax wallet.
     * Can only be called by the tax wallet.
     */
    function unclogContract() external {
        require(_msgSender() == _taxWallet);
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0) {
            _transfer(address(this), _taxWallet, tokenBalance);
            _stakingFeeTokens = 0;
        }
    }

    /**
     * @dev Transfers ETH held by the contract to the tax wallet.
     * Can only be called by the tax wallet.
     */
    function clearStuckBalance() external {
        require(_msgSender() == _taxWallet);
        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            _taxWallet.transfer(ethBalance);
        }
    }

    /**
     * @dev Swaps tokens held by the contract for ETH and transfers it to the tax wallet.
     * Can only be called by the tax wallet.
     */
    function manualSwap() external {
        require(_msgSender() == _taxWallet);
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0) {
            swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            sendToWallet(_taxWallet, ethBalance);
        }
        _stakingFeeTokens = 0;
    }

    /**
     * @dev Sets the address of the staking contract.
     * Can only be called by the tax wallet.
     * @param stakingContract The address of the staking contract.
     */
    function setStakingAddress(address stakingContract) external {
        require(_msgSender() == _taxWallet);
        require(stakingContract != address(0));
        _stakingContract = stakingContract;
    }

    /**
     * @dev Toggles the staking fee on or off.
     * Can only be called by the staking contract.
     */
    function toggleStakingFee() external {
        require(_msgSender() == _stakingContract);
        _stakingFeeActive = !_stakingFeeActive;
    }

    /**
     * @dev Sends a percentage of the staking fee tokens to the staking contract.
     * Can only be called by the tax wallet.
     * @param percentage The percentage of staking fee tokens to send.
     */
    function sendTokensToStakingContract(uint256 percentage) external {
        require(_msgSender() == _taxWallet);
        require(percentage > 0 && percentage <= 100);
        if (_stakingFeeTokens > 0) {
            uint256 tokensToSend = _stakingFeeTokens.mul(percentage).div(100);
            _balances[address(this)] = _balances[address(this)].sub(
                tokensToSend
            );
            _balances[_stakingContract] = _balances[_stakingContract].add(
                tokensToSend
            );
            _stakingFeeTokens = _stakingFeeTokens.sub(tokensToSend);
            emit Transfer(address(this), _stakingContract, tokensToSend);
        }
    }

    /**
     * @dev Sends a percentage of the staking fee tokens to a specified P2E wallet.
     * Can only be called by the tax wallet.
     * @param percentage The percentage of staking fee tokens to send.
     * @param p2eWallet The address of the P2E wallet.
     */
    function sendTokensToP2E(uint256 percentage, address p2eWallet) external {
        require(_msgSender() == _taxWallet);
        require(percentage > 0 && percentage <= 100);
        if (_stakingFeeTokens > 0) {
            uint256 tokensToSend = _stakingFeeTokens.mul(percentage).div(100);
            _balances[address(this)] = _balances[address(this)].sub(
                tokensToSend
            );
            _balances[p2eWallet] = _balances[p2eWallet].add(tokensToSend);
            _stakingFeeTokens = _stakingFeeTokens.sub(tokensToSend);
            emit Transfer(address(this), p2eWallet, tokensToSend);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stakingContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stakingFeeActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stakingFeeTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"},{"internalType":"address","name":"p2eWallet","type":"address"}],"name":"sendTokensToP2E","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"sendTokensToStakingContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"stakingContract","type":"address"}],"name":"setStakingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"toggleStakingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unclogContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526019600755602360085560056009556005600a556014600b556019600c556014600d555f600e555f600f556002601055600160115560016012556001601355620000716013546200006a6012546200006a6011546010546200035b60201b90919060201c565b906200035b565b6014556064620000846009600a620004d6565b6200009490633b9aca00620004ed565b620000a0919062000507565b620000ad906002620004ed565b6015556064620000c06009600a620004d6565b620000d090633b9aca00620004ed565b620000dc919062000507565b620000e9906002620004ed565b6016556103e8620000fd6009600a620004d6565b6200010d90633b9aca00620004ed565b62000119919062000507565b62000126906005620004ed565b6017556127106200013a6009600a620004d6565b6200014a90633b9aca00620004ed565b62000156919062000507565b6200016390600f620004ed565b601855612710620001776009600a620004d6565b6200018790633b9aca00620004ed565b62000193919062000507565b620001a0906005620004ed565b6019556064601a555f601b55601d805462ffffff60a81b19169055348015620001c7575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600480546001600160a01b031916736e9b8a05aa14e445fd0f3ee5566b2c387f9be469179055620002363390565b600580546001600160a01b0319166001600160a01b0392909216919091179055620002646009600a620004d6565b6200027490633b9aca00620004ed565b335f9081526001602081905260408220929092556003906200029d5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526003909352818320805485166001908117909155600454909116835291208054909216179055620002fb3390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003346009600a620004d6565b6200034490633b9aca00620004ed565b60405190815260200160405180910390a36200053d565b5f8062000369838562000527565b905083811015620003c05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200041d57815f1904821115620004015762000401620003c9565b808516156200040f57918102915b93841c9390800290620003e2565b509250929050565b5f826200043557506001620003c3565b816200044357505f620003c3565b81600181146200045c5760028114620004675762000487565b6001915050620003c3565b60ff8411156200047b576200047b620003c9565b50506001821b620003c3565b5060208310610133831016604e8410600b8410161715620004ac575081810a620003c3565b620004b88383620003dd565b805f1904821115620004ce57620004ce620003c9565b029392505050565b5f620004e660ff84168362000425565b9392505050565b8082028115828204841417620003c357620003c3620003c9565b5f826200052257634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620003c357620003c3620003c9565b611f90806200054b5f395ff3fe608060405260043610610198575f3560e01c80637d1db4a5116100e7578063bf474bed11610087578063dd62ed3e11610062578063dd62ed3e14610460578063ec1f3f63146104a4578063f4e0d9ac146104c3578063f9113fba146104e2575f80fd5b8063bf474bed14610422578063c9567bf914610437578063d59e81961461044b575f80fd5b80638f9a55c0116100c25780638f9a55c0146103a357806395d89b41146103b8578063a9059cbb146103e4578063b0de5e2914610403575f80fd5b80637d1db4a51461034a57806385707b001461035f5780638da5cb5b14610373575f80fd5b8063313ce56711610152578063669834911161012d57806366983491146102ce57806370a08231146102ee578063715018a614610322578063751039fc14610336575f80fd5b8063313ce5671461028b578063364333f4146102a657806351bc3c85146102ba575f80fd5b806306fdde03146101a3578063095ea7b3146101e657806318160ddd1461021557806323b872dd1461023757806328f4d2a0146102565780632ee6274c1461026c575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b506040805180820190915260098152684d616769766572736560b81b60208201525b6040516101dd9190611aee565b60405180910390f35b3480156101f1575f80fd5b50610205610200366004611b4e565b610501565b60405190151581526020016101dd565b348015610220575f80fd5b50610229610517565b6040519081526020016101dd565b348015610242575f80fd5b50610205610251366004611b78565b610537565b348015610261575f80fd5b5061026a61059e565b005b348015610277575f80fd5b5061026a610286366004611bb6565b6105f2565b348015610296575f80fd5b50604051600981526020016101dd565b3480156102b1575f80fd5b5061026a6106f5565b3480156102c5575f80fd5b5061026a610752565b3480156102d9575f80fd5b50601d5461020590600160b81b900460ff1681565b3480156102f9575f80fd5b50610229610308366004611be4565b6001600160a01b03165f9081526001602052604090205490565b34801561032d575f80fd5b5061026a6107b4565b348015610341575f80fd5b5061026a61082e565b348015610355575f80fd5b5061022960155481565b34801561036a575f80fd5b5061026a6108df565b34801561037e575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016101dd565b3480156103ae575f80fd5b5061022960165481565b3480156103c3575f80fd5b506040805180820190915260048152634d41474960e01b60208201526101d0565b3480156103ef575f80fd5b506102056103fe366004611b4e565b61091f565b34801561040e575f80fd5b5060065461038b906001600160a01b031681565b34801561042d575f80fd5b5061022960175481565b348015610442575f80fd5b5061026a61092b565b348015610456575f80fd5b50610229601b5481565b34801561046b575f80fd5b5061022961047a366004611bff565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156104af575f80fd5b5061026a6104be366004611c2b565b610cac565b3480156104ce575f80fd5b5061026a6104dd366004611be4565b610cf1565b3480156104ed575f80fd5b5061026a6104fc366004611c2b565b610d44565b5f61050d338484610e46565b5060015b92915050565b5f6105246009600a611d36565b61053290633b9aca00611d44565b905090565b5f610543848484610f61565b610594843361058f85604051806060016040528060288152602001611f13602891396001600160a01b038a165f908152600260209081526040808320338452909152902054919061154d565b610e46565b5060019392505050565b6004546001600160a01b0316336001600160a01b0316146105bd575f80fd5b305f9081526001602052604090205480156105ef576004546105ea9030906001600160a01b031683610f61565b5f601b555b50565b6004546001600160a01b0316336001600160a01b031614610611575f80fd5b5f82118015610621575060648211155b610629575f80fd5b601b54156106f1575f610652606461064c85601b5461158590919063ffffffff16565b9061160a565b305f9081526001602052604090205490915061066e908261164b565b305f90815260016020526040808220929092556001600160a01b03841681522054610699908261168c565b6001600160a01b0383165f90815260016020526040902055601b546106be908261164b565b601b556040518181526001600160a01b0383169030905f80516020611f3b833981519152906020015b60405180910390a3505b5050565b6004546001600160a01b0316336001600160a01b031614610714575f80fd5b4780156105ef576004546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156106f1573d5f803e3d5ffd5b6004546001600160a01b0316336001600160a01b031614610771575f80fd5b305f90815260016020526040902054801561078f5761078f816116ea565b4780156107ac576004546107ac906001600160a01b031682611832565b50505f601b55565b5f546001600160a01b031633146107e65760405162461bcd60e51b81526004016107dd90611d5b565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108575760405162461bcd60e51b81526004016107dd90611d5b565b6108636009600a611d36565b61087190633b9aca00611d44565b6015556108806009600a611d36565b61088e90633b9aca00611d44565b6016557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6108be6009600a611d36565b6108cc90633b9aca00611d44565b60405190815260200160405180910390a1565b6006546001600160a01b0316336001600160a01b0316146108fe575f80fd5b601d805460ff60b81b198116600160b81b9182900460ff1615909102179055565b5f61050d338484610f61565b5f546001600160a01b031633146109545760405162461bcd60e51b81526004016107dd90611d5b565b601d54600160a01b900460ff16156109ae5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016107dd565b601c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556109f79030906109e96009600a611d36565b61058f90633b9aca00611d44565b601c5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6b9190611d90565b6001600160a01b031663c9c6539630601c5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aee9190611d90565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610b38573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5c9190611d90565b601d80546001600160a01b039283166001600160a01b0319909116179055601c541663f305d7194730610ba3816001600160a01b03165f9081526001602052604090205490565b5f80610bb65f546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610bd896959493929190611dab565b60606040518083038185885af1158015610bf4573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c199190611de6565b5050601d54601c5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610c6e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c929190611e11565b50601d805462ff00ff60a01b19166201000160a01b179055565b6004546001600160a01b0316336001600160a01b031614610ccb575f80fd5b6009548111158015610cdf5750600a548111155b610ce7575f80fd5b6009819055600a55565b6004546001600160a01b0316336001600160a01b031614610d10575f80fd5b6001600160a01b038116610d22575f80fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b0316336001600160a01b031614610d63575f80fd5b5f81118015610d73575060648111155b610d7b575f80fd5b601b54156105ef575f610d9e606461064c84601b5461158590919063ffffffff16565b305f90815260016020526040902054909150610dba908261164b565b305f90815260016020526040808220929092556006546001600160a01b031681522054610de7908261168c565b6006546001600160a01b03165f90815260016020526040902055601b54610e0e908261164b565b601b556006546040518281526001600160a01b039091169030905f80516020611f3b8339815191529060200160405180910390a35050565b6001600160a01b038316610ea85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107dd565b6001600160a01b038216610f095760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107dd565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591016106e7565b6001600160a01b038316610fc55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107dd565b6001600160a01b0382166110275760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107dd565b5f81116110885760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107dd565b5f8061109b5f546001600160a01b031690565b6001600160a01b0316856001600160a01b0316141580156110c957505f546001600160a01b03858116911614155b1561134357601d546001600160a01b0386811691161480156110f95750601c546001600160a01b03858116911614155b801561111d57506001600160a01b0384165f9081526003602052604090205460ff16155b1561123f576015548311156111745760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016107dd565b60165483611196866001600160a01b03165f9081526001602052604090205490565b6111a09190611e30565b11156111ee5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016107dd565b611214606461064c600b54600e54116112095760075461120d565b6009545b8690611585565b600e80549193505f61122583611e43565b9091555050600f8054905f61123983611e43565b91905055505b601d546001600160a01b03858116911614801561126557506001600160a01b0385163014155b156112a65761128f606461064c600c54600e54116112855760085461120d565b600a548690611585565b600f80549193505f6112a083611e43565b91905055505b601b54305f9081526001602052604081205490916112c4919061164b565b601d54909150600160a81b900460ff161580156112ee5750601d546001600160a01b038681169116145b80156113035750601d54600160b01b900460ff165b8015611310575060175481115b801561131f5750600d54600e54115b156113415761134161133c856113378460155461186a565b61186a565b61187e565b505b601d54600160b81b900460ff16156113f35761136f606461064c6013548661158590919063ffffffff16565b905080601b5461137f9190611e30565b601b55305f9081526001602052604090205461139b908261168c565b305f81815260016020526040908190209290925590516001600160a01b038716905f80516020611f3b833981519152906113d89085815260200190565b60405180910390a381156113f3576113f08183611e5b565b91505b811561145857305f90815260016020526040902054611412908361168c565b305f81815260016020526040908190209290925590516001600160a01b038716905f80516020611f3b8339815191529061144f9086815260200190565b60405180910390a35b5f611463838361168c565b6001600160a01b0387165f90815260016020526040902054909150611488908561164b565b6001600160a01b0387165f908152600160205260409020556114cb6114ad858361164b565b6001600160a01b0387165f908152600160205260409020549061168c565b6001600160a01b038087165f8181526001602052604090209290925587165f80516020611f3b833981519152611501878561164b565b60405190815260200160405180910390a3601a54600f541180156115285750601854601754115b156115455760195460175461153d9190611e5b565b6017555f600f555b505050505050565b5f81848411156115705760405162461bcd60e51b81526004016107dd9190611aee565b505f61157c8486611e5b565b95945050505050565b5f825f0361159457505f610511565b5f61159f8385611d44565b9050826115ac8583611e6e565b146116035760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107dd565b9392505050565b5f61160383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a23565b5f61160383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061154d565b5f806116988385611e30565b9050838110156116035760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107dd565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061171d5761171d611e8d565b6001600160a01b03928316602091820292909201810191909152601c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611774573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117989190611d90565b816001815181106117ab576117ab611e8d565b6001600160a01b039283166020918202929092010152601c546117d19130911684610e46565b601c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906118099085905f90869030904290600401611ea1565b5f604051808303815f87803b158015611820575f80fd5b505af1158015611545573d5f803e3d5ffd5b6040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015611865573d5f803e3d5ffd5b505050565b5f8183116118785782611603565b50919050565b601d805460ff60a81b1916600160a81b179081905560105490600160b81b900460ff166118b7576013546010546118b49161168c565b90505b6014545f906118c68385611d44565b6118d09190611e6e565b90505f601454601154856118e49190611d44565b6118ee9190611e6e565b90505f601454601254866119029190611d44565b61190c9190611e6e565b90505f8161191a8486611e30565b6119249190611e30565b90505f600282611934858a611d44565b61193e9190611e6e565b6119489190611e6e565b90504761195d611958838a611e5b565b6116ea565b5f6119688247611e5b565b90505f601454898361197a9190611d44565b6119849190611e6e565b90505f601454601154846119989190611d44565b6119a29190611e6e565b90505f816119b08486611e5b565b6119ba9190611e5b565b90505f861180156119ca57505f81115b156119d9576119d98682611a4f565b6004546119ef906001600160a01b031684611832565b600554479450611a08906001600160a01b031685611832565b5050601d805460ff60a81b1916905550505050505050505050565b5f8183611a435760405162461bcd60e51b81526004016107dd9190611aee565b505f61157c8486611e6e565b601c54611a679030906001600160a01b031684610e46565b601c5460055460405163f305d71960e01b81526001600160a01b039283169263f305d719928592611aa692309289925f92839216904290600401611dab565b60606040518083038185885af1158015611ac2573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611ae79190611de6565b5050505050565b5f602080835283518060208501525f5b81811015611b1a57858101830151858201604001528201611afe565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146105ef575f80fd5b5f8060408385031215611b5f575f80fd5b8235611b6a81611b3a565b946020939093013593505050565b5f805f60608486031215611b8a575f80fd5b8335611b9581611b3a565b92506020840135611ba581611b3a565b929592945050506040919091013590565b5f8060408385031215611bc7575f80fd5b823591506020830135611bd981611b3a565b809150509250929050565b5f60208284031215611bf4575f80fd5b813561160381611b3a565b5f8060408385031215611c10575f80fd5b8235611c1b81611b3a565b91506020830135611bd981611b3a565b5f60208284031215611c3b575f80fd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611c9057815f1904821115611c7657611c76611c42565b80851615611c8357918102915b93841c9390800290611c5b565b509250929050565b5f82611ca657506001610511565b81611cb257505f610511565b8160018114611cc85760028114611cd257611cee565b6001915050610511565b60ff841115611ce357611ce3611c42565b50506001821b610511565b5060208310610133831016604e8410600b8410161715611d11575081810a610511565b611d1b8383611c56565b805f1904821115611d2e57611d2e611c42565b029392505050565b5f61160360ff841683611c98565b808202811582820484141761051157610511611c42565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611da0575f80fd5b815161160381611b3a565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f60608486031215611df8575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611e21575f80fd5b81518015158114611603575f80fd5b8082018082111561051157610511611c42565b5f60018201611e5457611e54611c42565b5060010190565b8181038181111561051157610511611c42565b5f82611e8857634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611ef15784516001600160a01b031683529383019391830191600101611ecc565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220af3aef6a4d3d99f346b2d37be69569dd3b46af7bbd8ff85f37797d696214973f64736f6c63430008170033

Deployed Bytecode

0x608060405260043610610198575f3560e01c80637d1db4a5116100e7578063bf474bed11610087578063dd62ed3e11610062578063dd62ed3e14610460578063ec1f3f63146104a4578063f4e0d9ac146104c3578063f9113fba146104e2575f80fd5b8063bf474bed14610422578063c9567bf914610437578063d59e81961461044b575f80fd5b80638f9a55c0116100c25780638f9a55c0146103a357806395d89b41146103b8578063a9059cbb146103e4578063b0de5e2914610403575f80fd5b80637d1db4a51461034a57806385707b001461035f5780638da5cb5b14610373575f80fd5b8063313ce56711610152578063669834911161012d57806366983491146102ce57806370a08231146102ee578063715018a614610322578063751039fc14610336575f80fd5b8063313ce5671461028b578063364333f4146102a657806351bc3c85146102ba575f80fd5b806306fdde03146101a3578063095ea7b3146101e657806318160ddd1461021557806323b872dd1461023757806328f4d2a0146102565780632ee6274c1461026c575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b506040805180820190915260098152684d616769766572736560b81b60208201525b6040516101dd9190611aee565b60405180910390f35b3480156101f1575f80fd5b50610205610200366004611b4e565b610501565b60405190151581526020016101dd565b348015610220575f80fd5b50610229610517565b6040519081526020016101dd565b348015610242575f80fd5b50610205610251366004611b78565b610537565b348015610261575f80fd5b5061026a61059e565b005b348015610277575f80fd5b5061026a610286366004611bb6565b6105f2565b348015610296575f80fd5b50604051600981526020016101dd565b3480156102b1575f80fd5b5061026a6106f5565b3480156102c5575f80fd5b5061026a610752565b3480156102d9575f80fd5b50601d5461020590600160b81b900460ff1681565b3480156102f9575f80fd5b50610229610308366004611be4565b6001600160a01b03165f9081526001602052604090205490565b34801561032d575f80fd5b5061026a6107b4565b348015610341575f80fd5b5061026a61082e565b348015610355575f80fd5b5061022960155481565b34801561036a575f80fd5b5061026a6108df565b34801561037e575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016101dd565b3480156103ae575f80fd5b5061022960165481565b3480156103c3575f80fd5b506040805180820190915260048152634d41474960e01b60208201526101d0565b3480156103ef575f80fd5b506102056103fe366004611b4e565b61091f565b34801561040e575f80fd5b5060065461038b906001600160a01b031681565b34801561042d575f80fd5b5061022960175481565b348015610442575f80fd5b5061026a61092b565b348015610456575f80fd5b50610229601b5481565b34801561046b575f80fd5b5061022961047a366004611bff565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156104af575f80fd5b5061026a6104be366004611c2b565b610cac565b3480156104ce575f80fd5b5061026a6104dd366004611be4565b610cf1565b3480156104ed575f80fd5b5061026a6104fc366004611c2b565b610d44565b5f61050d338484610e46565b5060015b92915050565b5f6105246009600a611d36565b61053290633b9aca00611d44565b905090565b5f610543848484610f61565b610594843361058f85604051806060016040528060288152602001611f13602891396001600160a01b038a165f908152600260209081526040808320338452909152902054919061154d565b610e46565b5060019392505050565b6004546001600160a01b0316336001600160a01b0316146105bd575f80fd5b305f9081526001602052604090205480156105ef576004546105ea9030906001600160a01b031683610f61565b5f601b555b50565b6004546001600160a01b0316336001600160a01b031614610611575f80fd5b5f82118015610621575060648211155b610629575f80fd5b601b54156106f1575f610652606461064c85601b5461158590919063ffffffff16565b9061160a565b305f9081526001602052604090205490915061066e908261164b565b305f90815260016020526040808220929092556001600160a01b03841681522054610699908261168c565b6001600160a01b0383165f90815260016020526040902055601b546106be908261164b565b601b556040518181526001600160a01b0383169030905f80516020611f3b833981519152906020015b60405180910390a3505b5050565b6004546001600160a01b0316336001600160a01b031614610714575f80fd5b4780156105ef576004546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156106f1573d5f803e3d5ffd5b6004546001600160a01b0316336001600160a01b031614610771575f80fd5b305f90815260016020526040902054801561078f5761078f816116ea565b4780156107ac576004546107ac906001600160a01b031682611832565b50505f601b55565b5f546001600160a01b031633146107e65760405162461bcd60e51b81526004016107dd90611d5b565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108575760405162461bcd60e51b81526004016107dd90611d5b565b6108636009600a611d36565b61087190633b9aca00611d44565b6015556108806009600a611d36565b61088e90633b9aca00611d44565b6016557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6108be6009600a611d36565b6108cc90633b9aca00611d44565b60405190815260200160405180910390a1565b6006546001600160a01b0316336001600160a01b0316146108fe575f80fd5b601d805460ff60b81b198116600160b81b9182900460ff1615909102179055565b5f61050d338484610f61565b5f546001600160a01b031633146109545760405162461bcd60e51b81526004016107dd90611d5b565b601d54600160a01b900460ff16156109ae5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016107dd565b601c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556109f79030906109e96009600a611d36565b61058f90633b9aca00611d44565b601c5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6b9190611d90565b6001600160a01b031663c9c6539630601c5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aee9190611d90565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610b38573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5c9190611d90565b601d80546001600160a01b039283166001600160a01b0319909116179055601c541663f305d7194730610ba3816001600160a01b03165f9081526001602052604090205490565b5f80610bb65f546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610bd896959493929190611dab565b60606040518083038185885af1158015610bf4573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c199190611de6565b5050601d54601c5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610c6e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c929190611e11565b50601d805462ff00ff60a01b19166201000160a01b179055565b6004546001600160a01b0316336001600160a01b031614610ccb575f80fd5b6009548111158015610cdf5750600a548111155b610ce7575f80fd5b6009819055600a55565b6004546001600160a01b0316336001600160a01b031614610d10575f80fd5b6001600160a01b038116610d22575f80fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b0316336001600160a01b031614610d63575f80fd5b5f81118015610d73575060648111155b610d7b575f80fd5b601b54156105ef575f610d9e606461064c84601b5461158590919063ffffffff16565b305f90815260016020526040902054909150610dba908261164b565b305f90815260016020526040808220929092556006546001600160a01b031681522054610de7908261168c565b6006546001600160a01b03165f90815260016020526040902055601b54610e0e908261164b565b601b556006546040518281526001600160a01b039091169030905f80516020611f3b8339815191529060200160405180910390a35050565b6001600160a01b038316610ea85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107dd565b6001600160a01b038216610f095760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107dd565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591016106e7565b6001600160a01b038316610fc55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107dd565b6001600160a01b0382166110275760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107dd565b5f81116110885760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107dd565b5f8061109b5f546001600160a01b031690565b6001600160a01b0316856001600160a01b0316141580156110c957505f546001600160a01b03858116911614155b1561134357601d546001600160a01b0386811691161480156110f95750601c546001600160a01b03858116911614155b801561111d57506001600160a01b0384165f9081526003602052604090205460ff16155b1561123f576015548311156111745760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016107dd565b60165483611196866001600160a01b03165f9081526001602052604090205490565b6111a09190611e30565b11156111ee5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016107dd565b611214606461064c600b54600e54116112095760075461120d565b6009545b8690611585565b600e80549193505f61122583611e43565b9091555050600f8054905f61123983611e43565b91905055505b601d546001600160a01b03858116911614801561126557506001600160a01b0385163014155b156112a65761128f606461064c600c54600e54116112855760085461120d565b600a548690611585565b600f80549193505f6112a083611e43565b91905055505b601b54305f9081526001602052604081205490916112c4919061164b565b601d54909150600160a81b900460ff161580156112ee5750601d546001600160a01b038681169116145b80156113035750601d54600160b01b900460ff165b8015611310575060175481115b801561131f5750600d54600e54115b156113415761134161133c856113378460155461186a565b61186a565b61187e565b505b601d54600160b81b900460ff16156113f35761136f606461064c6013548661158590919063ffffffff16565b905080601b5461137f9190611e30565b601b55305f9081526001602052604090205461139b908261168c565b305f81815260016020526040908190209290925590516001600160a01b038716905f80516020611f3b833981519152906113d89085815260200190565b60405180910390a381156113f3576113f08183611e5b565b91505b811561145857305f90815260016020526040902054611412908361168c565b305f81815260016020526040908190209290925590516001600160a01b038716905f80516020611f3b8339815191529061144f9086815260200190565b60405180910390a35b5f611463838361168c565b6001600160a01b0387165f90815260016020526040902054909150611488908561164b565b6001600160a01b0387165f908152600160205260409020556114cb6114ad858361164b565b6001600160a01b0387165f908152600160205260409020549061168c565b6001600160a01b038087165f8181526001602052604090209290925587165f80516020611f3b833981519152611501878561164b565b60405190815260200160405180910390a3601a54600f541180156115285750601854601754115b156115455760195460175461153d9190611e5b565b6017555f600f555b505050505050565b5f81848411156115705760405162461bcd60e51b81526004016107dd9190611aee565b505f61157c8486611e5b565b95945050505050565b5f825f0361159457505f610511565b5f61159f8385611d44565b9050826115ac8583611e6e565b146116035760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107dd565b9392505050565b5f61160383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a23565b5f61160383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061154d565b5f806116988385611e30565b9050838110156116035760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107dd565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061171d5761171d611e8d565b6001600160a01b03928316602091820292909201810191909152601c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611774573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117989190611d90565b816001815181106117ab576117ab611e8d565b6001600160a01b039283166020918202929092010152601c546117d19130911684610e46565b601c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906118099085905f90869030904290600401611ea1565b5f604051808303815f87803b158015611820575f80fd5b505af1158015611545573d5f803e3d5ffd5b6040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015611865573d5f803e3d5ffd5b505050565b5f8183116118785782611603565b50919050565b601d805460ff60a81b1916600160a81b179081905560105490600160b81b900460ff166118b7576013546010546118b49161168c565b90505b6014545f906118c68385611d44565b6118d09190611e6e565b90505f601454601154856118e49190611d44565b6118ee9190611e6e565b90505f601454601254866119029190611d44565b61190c9190611e6e565b90505f8161191a8486611e30565b6119249190611e30565b90505f600282611934858a611d44565b61193e9190611e6e565b6119489190611e6e565b90504761195d611958838a611e5b565b6116ea565b5f6119688247611e5b565b90505f601454898361197a9190611d44565b6119849190611e6e565b90505f601454601154846119989190611d44565b6119a29190611e6e565b90505f816119b08486611e5b565b6119ba9190611e5b565b90505f861180156119ca57505f81115b156119d9576119d98682611a4f565b6004546119ef906001600160a01b031684611832565b600554479450611a08906001600160a01b031685611832565b5050601d805460ff60a81b1916905550505050505050505050565b5f8183611a435760405162461bcd60e51b81526004016107dd9190611aee565b505f61157c8486611e6e565b601c54611a679030906001600160a01b031684610e46565b601c5460055460405163f305d71960e01b81526001600160a01b039283169263f305d719928592611aa692309289925f92839216904290600401611dab565b60606040518083038185885af1158015611ac2573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611ae79190611de6565b5050505050565b5f602080835283518060208501525f5b81811015611b1a57858101830151858201604001528201611afe565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146105ef575f80fd5b5f8060408385031215611b5f575f80fd5b8235611b6a81611b3a565b946020939093013593505050565b5f805f60608486031215611b8a575f80fd5b8335611b9581611b3a565b92506020840135611ba581611b3a565b929592945050506040919091013590565b5f8060408385031215611bc7575f80fd5b823591506020830135611bd981611b3a565b809150509250929050565b5f60208284031215611bf4575f80fd5b813561160381611b3a565b5f8060408385031215611c10575f80fd5b8235611c1b81611b3a565b91506020830135611bd981611b3a565b5f60208284031215611c3b575f80fd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611c9057815f1904821115611c7657611c76611c42565b80851615611c8357918102915b93841c9390800290611c5b565b509250929050565b5f82611ca657506001610511565b81611cb257505f610511565b8160018114611cc85760028114611cd257611cee565b6001915050610511565b60ff841115611ce357611ce3611c42565b50506001821b610511565b5060208310610133831016604e8410600b8410161715611d11575081810a610511565b611d1b8383611c56565b805f1904821115611d2e57611d2e611c42565b029392505050565b5f61160360ff841683611c98565b808202811582820484141761051157610511611c42565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611da0575f80fd5b815161160381611b3a565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f60608486031215611df8575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611e21575f80fd5b81518015158114611603575f80fd5b8082018082111561051157610511611c42565b5f60018201611e5457611e54611c42565b5060010190565b8181038181111561051157610511611c42565b5f82611e8857634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611ef15784516001600160a01b031683529383019391830191600101611ecc565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220af3aef6a4d3d99f346b2d37be69569dd3b46af7bbd8ff85f37797d696214973f64736f6c63430008170033

Deployed Bytecode Sourcemap

4896:15604:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7354:83;;;;;;;;;;-1:-1:-1;7424:5:0;;;;;;;;;;;;-1:-1:-1;;;7424:5:0;;;;7354:83;;;;;;;:::i;:::-;;;;;;;;8237:186;;;;;;;;;;-1:-1:-1;8237:186:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8237:186:0;1023:187:1;7631:95:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;7631:95:0;1215:177:1;8431:446:0;;;;;;;;;;-1:-1:-1;8431:446:0;;;;;:::i;:::-;;:::i;16744:292::-;;;;;;;;;;;;;:::i;:::-;;19856:641;;;;;;;;;;-1:-1:-1;19856:641:0;;;;;:::i;:::-;;:::i;7540:83::-;;;;;;;;;;-1:-1:-1;7540:83:0;;5940:1;2320:36:1;;2308:2;2293:18;7540:83:0;2178:184:1;17175:233:0;;;;;;;;;;;;;:::i;17571:410::-;;;;;;;;;;;;;:::i;6722:37::-;;;;;;;;;;-1:-1:-1;6722:37:0;;;;-1:-1:-1;;;6722:37:0;;;;;;7734:119;;;;;;;;;;-1:-1:-1;7734:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;7827:18:0;7800:7;7827:18;;;:9;:18;;;;;;;7734:119;3921:148;;;;;;;;;;;;;:::i;14951:162::-;;;;;;;;;;;;;:::i;6120:49::-;;;;;;;;;;;;;;;;18511:146;;;;;;;;;;;;;:::i;3707:79::-;;;;;;;;;;-1:-1:-1;3745:7:0;3772:6;-1:-1:-1;;;;;3772:6:0;3707:79;;;-1:-1:-1;;;;;2783:32:1;;;2765:51;;2753:2;2738:18;3707:79:0;2619:203:1;6176:51:0;;;;;;;;;;;;;;;;7445:87;;;;;;;;;;-1:-1:-1;7517:7:0;;;;;;;;;;;;-1:-1:-1;;;7517:7:0;;;;7445:87;;7861:192;;;;;;;;;;-1:-1:-1;7861:192:0;;;;;:::i;:::-;;:::i;5249:31::-;;;;;;;;;;-1:-1:-1;5249:31:0;;;;-1:-1:-1;;;;;5249:31:0;;;6234:55;;;;;;;;;;;;;;;;15277:837;;;;;;;;;;;;;:::i;6488:36::-;;;;;;;;;;;;;;;;8061:168;;;;;;;;;;-1:-1:-1;8061:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;8194:18:0;;;8167:7;8194:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8061:168;16365:237;;;;;;;;;;-1:-1:-1;16365:237:0;;;;;:::i;:::-;;:::i;18176:209::-;;;;;;;;;;-1:-1:-1;18176:209:0;;;;;:::i;:::-;;:::i;18884:687::-;;;;;;;;;;-1:-1:-1;18884:687:0;;;;;:::i;:::-;;:::i;8237:186::-;8337:4;8354:39;1322:10;8377:7;8386:6;8354:8;:39::i;:::-;-1:-1:-1;8411:4:0;8237:186;;;;;:::o;7631:95::-;7684:7;5999:15;5940:1;5999:2;:15;:::i;:::-;5983:31;;:13;:31;:::i;:::-;7704:14;;7631:95;:::o;8431:446::-;8563:4;8580:36;8590:6;8598:9;8609:6;8580:9;:36::i;:::-;8627:220;8650:6;1322:10;8698:138;8754:6;8698:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8698:19:0;;;;;;:11;:19;;;;;;;;1322:10;8698:33;;;;;;;;;;:37;:138::i;:::-;8627:8;:220::i;:::-;-1:-1:-1;8865:4:0;8431:446;;;;;:::o;16744:292::-;16814:10;;-1:-1:-1;;;;;16814:10:0;1322;-1:-1:-1;;;;;16798:26:0;;16790:35;;;;;;16877:4;16836:20;7827:18;;;:9;:18;;;;;;16898:16;;16894:135;;16956:10;;16931:50;;16949:4;;-1:-1:-1;;;;;16956:10:0;16968:12;16931:9;:50::i;:::-;17016:1;16996:17;:21;16894:135;16779:257;16744:292::o;19856:641::-;19964:10;;-1:-1:-1;;;;;19964:10:0;1322;-1:-1:-1;;;;;19948:26:0;;19940:35;;;;;;20007:1;19994:10;:14;:35;;;;;20026:3;20012:10;:17;;19994:35;19986:44;;;;;;20045:17;;:21;20041:449;;20083:20;20106:42;20144:3;20106:33;20128:10;20106:17;;:21;;:33;;;;:::i;:::-;:37;;:42::i;:::-;20208:4;20190:24;;;;:9;:24;;;;;;20083:65;;-1:-1:-1;20190:74:0;;20083:65;20190:28;:74::i;:::-;20181:4;20163:24;;;;:9;:24;;;;;;:101;;;;-1:-1:-1;;;;;20302:20:0;;;;;;:38;;20327:12;20302:24;:38::i;:::-;-1:-1:-1;;;;;20279:20:0;;;;;;:9;:20;;;;;:61;20375:17;;:35;;20397:12;20375:21;:35::i;:::-;20355:17;:55;20430:48;;1361:25:1;;;-1:-1:-1;;;;;20430:48:0;;;20447:4;;-1:-1:-1;;;;;;;;;;;20430:48:0;1349:2:1;1334:18;20430:48:0;;;;;;;;20068:422;20041:449;19856:641;;:::o;17175:233::-;17248:10;;-1:-1:-1;;;;;17248:10:0;1322;-1:-1:-1;;;;;17232:26:0;;17224:35;;;;;;17291:21;17327:14;;17323:78;;17358:10;;:31;;-1:-1:-1;;;;;17358:10:0;;;;:31;;;;;17378:10;;17358;:31;:10;:31;17378:10;17358;:31;;;;;;;;;;;;;;;;;;;17571:410;17637:10;;-1:-1:-1;;;;;17637:10:0;1322;-1:-1:-1;;;;;17621:26:0;;17613:35;;;;;;17700:4;17659:20;7827:18;;;:9;:18;;;;;;17721:16;;17717:79;;17754:30;17771:12;17754:16;:30::i;:::-;17827:21;17863:14;;17859:83;;17907:10;;17894:36;;-1:-1:-1;;;;;17907:10:0;17919;17894:12;:36::i;:::-;-1:-1:-1;;17972:1:0;17952:17;:21;17571:410::o;3921:148::-;3834:6;;-1:-1:-1;;;;;3834:6:0;1322:10;3834:22;3826:67;;;;-1:-1:-1;;;3826:67:0;;;;;;;:::i;:::-;;;;;;;;;4028:1:::1;4012:6:::0;;3991:40:::1;::::0;-1:-1:-1;;;;;4012:6:0;;::::1;::::0;3991:40:::1;::::0;4028:1;;3991:40:::1;4059:1;4042:19:::0;;-1:-1:-1;;;;;;4042:19:0::1;::::0;;3921:148::o;14951:162::-;3834:6;;-1:-1:-1;;;;;3834:6:0;1322:10;3834:22;3826:67;;;;-1:-1:-1;;;3826:67:0;;;;;;;:::i;:::-;5999:15:::1;5940:1;5999:2;:15;:::i;:::-;5983:31;::::0;:13:::1;:31;:::i;:::-;15005:12;:22:::0;5999:15:::1;5940:1;5999:2;:15;:::i;:::-;5983:31;::::0;:13:::1;:31;:::i;:::-;15038:14;:24:::0;15078:27:::1;5999:15;5940:1;5999:2;:15;:::i;:::-;5983:31;::::0;:13:::1;:31;:::i;:::-;15078:27;::::0;1361:25:1;;;1349:2;1334:18;15078:27:0::1;;;;;;;14951:162::o:0;18511:146::-;18583:16;;-1:-1:-1;;;;;18583:16:0;1322:10;-1:-1:-1;;;;;18567:32:0;;18559:41;;;;;;18632:17;;;-1:-1:-1;;;;18611:38:0;;-1:-1:-1;;;18632:17:0;;;;;;18631:18;18611:38;;;;;;18511:146::o;7861:192::-;7964:4;7981:42;1322:10;8005:9;8016:6;7981:9;:42::i;15277:837::-;3834:6;;-1:-1:-1;;;;;3834:6:0;1322:10;3834:22;3826:67;;;;-1:-1:-1;;;3826:67:0;;;;;;;:::i;:::-;15339:11:::1;::::0;-1:-1:-1;;;15339:11:0;::::1;;;15338:12;15330:48;;;::::0;-1:-1:-1;;;15330:48:0;;5650:2:1;15330:48:0::1;::::0;::::1;5632:21:1::0;5689:2;5669:18;;;5662:30;5728:25;5708:18;;;5701:53;5771:18;;15330:48:0::1;5448:347:1::0;15330:48:0::1;15389:15;:104:::0;;-1:-1:-1;;;;;;15389:104:0::1;15440:42;15389:104:::0;;::::1;::::0;;;15504:58:::1;::::0;15521:4:::1;::::0;5999:15:::1;5940:1;5999:2;:15;:::i;:::-;5983:31;::::0;:13:::1;:31;:::i;15504:58::-;15607:15;;;;;;;;;-1:-1:-1::0;;;;;15607:15:0::1;-1:-1:-1::0;;;;;15607:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15589:55:0::1;;15671:4;15695:15;;;;;;;;;-1:-1:-1::0;;;;;15695:15:0::1;-1:-1:-1::0;;;;;15695:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15589:143;::::0;-1:-1:-1;;;;;;15589:143:0::1;::::0;;;;;;-1:-1:-1;;;;;6286:15:1;;;15589:143:0::1;::::0;::::1;6268:34:1::0;6338:15;;6318:18;;;6311:43;6203:18;;15589:143:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15573:13;:159:::0;;-1:-1:-1;;;;;15573:159:0;;::::1;-1:-1:-1::0;;;;;;15573:159:0;;::::1;;::::0;;15743:15:::1;::::0;::::1;:31;15782:21;15827:4;15847:24;15827:4:::0;-1:-1:-1;;;;;7827:18:0;7800:7;7827:18;;;:9;:18;;;;;;;7734:119;15847:24:::1;15886:1;15902::::0;15918:7:::1;3745::::0;3772:6;-1:-1:-1;;;;;3772:6:0;;3707:79;15918:7:::1;15940:15;15743:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;15984:13:0::1;::::0;16015:15:::1;::::0;15977:71:::1;::::0;-1:-1:-1;;;15977:71:0;;-1:-1:-1;;;;;16015:15:0;;::::1;15977:71;::::0;::::1;7462:51:1::0;-1:-1:-1;;7529:18:1;;;7522:34;15984:13:0;::::1;::::0;-1:-1:-1;15977:29:0::1;::::0;7435:18:1;;15977:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;16059:11:0::1;:18:::0;;-1:-1:-1;;;;16088:18:0;-1:-1:-1;;;16088:18:0;;;15277:837::o;16365:237::-;16445:10;;-1:-1:-1;;;;;16445:10:0;1322;-1:-1:-1;;;;;16429:26:0;;16421:35;;;;;;16486:12;;16475:7;:23;;:51;;;;;16513:13;;16502:7;:24;;16475:51;16467:60;;;;;;16538:12;:22;;;16571:13;:23;16365:237::o;18176:209::-;18272:10;;-1:-1:-1;;;;;18272:10:0;1322;-1:-1:-1;;;;;18256:26:0;;18248:35;;;;;;-1:-1:-1;;;;;18302:29:0;;18294:38;;;;;;18343:16;:34;;-1:-1:-1;;;;;;18343:34:0;-1:-1:-1;;;;;18343:34:0;;;;;;;;;;18176:209::o;18884:687::-;18985:10;;-1:-1:-1;;;;;18985:10:0;1322;-1:-1:-1;;;;;18969:26:0;;18961:35;;;;;;19028:1;19015:10;:14;:35;;;;;19047:3;19033:10;:17;;19015:35;19007:44;;;;;;19066:17;;:21;19062:502;;19104:20;19127:42;19165:3;19127:33;19149:10;19127:17;;:21;;:33;;;;:::i;:42::-;19229:4;19211:24;;;;:9;:24;;;;;;19104:65;;-1:-1:-1;19211:74:0;;19104:65;19211:28;:74::i;:::-;19202:4;19184:24;;;;:9;:24;;;;;;:101;;;;19340:16;;-1:-1:-1;;;;;19340:16:0;19330:27;;;;:77;;19380:12;19330:31;:77::i;:::-;19310:16;;-1:-1:-1;;;;;19310:16:0;19300:27;;;;:9;:27;;;;;:107;19442:17;;:35;;19464:12;19442:21;:35::i;:::-;19422:17;:55;19521:16;;19497:55;;1361:25:1;;;-1:-1:-1;;;;;19521:16:0;;;;19514:4;;-1:-1:-1;;;;;;;;;;;19497:55:0;1349:2:1;1334:18;19497:55:0;;;;;;;19089:475;18884:687;:::o;8885:335::-;-1:-1:-1;;;;;8978:19:0;;8970:68;;;;-1:-1:-1;;;8970:68:0;;8051:2:1;8970:68:0;;;8033:21:1;8090:2;8070:18;;;8063:30;8129:34;8109:18;;;8102:62;-1:-1:-1;;;8180:18:1;;;8173:34;8224:19;;8970:68:0;7849:400:1;8970:68:0;-1:-1:-1;;;;;9057:21:0;;9049:68;;;;-1:-1:-1;;;9049:68:0;;8456:2:1;9049:68:0;;;8438:21:1;8495:2;8475:18;;;8468:30;8534:34;8514:18;;;8507:62;-1:-1:-1;;;8585:18:1;;;8578:32;8627:19;;9049:68:0;8254:398:1;9049:68:0;-1:-1:-1;;;;;9128:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9180:32;;1361:25:1;;;9180:32:0;;1334:18:1;9180:32:0;1215:177:1;9228:3200:0;-1:-1:-1;;;;;9316:18:0;;9308:68;;;;-1:-1:-1;;;9308:68:0;;8859:2:1;9308:68:0;;;8841:21:1;8898:2;8878:18;;;8871:30;8937:34;8917:18;;;8910:62;-1:-1:-1;;;8988:18:1;;;8981:35;9033:19;;9308:68:0;8657:401:1;9308:68:0;-1:-1:-1;;;;;9395:16:0;;9387:64;;;;-1:-1:-1;;;9387:64:0;;9265:2:1;9387:64:0;;;9247:21:1;9304:2;9284:18;;;9277:30;9343:34;9323:18;;;9316:62;-1:-1:-1;;;9394:18:1;;;9387:33;9437:19;;9387:64:0;9063:399:1;9387:64:0;9479:1;9470:6;:10;9462:64;;;;-1:-1:-1;;;9462:64:0;;9669:2:1;9462:64:0;;;9651:21:1;9708:2;9688:18;;;9681:30;9747:34;9727:18;;;9720:62;-1:-1:-1;;;9798:18:1;;;9791:39;9847:19;;9462:64:0;9467:405:1;9462:64:0;9537:17;9569:21;9617:7;3745;3772:6;-1:-1:-1;;;;;3772:6:0;;3707:79;9617:7;-1:-1:-1;;;;;9609:15:0;:4;-1:-1:-1;;;;;9609:15:0;;;:32;;;;-1:-1:-1;3745:7:0;3772:6;-1:-1:-1;;;;;9628:13:0;;;3772:6;;9628:13;;9609:32;9605:1684;;;9688:13;;-1:-1:-1;;;;;9680:21:0;;;9688:13;;9680:21;:72;;;;-1:-1:-1;9736:15:0;;-1:-1:-1;;;;;9722:30:0;;;9736:15;;9722:30;;9680:72;:116;;;;-1:-1:-1;;;;;;9774:22:0;;;;;;:18;:22;;;;;;;;9773:23;9680:116;9658:730;;;9849:12;;9839:6;:22;;9831:60;;;;-1:-1:-1;;;9831:60:0;;10079:2:1;9831:60:0;;;10061:21:1;10118:2;10098:18;;;10091:30;10157:27;10137:18;;;10130:55;10202:18;;9831:60:0;9877:349:1;9831:60:0;9966:14;;9956:6;9940:13;9950:2;-1:-1:-1;;;;;7827:18:0;7800:7;7827:18;;;:9;:18;;;;;;;7734:119;9940:13;:22;;;;:::i;:::-;:40;;9910:140;;;;-1:-1:-1;;;9910:140:0;;10563:2:1;9910:140:0;;;10545:21:1;10602:2;10582:18;;;10575:30;10641:28;10621:18;;;10614:56;10687:18;;9910:140:0;10361:350:1;9910:140:0;10081:232;10309:3;10081:201;10153:15;;10141:9;;:27;10140:119;;10245:14;;10140:119;;;10201:12;;10140:119;10081:6;;:32;:201::i;:232::-;10332:9;:11;;10069:244;;-1:-1:-1;10332:9:0;:11;;;:::i;:::-;;;;-1:-1:-1;;10362:8:0;:10;;;:8;:10;;;:::i;:::-;;;;;;9658:730;10414:13;;-1:-1:-1;;;;;10408:19:0;;;10414:13;;10408:19;:44;;;;-1:-1:-1;;;;;;10431:21:0;;10447:4;10431:21;;10408:44;10404:361;;;10485:235;10716:3;10485:204;10557:16;;10545:9;;:28;10544:122;;10651:15;;10544:122;;;10606:13;;10485:6;;:32;:204::i;:235::-;10739:8;:10;;10473:247;;-1:-1:-1;10739:8:0;:10;;;:::i;:::-;;;;;;10404:361;10859:17;;10830:4;10781:28;7827:18;;;:9;:18;;;;;;10781:28;;10812:79;;:28;;:79::i;:::-;10929:6;;10781:110;;-1:-1:-1;;;;10929:6:0;;;;10928:7;:47;;;;-1:-1:-1;10962:13:0;;-1:-1:-1;;;;;10956:19:0;;;10962:13;;10956:19;10928:47;:79;;;;-1:-1:-1;10996:11:0;;-1:-1:-1;;;10996:11:0;;;;10928:79;:140;;;;;11051:17;;11028:20;:40;10928:140;:191;;;;;11101:18;;11089:9;;:30;10928:191;10906:372;;;11154:108;11191:52;11195:6;11203:39;11207:20;11229:12;;11203:3;:39::i;:::-;11191:3;:52::i;:::-;11154:14;:108::i;:::-;9643:1646;9605:1684;11305:17;;-1:-1:-1;;;11305:17:0;;;;11301:452;;;11355:32;11383:3;11355:23;11366:11;;11355:6;:10;;:23;;;;:::i;:32::-;11339:48;;11442:13;11422:17;;:33;;;;:::i;:::-;11402:17;:53;11515:4;11497:24;;;;:9;:24;;;;;;:75;;11544:13;11497:28;:75::i;:::-;11488:4;11470:24;;;;:9;:24;;;;;;;:102;;;;11592:44;;-1:-1:-1;;;;;11592:44:0;;;-1:-1:-1;;;;;;;;;;;11592:44:0;;;11622:13;1361:25:1;;1349:2;1334:18;;1215:177;11592:44:0;;;;;;;;11655:13;;11651:91;;11701:25;11713:13;11701:9;:25;:::i;:::-;11689:37;;11651:91;11769:13;;11765:172;;11844:4;11826:24;;;;:9;:24;;;;;;:39;;11855:9;11826:28;:39::i;:::-;11817:4;11799:24;;;;:9;:24;;;;;;;:66;;;;11885:40;;-1:-1:-1;;;;;11885:40:0;;;-1:-1:-1;;;;;;;;;;;11885:40:0;;;11915:9;1361:25:1;;1349:2;1334:18;;1215:177;11885:40:0;;;;;;;;11765:172;11947:16;11966:28;:9;11980:13;11966;:28::i;:::-;-1:-1:-1;;;;;12023:15:0;;;;;;:9;:15;;;;;;11947:47;;-1:-1:-1;12023:27:0;;12043:6;12023:19;:27::i;:::-;-1:-1:-1;;;;;12005:15:0;;;;;;:9;:15;;;;;:45;12077:39;12095:20;:6;12106:8;12095:10;:20::i;:::-;-1:-1:-1;;;;;12077:13:0;;;;;;:9;:13;;;;;;;:17;:39::i;:::-;-1:-1:-1;;;;;12061:13:0;;;;;;;:9;:13;;;;;:55;;;;12132:40;;-1:-1:-1;;;;;;;;;;;12151:20:0;:6;12162:8;12151:10;:20::i;:::-;12132:40;;1361:25:1;;;1349:2;1334:18;12132:40:0;;;;;;;12214:21;;12203:8;;:32;:93;;;;;12272:24;;12252:17;;:44;12203:93;12185:236;;;12363:19;;12343:17;;:39;;;;:::i;:::-;12323:17;:59;12408:1;12397:8;:12;12185:236;9297:3131;;;9228:3200;;;:::o;2509:224::-;2629:7;2665:12;2657:6;;;;2649:29;;;;-1:-1:-1;;;2649:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2689:9:0;2701:5;2705:1;2701;:5;:::i;:::-;2689:17;2509:224;-1:-1:-1;;;;;2509:224:0:o;2741:246::-;2799:7;2823:1;2828;2823:6;2819:47;;-1:-1:-1;2853:1:0;2846:8;;2819:47;2876:9;2888:5;2892:1;2888;:5;:::i;:::-;2876:17;-1:-1:-1;2921:1:0;2912:5;2916:1;2876:17;2912:5;:::i;:::-;:10;2904:56;;;;-1:-1:-1;;;2904:56:0;;11413:2:1;2904:56:0;;;11395:21:1;11452:2;11432:18;;;11425:30;11491:34;11471:18;;;11464:62;-1:-1:-1;;;11542:18:1;;;11535:31;11583:19;;2904:56:0;11211:397:1;2904:56:0;2978:1;2741:246;-1:-1:-1;;;2741:246:0:o;2995:132::-;3053:7;3080:39;3084:1;3087;3080:39;;;;;;;;;;;;;;;;;:3;:39::i;2365:136::-;2423:7;2450:43;2454:1;2457;2450:43;;;;;;;;;;;;;;;;;:3;:43::i;2178:179::-;2236:7;;2268:5;2272:1;2268;:5;:::i;:::-;2256:17;;2297:1;2292;:6;;2284:46;;;;-1:-1:-1;;;2284:46:0;;11815:2:1;2284:46:0;;;11797:21:1;11854:2;11834:18;;;11827:30;11893:29;11873:18;;;11866:57;11940:18;;2284:46:0;11613:351:1;14335:471:0;14425:16;;;14439:1;14425:16;;;;;;;;14401:21;;14425:16;;;;;;;;;;-1:-1:-1;14425:16:0;14401:40;;14470:4;14452;14457:1;14452:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14452:23:0;;;:7;;;;;;;;;;:23;;;;14496:15;;:22;;;-1:-1:-1;;;14496:22:0;;;;:15;;;;;:20;;:22;;;;;14452:7;;14496:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14486:4;14491:1;14486:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14486:32:0;;;:7;;;;;;;;;:32;14561:15;;14529:62;;14546:4;;14561:15;14579:11;14529:8;:62::i;:::-;14602:15;;:196;;-1:-1:-1;;;14602:196:0;;-1:-1:-1;;;;;14602:15:0;;;;:66;;:196;;14683:11;;14602:15;;14725:4;;14752;;14772:15;;14602:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14215:112;14296:23;;-1:-1:-1;;;;;14296:15:0;;;:23;;;;;14312:6;;14296:23;;;;14312:6;14296:15;:23;;;;;;;;;;;;;;;;;;;;;14215:112;;:::o;12436:107::-;12493:7;12525:1;12521;:5;12520:15;;12534:1;12520:15;;;-1:-1:-1;12530:1:0;12436:107;-1:-1:-1;12436:107:0:o;12551:1285::-;6852:6;:13;;-1:-1:-1;;;;6852:13:0;-1:-1:-1;;;6852:13:0;;;;;12657::::1;::::0;;-1:-1:-1;;;12686:17:0;::::1;6852:13:::0;12686:17:::1;12681:102;;12759:11;::::0;12741:13:::1;::::0;:30:::1;::::0;:17:::1;:30::i;:::-;12720:51;;12681:102;12853:9;::::0;12793:19:::1;::::0;12816:33:::1;12831:18:::0;12816:12;:33:::1;:::i;:::-;12815:47;;;;:::i;:::-;12793:69;;12873:19;12922:9;;12911:7;;12896:12;:22;;;;:::i;:::-;12895:36;;;;:::i;:::-;12873:58;;12942:20;12991:9;;12981:6;;12966:12;:21;;;;:::i;:::-;12965:35;;;;:::i;:::-;12942:58:::0;-1:-1:-1;13013:25:0::1;12942:58:::0;13041:25:::1;13055:11:::0;13041;:25:::1;:::i;:::-;:40;;;;:::i;:::-;13013:68:::0;-1:-1:-1;13094:23:0::1;13198:1;13013:68:::0;13121:27:::1;13136:12:::0;13121;:27:::1;:::i;:::-;13120:62;;;;:::i;:::-;:79;;;;:::i;:::-;13094:105:::0;-1:-1:-1;13240:21:0::1;13274:48;13291:30;13094:105:::0;13291:12;:30:::1;:::i;:::-;13274:16;:48::i;:::-;13335:17;13355:41;13379:17:::0;13355:21:::1;:41;:::i;:::-;13335:61;;13407:13;13458:9;;13436:18;13424:9;:30;;;;:::i;:::-;13423:44;;;;:::i;:::-;13407:60;;13478:13;13518:9;;13507:7;;13495:9;:19;;;;:::i;:::-;13494:33;;;;:::i;:::-;13478:49:::0;-1:-1:-1;13538:13:0::1;13478:49:::0;13554:17:::1;13566:5:::0;13554:9;:17:::1;:::i;:::-;:25;;;;:::i;:::-;13538:41;;13614:1;13596:15;:19;:32;;;;;13627:1;13619:5;:9;13596:32;13592:101;;;13645:36;13658:15;13675:5;13645:12;:36::i;:::-;13718:10;::::0;13705:31:::1;::::0;-1:-1:-1;;;;;13718:10:0::1;13730:5:::0;13705:12:::1;:31::i;:::-;13806:10;::::0;13761:21:::1;::::0;-1:-1:-1;13793:35:0::1;::::0;-1:-1:-1;;;;;13806:10:0::1;13761:21:::0;13793:12:::1;:35::i;:::-;-1:-1:-1::0;;6888:6:0;:14;;-1:-1:-1;;;;6888:14:0;;;-1:-1:-1;;;;;;;;;;12551:1285:0:o;3135:223::-;3255:7;3290:12;3283:5;3275:28;;;;-1:-1:-1;;;3275:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3314:9:0;3326:5;3330:1;3326;:5;:::i;13844:363::-;13957:15;;13925:62;;13942:4;;-1:-1:-1;;;;;13957:15:0;13975:11;13925:8;:62::i;:::-;13998:15;;14148:10;;13998:201;;-1:-1:-1;;;13998:201:0;;-1:-1:-1;;;;;13998:15:0;;;;:31;;14037:9;;13998:201;;14070:4;;14090:11;;13998:15;;;;14148:10;;14173:15;;13998:201;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13844:363;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:315::-;1926:6;1934;1987:2;1975:9;1966:7;1962:23;1958:32;1955:52;;;2003:1;2000;1993:12;1955:52;2039:9;2026:23;2016:33;;2099:2;2088:9;2084:18;2071:32;2112:31;2137:5;2112:31;:::i;:::-;2162:5;2152:15;;;1858:315;;;;;:::o;2367:247::-;2426:6;2479:2;2467:9;2458:7;2454:23;2450:32;2447:52;;;2495:1;2492;2485:12;2447:52;2534:9;2521:23;2553:31;2578:5;2553:31;:::i;2827:388::-;2895:6;2903;2956:2;2944:9;2935:7;2931:23;2927:32;2924:52;;;2972:1;2969;2962:12;2924:52;3011:9;2998:23;3030:31;3055:5;3030:31;:::i;:::-;3080:5;-1:-1:-1;3137:2:1;3122:18;;3109:32;3150:33;3109:32;3150:33;:::i;3220:180::-;3279:6;3332:2;3320:9;3311:7;3307:23;3303:32;3300:52;;;3348:1;3345;3338:12;3300:52;-1:-1:-1;3371:23:1;;3220:180;-1:-1:-1;3220:180:1:o;3405:127::-;3466:10;3461:3;3457:20;3454:1;3447:31;3497:4;3494:1;3487:15;3521:4;3518:1;3511:15;3537:416;3626:1;3663:5;3626:1;3677:270;3698:7;3688:8;3685:21;3677:270;;;3757:4;3753:1;3749:6;3745:17;3739:4;3736:27;3733:53;;;3766:18;;:::i;:::-;3816:7;3806:8;3802:22;3799:55;;;3836:16;;;;3799:55;3915:22;;;;3875:15;;;;3677:270;;;3681:3;3537:416;;;;;:::o;3958:806::-;4007:5;4037:8;4027:80;;-1:-1:-1;4078:1:1;4092:5;;4027:80;4126:4;4116:76;;-1:-1:-1;4163:1:1;4177:5;;4116:76;4208:4;4226:1;4221:59;;;;4294:1;4289:130;;;;4201:218;;4221:59;4251:1;4242:10;;4265:5;;;4289:130;4326:3;4316:8;4313:17;4310:43;;;4333:18;;:::i;:::-;-1:-1:-1;;4389:1:1;4375:16;;4404:5;;4201:218;;4503:2;4493:8;4490:16;4484:3;4478:4;4475:13;4471:36;4465:2;4455:8;4452:16;4447:2;4441:4;4438:12;4434:35;4431:77;4428:159;;;-1:-1:-1;4540:19:1;;;4572:5;;4428:159;4619:34;4644:8;4638:4;4619:34;:::i;:::-;4689:6;4685:1;4681:6;4677:19;4668:7;4665:32;4662:58;;;4700:18;;:::i;:::-;4738:20;;3958:806;-1:-1:-1;;;3958:806:1:o;4769:140::-;4827:5;4856:47;4897:4;4887:8;4883:19;4877:4;4856:47;:::i;4914:168::-;4987:9;;;5018;;5035:15;;;5029:22;;5015:37;5005:71;;5056:18;;:::i;5087:356::-;5289:2;5271:21;;;5308:18;;;5301:30;5367:34;5362:2;5347:18;;5340:62;5434:2;5419:18;;5087:356::o;5800:251::-;5870:6;5923:2;5911:9;5902:7;5898:23;5894:32;5891:52;;;5939:1;5936;5929:12;5891:52;5971:9;5965:16;5990:31;6015:5;5990:31;:::i;6365:607::-;-1:-1:-1;;;;;6724:15:1;;;6706:34;;6771:2;6756:18;;6749:34;;;;6814:2;6799:18;;6792:34;;;;6857:2;6842:18;;6835:34;;;;6906:15;;;6900:3;6885:19;;6878:44;6686:3;6938:19;;6931:35;;;;6655:3;6640:19;;6365:607::o;6977:306::-;7065:6;7073;7081;7134:2;7122:9;7113:7;7109:23;7105:32;7102:52;;;7150:1;7147;7140:12;7102:52;7179:9;7173:16;7163:26;;7229:2;7218:9;7214:18;7208:25;7198:35;;7273:2;7262:9;7258:18;7252:25;7242:35;;6977:306;;;;;:::o;7567:277::-;7634:6;7687:2;7675:9;7666:7;7662:23;7658:32;7655:52;;;7703:1;7700;7693:12;7655:52;7735:9;7729:16;7788:5;7781:13;7774:21;7767:5;7764:32;7754:60;;7810:1;7807;7800:12;10231:125;10296:9;;;10317:10;;;10314:36;;;10330:18;;:::i;10716:135::-;10755:3;10776:17;;;10773:43;;10796:18;;:::i;:::-;-1:-1:-1;10843:1:1;10832:13;;10716:135::o;10856:128::-;10923:9;;;10944:11;;;10941:37;;;10958:18;;:::i;10989:217::-;11029:1;11055;11045:132;;11099:10;11094:3;11090:20;11087:1;11080:31;11134:4;11131:1;11124:15;11162:4;11159:1;11152:15;11045:132;-1:-1:-1;11191:9:1;;10989:217::o;12101:127::-;12162:10;12157:3;12153:20;12150:1;12143:31;12193:4;12190:1;12183:15;12217:4;12214:1;12207:15;12233:980;12495:4;12543:3;12532:9;12528:19;12574:6;12563:9;12556:25;12600:2;12638:6;12633:2;12622:9;12618:18;12611:34;12681:3;12676:2;12665:9;12661:18;12654:31;12705:6;12740;12734:13;12771:6;12763;12756:22;12809:3;12798:9;12794:19;12787:26;;12848:2;12840:6;12836:15;12822:29;;12869:1;12879:195;12893:6;12890:1;12887:13;12879:195;;;12958:13;;-1:-1:-1;;;;;12954:39:1;12942:52;;13049:15;;;;13014:12;;;;12990:1;12908:9;12879:195;;;-1:-1:-1;;;;;;;13130:32:1;;;;13125:2;13110:18;;13103:60;-1:-1:-1;;;13194:3:1;13179:19;13172:35;13091:3;12233:980;-1:-1:-1;;;12233:980:1:o

Swarm Source

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