ETH Price: $2,299.13 (+2.74%)

Token

MS Paint DAO (PAINT)
 

Overview

Max Total Supply

1,000,000,000,000 PAINT

Holders

99

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,386,727,353.84847024469942047 PAINT

Value
$0.00
0xf9845411d3bd339312d9f600d6a53177f391fe4d
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:
ERC20Contract

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*

https://mspaintdao.com

*/

// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.14;

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

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
  function totalSupply() external view returns (uint256);
  function decimals() external view returns (uint8);
  function symbol() external view returns (string memory);
  function name() external view returns (string memory);
  function getOwner() external view returns (address);
  function balanceOf(address account) external view returns (uint256);
  function transfer(address recipient, uint256 amount) external returns (bool);
  function allowance(address _owner, address spender) external view returns (uint256);
  function approve(address spender, uint256 amount) external returns (bool);
  function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function factory() external view returns (address);
}

interface IUniswapV2Router01 {
    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);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract ERC20Contract is Context, IERC20 {
    // Ownership moved to in-contract for customizability.
    address public _owner;

    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public isExcludedFromMaxWalletRestrictions;
    mapping (address => bool) private _isblacklisted;


    bool private sameBlockActive = false;
    mapping (address => uint256) private lastTrade;   

    bool private isInitialized = false;
    
    mapping (address => uint256) firstBuy;
    
    uint256 private startingSupply;

    string private _name;
    string private _symbol;
//==========================
    // FEES
    struct taxes {
    uint buyFee;
    uint sellFee;
    uint transferFee;
    }

    taxes public Fees = taxes(
    {buyFee: 1000, sellFee: 1000, transferFee: 500});
//==========================
    // Max Limits

    struct MaxLimits {
    uint maxBuy;
    uint maxSell;
    uint maxTransfer;
    }

    MaxLimits public maxFees = MaxLimits(
    {maxBuy: 1000, maxSell: 1000, maxTransfer: 1000});
//==========================    
    //Proportions of Taxes
    struct feeProportions {
    uint liquidity;
    uint developer;
    uint treasury;
    uint marketing;
    }

    feeProportions public Ratios = feeProportions(
    { liquidity: 10, developer: 60, treasury: 10, marketing: 20});

    uint256 private constant masterTaxDivisor = 10000;
    uint256 private constant MAX = ~uint256(0);
    uint8 private _decimals;
 
    uint256 private _tTotal = startingSupply * 10**_decimals;
    uint256 private _tFeeTotal;

    IUniswapV2Router02 public dexRouter;
    address public lpPair;


    address constant private _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD; // Receives tokens, deflates supply, increases price floor.
    
    address public _devWallet;
    address public _marketingWallet;
    address public _treasuryWallet;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    
    uint256 private maxTxPercent;
    uint256 private maxTxDivisor;
    uint256 private _maxTxAmount;
    
    uint256 private maxWalletPercent;
    uint256 private maxWalletDivisor;
    uint256 private _maxWalletSize;

    uint256 private swapThreshold;
    uint256 private swapAmount;

    bool public _hasLiqBeenAdded = false;
    
    uint256 private _liqAddStatus = 0;
    uint256 private _liqAddBlock = 0;
    uint256 private _liqAddStamp = 0;
    uint256 private _initialLiquidityAmount = 0; // make constant

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Caller != owner.");
        _;
    }
    
    constructor () {
        _owner = msg.sender;
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and recnouncements.
    // This allows for removal of ownership privelages from the owner once renounced or transferred.
    function owner() public view returns (address) {
        return _owner;
    }

    function transferOwner(address newOwner) external onlyOwner() {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if (_devWallet == payable(_owner))
            _devWallet = payable(newOwner);
        
        _allowances[_owner][newOwner] = balanceOf(_owner);
        if(balanceOf(_owner) > 0) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

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

    function totalSupply() external view override returns (uint256) { return _tTotal; }
    function decimals() external view override returns (uint8) { return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

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

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

    function _approve(address sender, address spender, uint256 amount) private {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function approveMax(address spender) public returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function getFirstBuy(address account) public view returns (uint256) {
        return firstBuy[account];
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }

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

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

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    
    function setNewRouter(address newRouter) public onlyOwner() {
        IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter);
        address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (enabled == false) {
            lpPairs[pair] = false;
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 1 weeks, "One week cooldown.");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
        }
    }

    function setupComplete(uint256 rInitializer) private  {
        require (_liqAddStatus == 0, "Error.");
        _liqAddStatus = rInitializer;
    }


    function intializeContract(string memory initName, string memory initSymbol, uint256 initSupply) external onlyOwner payable {
        require(!isInitialized, "Contract already initialized.");
        require(_liqAddStatus == 0);
        
        _name = initName;
        _symbol = initSymbol;

        startingSupply = initSupply;
        _decimals = 18;
        _tTotal = startingSupply * 10**_decimals;

        dexRouter = IUniswapV2Router02(_routerAddress);
        lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;
        _allowances[address(this)][address(dexRouter)] = type(uint256).max;

        _devWallet = address(0x8f7c8187855D1b06A64DDD0fd49b08FE6Cebacf5);
        _marketingWallet = address(0xf871C103A534BAE2C273d9A39400D6C79E3867F4);
        _treasuryWallet = address(0x73cCeb81F18c9217D874D0387D44Ee6bBB85A04C);

        maxTxPercent = 97; // Max Transaction Amount: 100 = 1%
        maxTxDivisor = 10000;
        _maxTxAmount = (_tTotal * maxTxPercent) / maxTxDivisor;
        
        maxWalletPercent = 98; //Max Wallet 100: 1%
        maxWalletDivisor = 10000;
        _maxWalletSize = (_tTotal * maxWalletPercent) / maxWalletDivisor;
        
        swapThreshold = (_tTotal * 5) / 10_000;
        swapAmount = (_tTotal * 5) / 1_000;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[_devWallet] = true;
        _isExcludedFromFees[_marketingWallet] = true;
        _isExcludedFromFees[_treasuryWallet] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[owner()] = true;


        approve(_routerAddress, type(uint256).max);
        approve(owner(), type(uint256).max);


        isInitialized = true;
        _tOwned[owner()] = _tTotal;
        _approve(owner(), _routerAddress, _tTotal);
        emit Transfer(address(0), owner(), _tTotal);
 
        _approve(_owner, address(dexRouter), type(uint256).max);
        _approve(address(this), address(dexRouter), type(uint256).max);

    
        _transfer(_owner, address(this), balanceOf(_owner));

        dexRouter.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
        setupComplete(1);
    }

    function setExcludedFromFees(address account, bool enabled) public onlyOwner {
        _isExcludedFromFees[account] = enabled;
    }


    function excludeFromWalletRestrictions(address excludedAddress) public onlyOwner{
        isExcludedFromMaxWalletRestrictions[excludedAddress] = true;
    }

    function revokeExcludedFromWalletRestrictions(address excludedAddress) public onlyOwner{
        isExcludedFromMaxWalletRestrictions[excludedAddress] = false;
    }
    

    function setRatios(uint _liquidity, uint _developer, uint _treasury, uint _marketing) external onlyOwner {
        require ( (_liquidity+_developer) == 1100, "limit taxes");
        Ratios.liquidity = _liquidity;
        Ratios.developer = _developer;
        Ratios.marketing = _marketing;
        Ratios.treasury = _treasury;
        }


    function setTaxes(uint _buyFee, uint _sellFee, uint _transferFee) external onlyOwner {
        require(_buyFee <= maxFees.maxBuy
                && _sellFee <= maxFees.maxSell
                && _transferFee <= maxFees.maxTransfer,
                "Cannot exceed maximums.");
         Fees.buyFee = _buyFee;
         Fees.sellFee = _sellFee;
         Fees.transferFee = _transferFee;

    }

    function removeLimits() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    }

    function setMaxTxPercent(uint percent, uint divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 300), "Must be above 0.33~% of total supply.");
        _maxTxAmount = check;
    }

    function setMaxWalletSize(uint percent, uint divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 300), "Must be above 0.33~% of total supply.");
        _maxWalletSize = check;

    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
    }

    function setWallets(address payable developerWallet, address payable marketingWallet, address payable treasuryWallet) external onlyOwner {
        _devWallet = payable(developerWallet);
        _treasuryWallet = payable(treasuryWallet);
        _marketingWallet = payable(marketingWallet);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }
     
    function updateBots(address[] memory blacklisted_, bool status_) public onlyOwner {
        for (uint i = 0; i < blacklisted_.length; i++) {
            if (!lpPairs[blacklisted_[i]] && blacklisted_[i] != address(_routerAddress)) {
                _isblacklisted[blacklisted_[i]] = status_;
            }
        }
    }

    function _hasLimits(address from, address to) private view returns (bool) {
        return from != owner()
            && to != owner()
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: Zero address.");
        require(to != address(0), "ERC20: Zero address.");
        require(amount > 0, "Must >0.");
        require(!_isblacklisted[to] && !_isblacklisted[from],"unable to trade");
        if(_hasLimits(from, to)) {
            if (sameBlockActive) {
                if (lpPairs[from]){
                    require(lastTrade[to] != block.number);
                    lastTrade[to] = block.number;
                    } 
                else {
                    require(lastTrade[from] != block.number);
                    lastTrade[from] = block.number;
                    }
            }
            if(!(isExcludedFromMaxWalletRestrictions[from] || isExcludedFromMaxWalletRestrictions[to])) {
                if(lpPairs[from] || lpPairs[to]){
                require(amount <= _maxTxAmount, "Exceeds the maxTxAmount.");
                }
                if(to != _routerAddress && !lpPairs[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                }

            }
            
        }

        if (_tOwned[to] == 0) {
            firstBuy[to] = block.timestamp;
        }

        bool takeFee = true;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }

        if (lpPairs[to]) {
            if (!inSwapAndLiquify
                && swapAndLiquifyEnabled
            ) {
                uint256 contractTokenBalance = balanceOf(address(this));
                if (contractTokenBalance >= swapThreshold) {
                    if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                    swapAndLiquify(contractTokenBalance);
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        if (Ratios.liquidity + Ratios.developer == 0)
            return;
        uint256 toLiquify = ((contractTokenBalance * Ratios.liquidity) / (Ratios.liquidity + Ratios.developer + Ratios.marketing + Ratios.treasury) ) / 2;

        uint256 toSwapForEth = contractTokenBalance - toLiquify;
        swapTokensForEth(toSwapForEth);

        uint256 currentBalance = address(this).balance;
        uint256 liquidityBalance = ((currentBalance * Ratios.liquidity) / (Ratios.liquidity + Ratios.developer + Ratios.marketing + Ratios.treasury) ) / 2;


        if (toLiquify > 0) {
            addLiquidity(toLiquify, liquidityBalance);
            emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify);
        }
        if (address(this).balance > 0) {
            bool success = true;
            uint256 ethBalance = address(this).balance;
            uint256 ethForMarketing = ((ethBalance * Ratios.marketing) / (Ratios.developer + Ratios.marketing + Ratios.treasury));
            uint256 ethForTreasury = ((ethBalance * Ratios.treasury) / (Ratios.developer + Ratios.marketing + Ratios.treasury));
            (success,) = address(_marketingWallet).call{value: ethForMarketing}("");
            (success,) = address(_treasuryWallet).call{value: ethForTreasury}("");
            (success,) = address(_devWallet).call{value: address(this).balance}("");
        }
    }

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

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
                _liqAddBlock = block.number;

            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            _liqAddStamp = block.timestamp;

            swapAndLiquifyEnabled = true;
            emit SwapAndLiquifyEnabledUpdated(true);
        }
    }

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) private returns (bool) {
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                revert("Only owner can transfer at this time.");
            }
        } 
        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, to, amount) : amount; //A
        _tOwned[to] += amountReceived;

        emit Transfer(from, to, amountReceived);
        return true;
    }

    function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) {
        uint256 currentFee;

        if (to == lpPair) {
            currentFee=Fees.sellFee;
            } 

        else if (from == lpPair) {currentFee = Fees.buyFee;} 

        else {currentFee = Fees.transferFee;}

        if (_hasLimits(from, to)){
            if (_liqAddStatus == 0 || _liqAddStatus != (1)) {
                revert();
            }
        }
        uint256 feeAmount = (amount * currentFee / masterTaxDivisor);
        _tOwned[address(this)] += (feeAmount);
        emit Transfer(from, address(this), feeAmount);
        return amount - feeAmount;
    }
}

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":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Fees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"},{"internalType":"uint256","name":"transferFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Ratios","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"developer","type":"uint256"},{"internalType":"uint256","name":"treasury","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"}],"name":"excludeFromWalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getFirstBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"initName","type":"string"},{"internalType":"string","name":"initSymbol","type":"string"},{"internalType":"uint256","name":"initSupply","type":"uint256"}],"name":"intializeContract","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxWalletRestrictions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxFees","outputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"},{"internalType":"uint256","name":"maxTransfer","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"}],"name":"revokeExcludedFromWalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_developer","type":"uint256"},{"internalType":"uint256","name":"_treasury","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"_transferFee","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"developerWallet","type":"address"},{"internalType":"address payable","name":"marketingWallet","type":"address"},{"internalType":"address payable","name":"treasuryWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"blacklisted_","type":"address[]"},{"internalType":"bool","name":"status_","type":"bool"}],"name":"updateBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60006003556009805460ff19908116909155600b805490911690556103e8608081905260a08190526101f460c08190526010829055601182905560125560e0819052610100819052610120819052601381905560148181556015919091556101c0604052600a610140819052603c6101608190526101808290526101a083905260168290556017556018819055601991909155601a54620000a69160ff909116906200021e565b600d54620000b5919062000236565b601b556021805460ff60a81b19169055602a805460ff191690556000602b819055602c819055602d819055602e55348015620000f057600080fd5b50600080546001600160a01b0319163317905562000258565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200016057816000190482111562000144576200014462000109565b808516156200015257918102915b93841c939080029062000124565b509250929050565b600082620001795750600162000218565b81620001885750600062000218565b8160018114620001a15760028114620001ac57620001cc565b600191505062000218565b60ff841115620001c057620001c062000109565b50506001821b62000218565b5060208310610133831016604e8410600b8410161715620001f1575081810a62000218565b620001fd83836200011f565b806000190482111562000214576200021462000109565b0290505b92915050565b60006200022f60ff84168362000168565b9392505050565b600081600019048311821515161562000253576200025362000109565b500290565b6134cc80620002686000396000f3fe6080604052600436106102815760003560e01c8063751039fc1161014f578063aeb96704116100c1578063d3e5a6371161007a578063d3e5a637146107e9578063dd62ed3e146107fc578063e83e34b114610842578063e9dae5ed14610861578063eafb5a3c14610881578063fb78680d146108a157600080fd5b8063aeb9670414610706578063b2bdfa7b14610726578063b5f7bfa214610746578063bc1323e814610789578063c49b9a80146107a9578063ce8b79c9146107c957600080fd5b80638da5cb5b116101135780638da5cb5b1461060d57806395d89b411461065b578063962dfc7514610670578063a13ce2c614610690578063a457c2d7146106c6578063a9059cbb146106e657600080fd5b8063751039fc146105b857806375cb1bd1146105cd57806380c581d1146105ed578063893d20e81461060d5780638c7321ad1461062b57600080fd5b806339509351116101f35780634fbee193116101ac5780634fbee193146104f057806350a8e01614610529578063571ac8b014610543578063590ffdce1461056357806370a0823114610583578063715018a6146105a357600080fd5b806339509351146104155780633aaa36e6146104355780633f3cf56c1461046f578063452ed4f11461048f5780634a74bb02146104af5780634fb2e45d146104d057600080fd5b80631793fe4e116102455780631793fe4e1461035257806318160ddd1461037457806323b872dd1461039357806326003957146103b3578063269d1faa146103d3578063313ce567146103f357600080fd5b806303fd2a451461028d57806306fdde03146102c05780630758d924146102e2578063095ea7b31461030257806311a63e171461033257600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102a361dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102cc57600080fd5b506102d56108c1565b6040516102b79190612ca9565b3480156102ee57600080fd5b50601d546102a3906001600160a01b031681565b34801561030e57600080fd5b5061032261031d366004612d16565b610953565b60405190151581526020016102b7565b34801561033e57600080fd5b50601f546102a3906001600160a01b031681565b34801561035e57600080fd5b5061037261036d366004612d42565b61096a565b005b34801561038057600080fd5b50601b545b6040519081526020016102b7565b34801561039f57600080fd5b506103226103ae366004612d74565b6109fc565b3480156103bf57600080fd5b506103726103ce366004612db5565b610a74565b3480156103df57600080fd5b506021546102a3906001600160a01b031681565b3480156103ff57600080fd5b50601a5460405160ff90911681526020016102b7565b34801561042157600080fd5b50610322610430366004612d16565b610af1565b34801561044157600080fd5b5060105460115460125461045492919083565b604080519384526020840192909252908201526060016102b7565b34801561047b57600080fd5b5061037261048a366004612db5565b610b2d565b34801561049b57600080fd5b50601e546102a3906001600160a01b031681565b3480156104bb57600080fd5b5060215461032290600160a81b900460ff1681565b3480156104dc57600080fd5b506103726104eb366004612dd7565b610baa565b3480156104fc57600080fd5b5061032261050b366004612dd7565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561053557600080fd5b50602a546103229060ff1681565b34801561054f57600080fd5b5061032261055e366004612dd7565b610d3d565b34801561056f57600080fd5b5061037261057e366004612e09565b610d4b565b34801561058f57600080fd5b5061038561059e366004612dd7565b610da0565b3480156105af57600080fd5b50610372610dbb565b3480156105c457600080fd5b50610372610e3a565b3480156105d957600080fd5b506103726105e8366004612e3e565b610e71565b3480156105f957600080fd5b50610372610608366004612e09565b610eda565b34801561061957600080fd5b506000546001600160a01b03166102a3565b34801561063757600080fd5b50610322610646366004612dd7565b60076020526000908152604090205460ff1681565b34801561066757600080fd5b506102d5610fb8565b34801561067c57600080fd5b506020546102a3906001600160a01b031681565b34801561069c57600080fd5b506103856106ab366004612dd7565b6001600160a01b03166000908152600c602052604090205490565b3480156106d257600080fd5b506103226106e1366004612d16565b610fc7565b3480156106f257600080fd5b50610322610701366004612d16565b610ffe565b34801561071257600080fd5b50610372610721366004612ed0565b611015565b34801561073257600080fd5b506000546102a3906001600160a01b031681565b34801561075257600080fd5b506016546017546018546019546107699392919084565b6040805194855260208501939093529183015260608201526080016102b7565b34801561079557600080fd5b506103726107a4366004612dd7565b611147565b3480156107b557600080fd5b506103726107c4366004612f94565b611192565b3480156107d557600080fd5b506103726107e4366004612dd7565b611214565b6103726107f736600461301f565b611262565b34801561080857600080fd5b5061038561081736600461308c565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561084e57600080fd5b5060135460145460155461045492919083565b34801561086d57600080fd5b5061037261087c3660046130c5565b61190c565b34801561088d57600080fd5b5061037261089c366004612dd7565b6119b2565b3480156108ad57600080fd5b506103726108bc366004612d42565b611cde565b6060600e80546108d0906130f1565b80601f01602080910402602001604051908101604052809291908181526020018280546108fc906130f1565b80156109495780601f1061091e57610100808354040283529160200191610949565b820191906000526020600020905b81548152906001019060200180831161092c57829003601f168201915b5050505050905090565b6000610960338484611d47565b5060015b92915050565b6000546001600160a01b0316331461099d5760405162461bcd60e51b81526004016109949061312b565b60405180910390fd5b6109a7838561316b565b61044c146109e55760405162461bcd60e51b815260206004820152600b60248201526a6c696d697420746178657360a81b6044820152606401610994565b601693909355601791909155601991909155601855565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610a61576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610a5b908490613183565b90915550505b610a6c848484611e40565b949350505050565b6000546001600160a01b03163314610a9e5760405162461bcd60e51b81526004016109949061312b565b60008183601b54610aaf919061319a565b610ab991906131b9565b905061012c601b54610acb91906131b9565b811015610aea5760405162461bcd60e51b8152600401610994906131db565b6027555050565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610960918590610b2890869061316b565b611d47565b6000546001600160a01b03163314610b575760405162461bcd60e51b81526004016109949061312b565b60008183601b54610b68919061319a565b610b7291906131b9565b905061012c601b54610b8491906131b9565b811015610ba35760405162461bcd60e51b8152600401610994906131db565b6024555050565b6000546001600160a01b03163314610bd45760405162461bcd60e51b81526004016109949061312b565b6001600160a01b038116610bfa5760405162461bcd60e51b815260040161099490613220565b61deac196001600160a01b03821601610c255760405162461bcd60e51b815260040161099490613220565b60008054610c3e916001600160a01b0390911690610d4b565b610c49816001610d4b565b600054601f546001600160a01b03918216911603610c7d57601f80546001600160a01b0319166001600160a01b0383161790555b600054610c92906001600160a01b0316610da0565b600080546001600160a01b039081168252600460209081526040808420868416855290915282209290925580549091610ccb9116610da0565b1115610cf257600054610cf0906001600160a01b031682610ceb82610da0565b611e40565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600061096482600019610953565b6000546001600160a01b03163314610d755760405162461bcd60e51b81526004016109949061312b565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b03163314610de55760405162461bcd60e51b81526004016109949061312b565b60008054610dfe916001600160a01b0390911690610d4b565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314610e645760405162461bcd60e51b81526004016109949061312b565b601b546024819055602755565b6000546001600160a01b03163314610e9b5760405162461bcd60e51b81526004016109949061312b565b601f80546001600160a01b039485166001600160a01b031991821617909155602180549285169282169290921790915560208054929093169116179055565b6000546001600160a01b03163314610f045760405162461bcd60e51b81526004016109949061312b565b801515600003610f3057506001600160a01b03166000908152600260205260409020805460ff19169055565b60035415610f8c5762093a8060035442610f4a9190613183565b11610f8c5760405162461bcd60e51b815260206004820152601260248201527127b732903bb2b2b59031b7b7b63237bbb71760711b6044820152606401610994565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b6060600f80546108d0906130f1565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610960918590610b28908690613183565b600061100b338484611e40565b5060019392505050565b6000546001600160a01b0316331461103f5760405162461bcd60e51b81526004016109949061312b565b60005b825181101561114257600260008483815181106110615761106161327d565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff161580156110d45750737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03168382815181106110c0576110c061327d565b60200260200101516001600160a01b031614155b156111305781600860008584815181106110f0576110f061327d565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8061113a81613293565b915050611042565b505050565b6000546001600160a01b031633146111715760405162461bcd60e51b81526004016109949061312b565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b031633146111bc5760405162461bcd60e51b81526004016109949061312b565b60218054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061120990831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461123e5760405162461bcd60e51b81526004016109949061312b565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000546001600160a01b0316331461128c5760405162461bcd60e51b81526004016109949061312b565b600b5460ff16156112df5760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420616c726561647920696e697469616c697a65642e0000006044820152606401610994565b602b54156112ec57600080fd5b82516112ff90600e906020860190612c10565b50815161131390600f906020850190612c10565b50600d819055601a805460ff1916601290811790915561133490600a613390565b600d54611341919061319a565b601b55601d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156113a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113cc919061339f565b6001600160a01b031663c9c65396601d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611451919061339f565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801561149d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c1919061339f565b601e80546001600160a01b039283166001600160a01b031991821681179092556000918252600260209081526040808420805460ff1916600117905530845260048252808420601d549095168452938152929091206000199055601f80548216738f7c8187855d1b06a64ddd0fd49b08fe6cebacf51790558154811673f871c103a534bae2c273d9a39400d6c79e3867f417909155602180549091167373cceb81f18c9217d874d0387d44ee6bbb85a04c179055606160228190556127106023819055601b5490916115929161319a565b61159c91906131b9565b602455606260258190556127106026819055601b5490916115bc9161319a565b6115c691906131b9565b602755601b54612710906115db90600561319a565b6115e591906131b9565b602855601b546103e8906115fa90600561319a565b61160491906131b9565b60295560016006600061161f6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601f548216815260068452828120805486166001908117909155935482168152828120805486168517905560215490911681528181208054851684179055308152908120805484168317905561dead81527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2280549093168217909255906005906116df6000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611727737a250d5630b4cf539739df2c5dacb4c659f2488d600019610953565b5061174561173d6000546001600160a01b031690565b600019610953565b50600b805460ff19166001908117909155601b5490600061176e6000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020556117ba61179d6000546001600160a01b031690565b737a250d5630b4cf539739df2c5dacb4c659f2488d601b54611d47565b6000546001600160a01b03166001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601b5460405161180d91815260200190565b60405180910390a3600054601d54611834916001600160a01b039081169116600019611d47565b601d5461184e9030906001600160a01b0316600019611d47565b600054611868906001600160a01b031630610ceb82610da0565b50601d546001600160a01b031663f305d719473061188581610da0565b60008061189a6000546001600160a01b031690565b426040518863ffffffff1660e01b81526004016118bc969594939291906133bc565b60606040518083038185885af11580156118da573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118ff91906133f7565b50505061114260016122f4565b6000546001600160a01b031633146119365760405162461bcd60e51b81526004016109949061312b565b601354831180159061194a57506014548211155b801561195857506015548111155b6119a45760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610994565b601092909255601155601255565b6000546001600160a01b031633146119dc5760405162461bcd60e51b81526004016109949061312b565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a45919061339f565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab6919061339f565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b25919061339f565b90506001600160a01b038116611c9e57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b97919061339f565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611be4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c08919061339f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c79919061339f565b601e80546001600160a01b0319166001600160a01b0392909216919091179055611cba565b601e80546001600160a01b0319166001600160a01b0383161790555b50601d80546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b03163314611d085760405162461bcd60e51b81526004016109949061312b565b8284601b54611d17919061319a565b611d2191906131b9565b602855601b548190611d3490849061319a565b611d3e91906131b9565b60295550505050565b6001600160a01b038316611d935760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610994565b6001600160a01b038216611ddf5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610994565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611e8f5760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b6044820152606401610994565b6001600160a01b038316611edc5760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b6044820152606401610994565b60008211611f175760405162461bcd60e51b815260206004820152600860248201526726bab9ba101f181760c11b6044820152606401610994565b6001600160a01b03831660009081526008602052604090205460ff16158015611f5957506001600160a01b03841660009081526008602052604090205460ff16155b611f975760405162461bcd60e51b815260206004820152600f60248201526e756e61626c6520746f20747261646560881b6044820152606401610994565b611fa18484612332565b156121e15760095460ff1615612058576001600160a01b03841660009081526002602052604090205460ff1615612017576001600160a01b0383166000908152600a6020526040902054439003611ff757600080fd5b6001600160a01b0383166000908152600a60205260409020439055612058565b6001600160a01b0384166000908152600a602052604090205443900361203c57600080fd5b6001600160a01b0384166000908152600a602052604090204390555b6001600160a01b03841660009081526007602052604090205460ff168061209757506001600160a01b03831660009081526007602052604090205460ff165b6121e1576001600160a01b03841660009081526002602052604090205460ff16806120da57506001600160a01b03831660009081526002602052604090205460ff165b15612131576024548211156121315760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e00000000000000006044820152606401610994565b6001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d1480159061217757506001600160a01b03831660009081526002602052604090205460ff16155b156121e1576027548261218985610da0565b612193919061316b565b11156121e15760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610994565b6001600160a01b038316600090815260016020526040812054900361221c576001600160a01b0383166000908152600c602052604090204290555b6001600160a01b03841660009081526006602052604090205460019060ff168061225e57506001600160a01b03841660009081526006602052604090205460ff165b15612267575060005b6001600160a01b03841660009081526002602052604090205460ff16156122df57602154600160a01b900460ff161580156122ab5750602154600160a81b900460ff165b156122df5760006122bb30610da0565b905060285481106122dd5760295481106122d457506029545b6122dd816123f0565b505b6122eb858585846126c6565b95945050505050565b602b541561232d5760405162461bcd60e51b815260206004820152600660248201526522b93937b91760d11b6044820152606401610994565b602b55565b600080546001600160a01b0384811691161480159061235f57506000546001600160a01b03838116911614155b801561238457506001600160a01b03821660009081526005602052604090205460ff16155b80156123a957506001600160a01b03831660009081526005602052604090205460ff16155b80156123c057506001600160a01b03821661dead14155b80156123d457506001600160a01b03821615155b80156123e957506001600160a01b0383163014155b9392505050565b6021805460ff60a01b1916600160a01b179055601754601654612413919061316b565b156126b65760185460195460175460165460009360029390929091612438919061316b565b612442919061316b565b61244c919061316b565b601654612459908561319a565b61246391906131b9565b61246d91906131b9565b9050600061247b8284613183565b905061248681612823565b6018546019546017546016544793600093600293919290916124a79161316b565b6124b1919061316b565b6124bb919061316b565b6016546124c8908561319a565b6124d291906131b9565b6124dc91906131b9565b90508315612530576124ee8482612964565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b47156126b1576018546019546017546001924792600092612551919061316b565b61255b919061316b565b601954612568908461319a565b61257291906131b9565b60185460195460175492935060009261258b919061316b565b612595919061316b565b6018546125a2908561319a565b6125ac91906131b9565b6020546040519192506001600160a01b0316908390600081818185875af1925050503d80600081146125fa576040519150601f19603f3d011682016040523d82523d6000602084013e6125ff565b606091505b50506021546040519195506001600160a01b0316908290600081818185875af1925050503d806000811461264f576040519150601f19603f3d011682016040523d82523d6000602084013e612654565b606091505b5050601f546040519195506001600160a01b0316904790600081818185875af1925050503d80600081146126a4576040519150601f19603f3d011682016040523d82523d6000602084013e6126a9565b606091505b505050505050505b505050505b506021805460ff60a01b19169055565b602a5460009060ff16612750576126dd85856129f9565b602a5460ff161580156126f557506126f58585612332565b156127505760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401610994565b6001600160a01b03851660009081526001602052604081208054859290612778908490613183565b90915550600090508261278b5783612796565b612796868686612b07565b6001600160a01b0386166000908152600160205260408120805492935083929091906127c390849061316b565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161280f91815260200190565b60405180910390a350600195945050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106128585761285861327d565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156128b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d5919061339f565b816001815181106128e8576128e861327d565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b815291169063791ac9479061292e908590600090869030904290600401613425565b600060405180830381600087803b15801561294857600080fd5b505af115801561295c573d6000803e3d6000fd5b505050505050565b601d546001600160a01b031663f305d71982308560008061298d6000546001600160a01b031690565b426040518863ffffffff1660e01b81526004016129af969594939291906133bc565b60606040518083038185885af11580156129cd573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129f291906133f7565b5050505050565b602a5460ff1615612a585760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610994565b612a628282612332565b158015612a7c5750601e546001600160a01b038281169116145b15610fb45743602c556001600160a01b038216600090815260056020908152604091829020805460ff199081166001908117909255602a80549091168217905542602d556021805460ff60a81b1916600160a81b17905591519182527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a15050565b601e5460009081906001600160a01b0390811690851603612b2b5750601154612b4f565b601e546001600160a01b0390811690861603612b4a5750601054612b4f565b506012545b612b598585612332565b15612b7a57602b541580612b705750602b54600114155b15612b7a57600080fd5b6000612710612b89838661319a565b612b9391906131b9565b30600090815260016020526040812080549293508392909190612bb790849061316b565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3612c068185613183565b9695505050505050565b828054612c1c906130f1565b90600052602060002090601f016020900481019282612c3e5760008555612c84565b82601f10612c5757805160ff1916838001178555612c84565b82800160010185558215612c84579182015b82811115612c84578251825591602001919060010190612c69565b50612c90929150612c94565b5090565b5b80821115612c905760008155600101612c95565b600060208083528351808285015260005b81811015612cd657858101830151858201604001528201612cba565b81811115612ce8576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114612d1357600080fd5b50565b60008060408385031215612d2957600080fd5b8235612d3481612cfe565b946020939093013593505050565b60008060008060808587031215612d5857600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612d8957600080fd5b8335612d9481612cfe565b92506020840135612da481612cfe565b929592945050506040919091013590565b60008060408385031215612dc857600080fd5b50508035926020909101359150565b600060208284031215612de957600080fd5b81356123e981612cfe565b80358015158114612e0457600080fd5b919050565b60008060408385031215612e1c57600080fd5b8235612e2781612cfe565b9150612e3560208401612df4565b90509250929050565b600080600060608486031215612e5357600080fd5b8335612e5e81612cfe565b92506020840135612e6e81612cfe565b91506040840135612e7e81612cfe565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612ec857612ec8612e89565b604052919050565b60008060408385031215612ee357600080fd5b823567ffffffffffffffff80821115612efb57600080fd5b818501915085601f830112612f0f57600080fd5b8135602082821115612f2357612f23612e89565b8160051b9250612f34818401612e9f565b8281529284018101928181019089851115612f4e57600080fd5b948201945b84861015612f785785359350612f6884612cfe565b8382529482019490820190612f53565b9650612f879050878201612df4565b9450505050509250929050565b600060208284031215612fa657600080fd5b6123e982612df4565b600082601f830112612fc057600080fd5b813567ffffffffffffffff811115612fda57612fda612e89565b612fed601f8201601f1916602001612e9f565b81815284602083860101111561300257600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561303457600080fd5b833567ffffffffffffffff8082111561304c57600080fd5b61305887838801612faf565b9450602086013591508082111561306e57600080fd5b5061307b86828701612faf565b925050604084013590509250925092565b6000806040838503121561309f57600080fd5b82356130aa81612cfe565b915060208301356130ba81612cfe565b809150509250929050565b6000806000606084860312156130da57600080fd5b505081359360208301359350604090920135919050565b600181811c9082168061310557607f821691505b60208210810361312557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526010908201526f21b0b63632b910109e9037bbb732b91760811b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561317e5761317e613155565b500190565b60008282101561319557613195613155565b500390565b60008160001904831182151516156131b4576131b4613155565b500290565b6000826131d657634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f4d7573742062652061626f766520302e33337e25206f6620746f74616c2073756040820152643838363c9760d91b606082015260800190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000600182016132a5576132a5613155565b5060010190565b600181815b808511156132e75781600019048211156132cd576132cd613155565b808516156132da57918102915b93841c93908002906132b1565b509250929050565b6000826132fe57506001610964565b8161330b57506000610964565b8160018114613321576002811461332b57613347565b6001915050610964565b60ff84111561333c5761333c613155565b50506001821b610964565b5060208310610133831016604e8410600b841016171561336a575081810a610964565b61337483836132ac565b806000190482111561338857613388613155565b029392505050565b60006123e960ff8416836132ef565b6000602082840312156133b157600080fd5b81516123e981612cfe565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561340c57600080fd5b8351925060208401519150604084015190509250925092565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156134755784516001600160a01b031683529383019391830191600101613450565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212202eb44b7cc22c3971b801de2b7fa551c2d3a91977828716b5fccbc6e485214e6064736f6c634300080e0033

Deployed Bytecode

0x6080604052600436106102815760003560e01c8063751039fc1161014f578063aeb96704116100c1578063d3e5a6371161007a578063d3e5a637146107e9578063dd62ed3e146107fc578063e83e34b114610842578063e9dae5ed14610861578063eafb5a3c14610881578063fb78680d146108a157600080fd5b8063aeb9670414610706578063b2bdfa7b14610726578063b5f7bfa214610746578063bc1323e814610789578063c49b9a80146107a9578063ce8b79c9146107c957600080fd5b80638da5cb5b116101135780638da5cb5b1461060d57806395d89b411461065b578063962dfc7514610670578063a13ce2c614610690578063a457c2d7146106c6578063a9059cbb146106e657600080fd5b8063751039fc146105b857806375cb1bd1146105cd57806380c581d1146105ed578063893d20e81461060d5780638c7321ad1461062b57600080fd5b806339509351116101f35780634fbee193116101ac5780634fbee193146104f057806350a8e01614610529578063571ac8b014610543578063590ffdce1461056357806370a0823114610583578063715018a6146105a357600080fd5b806339509351146104155780633aaa36e6146104355780633f3cf56c1461046f578063452ed4f11461048f5780634a74bb02146104af5780634fb2e45d146104d057600080fd5b80631793fe4e116102455780631793fe4e1461035257806318160ddd1461037457806323b872dd1461039357806326003957146103b3578063269d1faa146103d3578063313ce567146103f357600080fd5b806303fd2a451461028d57806306fdde03146102c05780630758d924146102e2578063095ea7b31461030257806311a63e171461033257600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102a361dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102cc57600080fd5b506102d56108c1565b6040516102b79190612ca9565b3480156102ee57600080fd5b50601d546102a3906001600160a01b031681565b34801561030e57600080fd5b5061032261031d366004612d16565b610953565b60405190151581526020016102b7565b34801561033e57600080fd5b50601f546102a3906001600160a01b031681565b34801561035e57600080fd5b5061037261036d366004612d42565b61096a565b005b34801561038057600080fd5b50601b545b6040519081526020016102b7565b34801561039f57600080fd5b506103226103ae366004612d74565b6109fc565b3480156103bf57600080fd5b506103726103ce366004612db5565b610a74565b3480156103df57600080fd5b506021546102a3906001600160a01b031681565b3480156103ff57600080fd5b50601a5460405160ff90911681526020016102b7565b34801561042157600080fd5b50610322610430366004612d16565b610af1565b34801561044157600080fd5b5060105460115460125461045492919083565b604080519384526020840192909252908201526060016102b7565b34801561047b57600080fd5b5061037261048a366004612db5565b610b2d565b34801561049b57600080fd5b50601e546102a3906001600160a01b031681565b3480156104bb57600080fd5b5060215461032290600160a81b900460ff1681565b3480156104dc57600080fd5b506103726104eb366004612dd7565b610baa565b3480156104fc57600080fd5b5061032261050b366004612dd7565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561053557600080fd5b50602a546103229060ff1681565b34801561054f57600080fd5b5061032261055e366004612dd7565b610d3d565b34801561056f57600080fd5b5061037261057e366004612e09565b610d4b565b34801561058f57600080fd5b5061038561059e366004612dd7565b610da0565b3480156105af57600080fd5b50610372610dbb565b3480156105c457600080fd5b50610372610e3a565b3480156105d957600080fd5b506103726105e8366004612e3e565b610e71565b3480156105f957600080fd5b50610372610608366004612e09565b610eda565b34801561061957600080fd5b506000546001600160a01b03166102a3565b34801561063757600080fd5b50610322610646366004612dd7565b60076020526000908152604090205460ff1681565b34801561066757600080fd5b506102d5610fb8565b34801561067c57600080fd5b506020546102a3906001600160a01b031681565b34801561069c57600080fd5b506103856106ab366004612dd7565b6001600160a01b03166000908152600c602052604090205490565b3480156106d257600080fd5b506103226106e1366004612d16565b610fc7565b3480156106f257600080fd5b50610322610701366004612d16565b610ffe565b34801561071257600080fd5b50610372610721366004612ed0565b611015565b34801561073257600080fd5b506000546102a3906001600160a01b031681565b34801561075257600080fd5b506016546017546018546019546107699392919084565b6040805194855260208501939093529183015260608201526080016102b7565b34801561079557600080fd5b506103726107a4366004612dd7565b611147565b3480156107b557600080fd5b506103726107c4366004612f94565b611192565b3480156107d557600080fd5b506103726107e4366004612dd7565b611214565b6103726107f736600461301f565b611262565b34801561080857600080fd5b5061038561081736600461308c565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561084e57600080fd5b5060135460145460155461045492919083565b34801561086d57600080fd5b5061037261087c3660046130c5565b61190c565b34801561088d57600080fd5b5061037261089c366004612dd7565b6119b2565b3480156108ad57600080fd5b506103726108bc366004612d42565b611cde565b6060600e80546108d0906130f1565b80601f01602080910402602001604051908101604052809291908181526020018280546108fc906130f1565b80156109495780601f1061091e57610100808354040283529160200191610949565b820191906000526020600020905b81548152906001019060200180831161092c57829003601f168201915b5050505050905090565b6000610960338484611d47565b5060015b92915050565b6000546001600160a01b0316331461099d5760405162461bcd60e51b81526004016109949061312b565b60405180910390fd5b6109a7838561316b565b61044c146109e55760405162461bcd60e51b815260206004820152600b60248201526a6c696d697420746178657360a81b6044820152606401610994565b601693909355601791909155601991909155601855565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610a61576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610a5b908490613183565b90915550505b610a6c848484611e40565b949350505050565b6000546001600160a01b03163314610a9e5760405162461bcd60e51b81526004016109949061312b565b60008183601b54610aaf919061319a565b610ab991906131b9565b905061012c601b54610acb91906131b9565b811015610aea5760405162461bcd60e51b8152600401610994906131db565b6027555050565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610960918590610b2890869061316b565b611d47565b6000546001600160a01b03163314610b575760405162461bcd60e51b81526004016109949061312b565b60008183601b54610b68919061319a565b610b7291906131b9565b905061012c601b54610b8491906131b9565b811015610ba35760405162461bcd60e51b8152600401610994906131db565b6024555050565b6000546001600160a01b03163314610bd45760405162461bcd60e51b81526004016109949061312b565b6001600160a01b038116610bfa5760405162461bcd60e51b815260040161099490613220565b61deac196001600160a01b03821601610c255760405162461bcd60e51b815260040161099490613220565b60008054610c3e916001600160a01b0390911690610d4b565b610c49816001610d4b565b600054601f546001600160a01b03918216911603610c7d57601f80546001600160a01b0319166001600160a01b0383161790555b600054610c92906001600160a01b0316610da0565b600080546001600160a01b039081168252600460209081526040808420868416855290915282209290925580549091610ccb9116610da0565b1115610cf257600054610cf0906001600160a01b031682610ceb82610da0565b611e40565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600061096482600019610953565b6000546001600160a01b03163314610d755760405162461bcd60e51b81526004016109949061312b565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b03163314610de55760405162461bcd60e51b81526004016109949061312b565b60008054610dfe916001600160a01b0390911690610d4b565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314610e645760405162461bcd60e51b81526004016109949061312b565b601b546024819055602755565b6000546001600160a01b03163314610e9b5760405162461bcd60e51b81526004016109949061312b565b601f80546001600160a01b039485166001600160a01b031991821617909155602180549285169282169290921790915560208054929093169116179055565b6000546001600160a01b03163314610f045760405162461bcd60e51b81526004016109949061312b565b801515600003610f3057506001600160a01b03166000908152600260205260409020805460ff19169055565b60035415610f8c5762093a8060035442610f4a9190613183565b11610f8c5760405162461bcd60e51b815260206004820152601260248201527127b732903bb2b2b59031b7b7b63237bbb71760711b6044820152606401610994565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b6060600f80546108d0906130f1565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610960918590610b28908690613183565b600061100b338484611e40565b5060019392505050565b6000546001600160a01b0316331461103f5760405162461bcd60e51b81526004016109949061312b565b60005b825181101561114257600260008483815181106110615761106161327d565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff161580156110d45750737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03168382815181106110c0576110c061327d565b60200260200101516001600160a01b031614155b156111305781600860008584815181106110f0576110f061327d565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8061113a81613293565b915050611042565b505050565b6000546001600160a01b031633146111715760405162461bcd60e51b81526004016109949061312b565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b031633146111bc5760405162461bcd60e51b81526004016109949061312b565b60218054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061120990831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461123e5760405162461bcd60e51b81526004016109949061312b565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000546001600160a01b0316331461128c5760405162461bcd60e51b81526004016109949061312b565b600b5460ff16156112df5760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420616c726561647920696e697469616c697a65642e0000006044820152606401610994565b602b54156112ec57600080fd5b82516112ff90600e906020860190612c10565b50815161131390600f906020850190612c10565b50600d819055601a805460ff1916601290811790915561133490600a613390565b600d54611341919061319a565b601b55601d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156113a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113cc919061339f565b6001600160a01b031663c9c65396601d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611451919061339f565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801561149d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c1919061339f565b601e80546001600160a01b039283166001600160a01b031991821681179092556000918252600260209081526040808420805460ff1916600117905530845260048252808420601d549095168452938152929091206000199055601f80548216738f7c8187855d1b06a64ddd0fd49b08fe6cebacf51790558154811673f871c103a534bae2c273d9a39400d6c79e3867f417909155602180549091167373cceb81f18c9217d874d0387d44ee6bbb85a04c179055606160228190556127106023819055601b5490916115929161319a565b61159c91906131b9565b602455606260258190556127106026819055601b5490916115bc9161319a565b6115c691906131b9565b602755601b54612710906115db90600561319a565b6115e591906131b9565b602855601b546103e8906115fa90600561319a565b61160491906131b9565b60295560016006600061161f6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601f548216815260068452828120805486166001908117909155935482168152828120805486168517905560215490911681528181208054851684179055308152908120805484168317905561dead81527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2280549093168217909255906005906116df6000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611727737a250d5630b4cf539739df2c5dacb4c659f2488d600019610953565b5061174561173d6000546001600160a01b031690565b600019610953565b50600b805460ff19166001908117909155601b5490600061176e6000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020556117ba61179d6000546001600160a01b031690565b737a250d5630b4cf539739df2c5dacb4c659f2488d601b54611d47565b6000546001600160a01b03166001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601b5460405161180d91815260200190565b60405180910390a3600054601d54611834916001600160a01b039081169116600019611d47565b601d5461184e9030906001600160a01b0316600019611d47565b600054611868906001600160a01b031630610ceb82610da0565b50601d546001600160a01b031663f305d719473061188581610da0565b60008061189a6000546001600160a01b031690565b426040518863ffffffff1660e01b81526004016118bc969594939291906133bc565b60606040518083038185885af11580156118da573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118ff91906133f7565b50505061114260016122f4565b6000546001600160a01b031633146119365760405162461bcd60e51b81526004016109949061312b565b601354831180159061194a57506014548211155b801561195857506015548111155b6119a45760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610994565b601092909255601155601255565b6000546001600160a01b031633146119dc5760405162461bcd60e51b81526004016109949061312b565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a45919061339f565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab6919061339f565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b25919061339f565b90506001600160a01b038116611c9e57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b97919061339f565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611be4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c08919061339f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c79919061339f565b601e80546001600160a01b0319166001600160a01b0392909216919091179055611cba565b601e80546001600160a01b0319166001600160a01b0383161790555b50601d80546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b03163314611d085760405162461bcd60e51b81526004016109949061312b565b8284601b54611d17919061319a565b611d2191906131b9565b602855601b548190611d3490849061319a565b611d3e91906131b9565b60295550505050565b6001600160a01b038316611d935760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610994565b6001600160a01b038216611ddf5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610994565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611e8f5760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b6044820152606401610994565b6001600160a01b038316611edc5760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b6044820152606401610994565b60008211611f175760405162461bcd60e51b815260206004820152600860248201526726bab9ba101f181760c11b6044820152606401610994565b6001600160a01b03831660009081526008602052604090205460ff16158015611f5957506001600160a01b03841660009081526008602052604090205460ff16155b611f975760405162461bcd60e51b815260206004820152600f60248201526e756e61626c6520746f20747261646560881b6044820152606401610994565b611fa18484612332565b156121e15760095460ff1615612058576001600160a01b03841660009081526002602052604090205460ff1615612017576001600160a01b0383166000908152600a6020526040902054439003611ff757600080fd5b6001600160a01b0383166000908152600a60205260409020439055612058565b6001600160a01b0384166000908152600a602052604090205443900361203c57600080fd5b6001600160a01b0384166000908152600a602052604090204390555b6001600160a01b03841660009081526007602052604090205460ff168061209757506001600160a01b03831660009081526007602052604090205460ff165b6121e1576001600160a01b03841660009081526002602052604090205460ff16806120da57506001600160a01b03831660009081526002602052604090205460ff165b15612131576024548211156121315760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e00000000000000006044820152606401610994565b6001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d1480159061217757506001600160a01b03831660009081526002602052604090205460ff16155b156121e1576027548261218985610da0565b612193919061316b565b11156121e15760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610994565b6001600160a01b038316600090815260016020526040812054900361221c576001600160a01b0383166000908152600c602052604090204290555b6001600160a01b03841660009081526006602052604090205460019060ff168061225e57506001600160a01b03841660009081526006602052604090205460ff165b15612267575060005b6001600160a01b03841660009081526002602052604090205460ff16156122df57602154600160a01b900460ff161580156122ab5750602154600160a81b900460ff165b156122df5760006122bb30610da0565b905060285481106122dd5760295481106122d457506029545b6122dd816123f0565b505b6122eb858585846126c6565b95945050505050565b602b541561232d5760405162461bcd60e51b815260206004820152600660248201526522b93937b91760d11b6044820152606401610994565b602b55565b600080546001600160a01b0384811691161480159061235f57506000546001600160a01b03838116911614155b801561238457506001600160a01b03821660009081526005602052604090205460ff16155b80156123a957506001600160a01b03831660009081526005602052604090205460ff16155b80156123c057506001600160a01b03821661dead14155b80156123d457506001600160a01b03821615155b80156123e957506001600160a01b0383163014155b9392505050565b6021805460ff60a01b1916600160a01b179055601754601654612413919061316b565b156126b65760185460195460175460165460009360029390929091612438919061316b565b612442919061316b565b61244c919061316b565b601654612459908561319a565b61246391906131b9565b61246d91906131b9565b9050600061247b8284613183565b905061248681612823565b6018546019546017546016544793600093600293919290916124a79161316b565b6124b1919061316b565b6124bb919061316b565b6016546124c8908561319a565b6124d291906131b9565b6124dc91906131b9565b90508315612530576124ee8482612964565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b47156126b1576018546019546017546001924792600092612551919061316b565b61255b919061316b565b601954612568908461319a565b61257291906131b9565b60185460195460175492935060009261258b919061316b565b612595919061316b565b6018546125a2908561319a565b6125ac91906131b9565b6020546040519192506001600160a01b0316908390600081818185875af1925050503d80600081146125fa576040519150601f19603f3d011682016040523d82523d6000602084013e6125ff565b606091505b50506021546040519195506001600160a01b0316908290600081818185875af1925050503d806000811461264f576040519150601f19603f3d011682016040523d82523d6000602084013e612654565b606091505b5050601f546040519195506001600160a01b0316904790600081818185875af1925050503d80600081146126a4576040519150601f19603f3d011682016040523d82523d6000602084013e6126a9565b606091505b505050505050505b505050505b506021805460ff60a01b19169055565b602a5460009060ff16612750576126dd85856129f9565b602a5460ff161580156126f557506126f58585612332565b156127505760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401610994565b6001600160a01b03851660009081526001602052604081208054859290612778908490613183565b90915550600090508261278b5783612796565b612796868686612b07565b6001600160a01b0386166000908152600160205260408120805492935083929091906127c390849061316b565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161280f91815260200190565b60405180910390a350600195945050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106128585761285861327d565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156128b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d5919061339f565b816001815181106128e8576128e861327d565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b815291169063791ac9479061292e908590600090869030904290600401613425565b600060405180830381600087803b15801561294857600080fd5b505af115801561295c573d6000803e3d6000fd5b505050505050565b601d546001600160a01b031663f305d71982308560008061298d6000546001600160a01b031690565b426040518863ffffffff1660e01b81526004016129af969594939291906133bc565b60606040518083038185885af11580156129cd573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129f291906133f7565b5050505050565b602a5460ff1615612a585760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610994565b612a628282612332565b158015612a7c5750601e546001600160a01b038281169116145b15610fb45743602c556001600160a01b038216600090815260056020908152604091829020805460ff199081166001908117909255602a80549091168217905542602d556021805460ff60a81b1916600160a81b17905591519182527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a15050565b601e5460009081906001600160a01b0390811690851603612b2b5750601154612b4f565b601e546001600160a01b0390811690861603612b4a5750601054612b4f565b506012545b612b598585612332565b15612b7a57602b541580612b705750602b54600114155b15612b7a57600080fd5b6000612710612b89838661319a565b612b9391906131b9565b30600090815260016020526040812080549293508392909190612bb790849061316b565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3612c068185613183565b9695505050505050565b828054612c1c906130f1565b90600052602060002090601f016020900481019282612c3e5760008555612c84565b82601f10612c5757805160ff1916838001178555612c84565b82800160010185558215612c84579182015b82811115612c84578251825591602001919060010190612c69565b50612c90929150612c94565b5090565b5b80821115612c905760008155600101612c95565b600060208083528351808285015260005b81811015612cd657858101830151858201604001528201612cba565b81811115612ce8576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114612d1357600080fd5b50565b60008060408385031215612d2957600080fd5b8235612d3481612cfe565b946020939093013593505050565b60008060008060808587031215612d5857600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612d8957600080fd5b8335612d9481612cfe565b92506020840135612da481612cfe565b929592945050506040919091013590565b60008060408385031215612dc857600080fd5b50508035926020909101359150565b600060208284031215612de957600080fd5b81356123e981612cfe565b80358015158114612e0457600080fd5b919050565b60008060408385031215612e1c57600080fd5b8235612e2781612cfe565b9150612e3560208401612df4565b90509250929050565b600080600060608486031215612e5357600080fd5b8335612e5e81612cfe565b92506020840135612e6e81612cfe565b91506040840135612e7e81612cfe565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612ec857612ec8612e89565b604052919050565b60008060408385031215612ee357600080fd5b823567ffffffffffffffff80821115612efb57600080fd5b818501915085601f830112612f0f57600080fd5b8135602082821115612f2357612f23612e89565b8160051b9250612f34818401612e9f565b8281529284018101928181019089851115612f4e57600080fd5b948201945b84861015612f785785359350612f6884612cfe565b8382529482019490820190612f53565b9650612f879050878201612df4565b9450505050509250929050565b600060208284031215612fa657600080fd5b6123e982612df4565b600082601f830112612fc057600080fd5b813567ffffffffffffffff811115612fda57612fda612e89565b612fed601f8201601f1916602001612e9f565b81815284602083860101111561300257600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561303457600080fd5b833567ffffffffffffffff8082111561304c57600080fd5b61305887838801612faf565b9450602086013591508082111561306e57600080fd5b5061307b86828701612faf565b925050604084013590509250925092565b6000806040838503121561309f57600080fd5b82356130aa81612cfe565b915060208301356130ba81612cfe565b809150509250929050565b6000806000606084860312156130da57600080fd5b505081359360208301359350604090920135919050565b600181811c9082168061310557607f821691505b60208210810361312557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526010908201526f21b0b63632b910109e9037bbb732b91760811b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561317e5761317e613155565b500190565b60008282101561319557613195613155565b500390565b60008160001904831182151516156131b4576131b4613155565b500290565b6000826131d657634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f4d7573742062652061626f766520302e33337e25206f6620746f74616c2073756040820152643838363c9760d91b606082015260800190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000600182016132a5576132a5613155565b5060010190565b600181815b808511156132e75781600019048211156132cd576132cd613155565b808516156132da57918102915b93841c93908002906132b1565b509250929050565b6000826132fe57506001610964565b8161330b57506000610964565b8160018114613321576002811461332b57613347565b6001915050610964565b60ff84111561333c5761333c613155565b50506001821b610964565b5060208310610133831016604e8410600b841016171561336a575081810a610964565b61337483836132ac565b806000190482111561338857613388613155565b029392505050565b60006123e960ff8416836132ef565b6000602082840312156133b157600080fd5b81516123e981612cfe565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561340c57600080fd5b8351925060208401519150604084015190509250925092565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156134755784516001600160a01b031683529383019391830191600101613450565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212202eb44b7cc22c3971b801de2b7fa551c2d3a91977828716b5fccbc6e485214e6064736f6c634300080e0033

Deployed Bytecode Sourcemap

3674:21099:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5745:73;;;;;;;;;;;;5776:42;5745:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;5745:73:0;;;;;;;;9512:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5574:35::-;;;;;;;;;;-1:-1:-1;5574:35:0;;;;-1:-1:-1;;;;;5574:35:0;;;10125:161;;;;;;;;;;-1:-1:-1;10125:161:0;;;;;:::i;:::-;;:::i;:::-;;;1679:14:1;;1672:22;1654:41;;1642:2;1627:18;10125:161:0;1514:187:1;5891:25:0;;;;;;;;;;-1:-1:-1;5891:25:0;;;;-1:-1:-1;;;;;5891:25:0;;;15869:343;;;;;;;;;;-1:-1:-1;15869:343:0;;;;;:::i;:::-;;:::i;:::-;;9247:83;;;;;;;;;;-1:-1:-1;9320:7:0;;9247:83;;;2242:25:1;;;2230:2;2215:18;9247:83:0;2096:177:1;10858:306:0;;;;;;;;;;-1:-1:-1;10858:306:0;;;;;:::i;:::-;;:::i;17016:257::-;;;;;;;;;;-1:-1:-1;17016:257:0;;;;;:::i;:::-;;:::i;5961:30::-;;;;;;;;;;-1:-1:-1;5961:30:0;;;;-1:-1:-1;;;;;5961:30:0;;;9336:80;;;;;;;;;;-1:-1:-1;9404:9:0;;9336:80;;9404:9;;;;3134:36:1;;3122:2;3107:18;9336:80:0;2992:184:1;11172:215:0;;;;;;;;;;-1:-1:-1;11172:215:0;;;;;:::i;:::-;;:::i;4703:80::-;;;;;;;;;;-1:-1:-1;4703:80:0;;;;;;;;;;;;;;;;3383:25:1;;;3439:2;3424:18;;3417:34;;;;3467:18;;;3460:34;3371:2;3356:18;4703:80:0;3181:319:1;16756:252:0;;;;;;;;;;-1:-1:-1;16756:252:0;;;;;:::i;:::-;;:::i;5616:21::-;;;;;;;;;;-1:-1:-1;5616:21:0;;;;-1:-1:-1;;;;;5616:21:0;;;6032:41;;;;;;;;;;-1:-1:-1;6032:41:0;;;;-1:-1:-1;;;6032:41:0;;;;;;7936:749;;;;;;;;;;-1:-1:-1;7936:749:0;;;;;:::i;:::-;;:::i;11628:125::-;;;;;;;;;;-1:-1:-1;11628:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;11717:28:0;11693:4;11717:28;;;:19;:28;;;;;;;;;11628:125;6385:36;;;;;;;;;;-1:-1:-1;6385:36:0;;;;;;;;10611:120;;;;;;;;;;-1:-1:-1;10611:120:0;;;;;:::i;:::-;;:::i;15379:134::-;;;;;;;;;;-1:-1:-1;15379:134:0;;;;;:::i;:::-;;:::i;9825:117::-;;;;;;;;;;-1:-1:-1;9825:117:0;;;;;:::i;:::-;;:::i;8693:195::-;;;;;;;;;;;;;:::i;16629:119::-;;;;;;;;;;;;;:::i;17578:299::-;;;;;;;;;;-1:-1:-1;17578:299:0;;;;;:::i;:::-;;:::i;12274:410::-;;;;;;;;;;-1:-1:-1;12274:410:0;;;;;:::i;:::-;;:::i;9598:80::-;;;;;;;;;;-1:-1:-1;9650:7:0;7914:6;-1:-1:-1;;;;;7914:6:0;9598:80;;4144:68;;;;;;;;;;-1:-1:-1;4144:68:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9422:84;;;;;;;;;;;;;:::i;5923:31::-;;;;;;;;;;-1:-1:-1;5923:31:0;;;;-1:-1:-1;;;;;5923:31:0;;;10739:111;;;;;;;;;;-1:-1:-1;10739:111:0;;;;;:::i;:::-;-1:-1:-1;;;;;10825:17:0;10798:7;10825:17;;;:8;:17;;;;;;;10739:111;11395:225;;;;;;;;;;-1:-1:-1;11395:225:0;;;;;:::i;:::-;;:::i;9950:167::-;;;;;;;;;;-1:-1:-1;9950:167:0;;;;;:::i;:::-;;:::i;18069:326::-;;;;;;;;;;-1:-1:-1;18069:326:0;;;;;:::i;:::-;;:::i;3783:21::-;;;;;;;;;;-1:-1:-1;3783:21:0;;;;-1:-1:-1;;;;;3783:21:0;;;5216:113;;;;;;;;;;-1:-1:-1;5216:113:0;;;;;;;;;;;;;;;;;;;6539:25:1;;;6595:2;6580:18;;6573:34;;;;6623:18;;;6616:34;6681:2;6666:18;;6659:34;6526:3;6511:19;5216:113:0;6308:391:1;15689:166:0;;;;;;;;;;-1:-1:-1;15689:166:0;;;;;:::i;:::-;;:::i;17885:171::-;;;;;;;;;;-1:-1:-1;17885:171:0;;;;;:::i;:::-;;:::i;15523:158::-;;;;;;;;;;-1:-1:-1;15523:158:0;;;;;:::i;:::-;;:::i;12852:2519::-;;;;;;:::i;:::-;;:::i;9684:133::-;;;;;;;;;;-1:-1:-1;9684:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9786:19:0;;;9768:7;9786:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9684:133;4934:92;;;;;;;;;;-1:-1:-1;4934:92:0;;;;;;;;;;;;16222:399;;;;;;;;;;-1:-1:-1;16222:399:0;;;;;:::i;:::-;;:::i;11765:501::-;;;;;;;;;;-1:-1:-1;11765:501:0;;;;;:::i;:::-;;:::i;17281:289::-;;;;;;;;;;-1:-1:-1;17281:289:0;;;;;:::i;:::-;;:::i;9512:80::-;9560:13;9584:5;9577:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9512:80;:::o;10125:161::-;10200:4;10217:39;226:10;10240:7;10249:6;10217:8;:39::i;:::-;-1:-1:-1;10274:4:0;10125:161;;;;;:::o;15869:343::-;7131:6;;-1:-1:-1;;;;;7131:6:0;226:10;7131:22;7123:51;;;;-1:-1:-1;;;7123:51:0;;;;;;;:::i;:::-;;;;;;;;;15996:21:::1;16007:10:::0;15996;:21:::1;:::i;:::-;16022:4;15995:31;15985:57;;;::::0;-1:-1:-1;;;15985:57:0;;9952:2:1;15985:57:0::1;::::0;::::1;9934:21:1::0;9991:2;9971:18;;;9964:30;-1:-1:-1;;;10010:18:1;;;10003:41;10061:18;;15985:57:0::1;9750:335:1::0;15985:57:0::1;16053:6;:29:::0;;;;16093:16;:29;;;;16133:16;:29;;;;16173:15;:27;15869:343::o;10858:306::-;-1:-1:-1;;;;;10979:19:0;;10958:4;10979:19;;;:11;:19;;;;;;;;10999:10;10979:31;;;;;;;;-1:-1:-1;;10979:52:0;10975:126;;-1:-1:-1;;;;;11048:19:0;;;;;;:11;:19;;;;;;;;11068:10;11048:31;;;;;;;:41;;11083:6;;11048:19;:41;;11083:6;;11048:41;:::i;:::-;;;;-1:-1:-1;;10975:126:0;11120:36;11130:6;11138:9;11149:6;11120:9;:36::i;:::-;11113:43;10858:306;-1:-1:-1;;;;10858:306:0:o;17016:257::-;7131:6;;-1:-1:-1;;;;;7131:6:0;226:10;7131:22;7123:51;;;;-1:-1:-1;;;7123:51:0;;;;;;;:::i;:::-;17100:13:::1;17138:7;17127;17117;;:17;;;;:::i;:::-;17116:29;;;;:::i;:::-;17100:45;;17184:3;17174:7;;:13;;;;:::i;:::-;17164:5;:24;;17156:74;;;;-1:-1:-1::0;;;17156:74:0::1;;;;;;;:::i;:::-;17241:14;:22:::0;-1:-1:-1;;17016:257:0:o;11172:215::-;226:10;11260:4;11309:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11309:34:0;;;;;;;;;;11260:4;;11277:80;;11300:7;;11309:47;;11346:10;;11309:47;:::i;:::-;11277:8;:80::i;16756:252::-;7131:6;;-1:-1:-1;;;;;7131:6:0;226:10;7131:22;7123:51;;;;-1:-1:-1;;;7123:51:0;;;;;;;:::i;:::-;16839:13:::1;16877:7;16866;16856;;:17;;;;:::i;:::-;16855:29;;;;:::i;:::-;16839:45;;16923:3;16913:7;;:13;;;;:::i;:::-;16903:5;:24;;16895:74;;;;-1:-1:-1::0;;;16895:74:0::1;;;;;;;:::i;:::-;16980:12;:20:::0;-1:-1:-1;;16756:252:0:o;7936:749::-;7131:6;;-1:-1:-1;;;;;7131:6:0;226:10;7131:22;7123:51;;;;-1:-1:-1;;;7123:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8017:22:0;::::1;8009:96;;;;-1:-1:-1::0;;;8009:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;;8124:16:0;::::1;::::0;8116:90:::1;;;;-1:-1:-1::0;;;8116:90:0::1;;;;;;;:::i;:::-;8237:6;::::0;;8217:34:::1;::::0;-1:-1:-1;;;;;8237:6:0;;::::1;::::0;8217:19:::1;:34::i;:::-;8262:35;8282:8;8292:4;8262:19;:35::i;:::-;8344:6;::::0;8322:10:::1;::::0;-1:-1:-1;;;;;8344:6:0;;::::1;8322:10:::0;::::1;:29:::0;8318:78:::1;;8366:10;:30:::0;;-1:-1:-1;;;;;;8366:30:0::1;-1:-1:-1::0;;;;;8366:30:0;::::1;;::::0;;8318:78:::1;8459:6;::::0;8449:17:::1;::::0;-1:-1:-1;;;;;8459:6:0::1;8449:9;:17::i;:::-;8417:19;8429:6:::0;;-1:-1:-1;;;;;8429:6:0;;::::1;8417:19:::0;;:11:::1;:19;::::0;;;;;;;:29;;::::1;::::0;;;;;;;:49;;;;8490:6;;8417:19;;8480:17:::1;::::0;8490:6:::1;8480:9;:17::i;:::-;:21;8477:99;;;8528:6;::::0;8518:46:::1;::::0;-1:-1:-1;;;;;8528:6:0::1;8536:8:::0;8546:17:::1;8528:6:::0;8546:9:::1;:17::i;:::-;8518:9;:46::i;:::-;;8477:99;8596:6;:17:::0;;-1:-1:-1;;;;;;8596:17:0::1;-1:-1:-1::0;;;;;8596:17:0;::::1;::::0;;::::1;::::0;;8629:38:::1;::::0;8596:17;;;;8629:38:::1;::::0;8596:6;8629:38:::1;7936:749:::0;:::o;10611:120::-;10664:4;10688:35;10696:7;-1:-1:-1;;10688:7:0;:35::i;15379:134::-;7131:6;;-1:-1:-1;;;;;7131:6:0;226:10;7131:22;7123:51;;;;-1:-1:-1;;;7123:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15467:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;15467:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15379:134::o;9825:117::-;-1:-1:-1;;;;;9918:16:0;9891:7;9918:16;;;:7;:16;;;;;;;9825:117::o;8693:195::-;7131:6;;-1:-1:-1;;;;;7131:6:0;226:10;7131:22;7123:51;;;;-1:-1:-1;;;7123:51:0;;;;;;;:::i;:::-;8780:6:::1;::::0;;8760:34:::1;::::0;-1:-1:-1;;;;;8780:6:0;;::::1;::::0;8760:19:::1;:34::i;:::-;8822:1;8805:19:::0;;-1:-1:-1;;;;;;8805:19:0::1;::::0;;8840:40:::1;::::0;8822:1;;8840:40:::1;::::0;8822:1;;8840:40:::1;8693:195::o:0;16629:119::-;7131:6;;-1:-1:-1;;;;;7131:6:0;226:10;7131:22;7123:51;;;;-1:-1:-1;;;7123:51:0;;;;;;;:::i;:::-;16698:7:::1;::::0;16683:12:::1;:22:::0;;;16716:14:::1;:24:::0;16629:119::o;17578:299::-;7131:6;;-1:-1:-1;;;;;7131:6:0;226:10;7131:22;7123:51;;;;-1:-1:-1;;;7123:51:0;;;;;;;:::i;:::-;17726:10:::1;:37:::0;;-1:-1:-1;;;;;17726:37:0;;::::1;-1:-1:-1::0;;;;;;17726:37:0;;::::1;;::::0;;;17774:15:::1;:41:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;17826:16:::1;:43:::0;;;;;::::1;::::0;::::1;;::::0;;17578:299::o;12274:410::-;7131:6;;-1:-1:-1;;;;;7131:6:0;226:10;7131:22;7123:51;;;;-1:-1:-1;;;7123:51:0;;;;;;;:::i;:::-;12355:16;::::1;;12366:5;12355:16:::0;12351:326:::1;;-1:-1:-1::0;;;;;;12388:13:0::1;12404:5;12388:13:::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;12388:21:0::1;::::0;;12274:410::o;12351:326::-:1;12446:17;::::0;:22;12442:139:::1;;12535:7;12515:17;;12497:15;:35;;;;:::i;:::-;:45;12489:76;;;::::0;-1:-1:-1;;;12489:76:0;;11653:2:1;12489:76:0::1;::::0;::::1;11635:21:1::0;11692:2;11672:18;;;11665:30;-1:-1:-1;;;11711:18:1;;;11704:48;11769:18;;12489:76:0::1;11451:342:1::0;12489:76:0::1;-1:-1:-1::0;;;;;12595:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;:20;;-1:-1:-1;;12595:20:0::1;12611:4;12595:20;::::0;;12650:15:::1;12630:17;:35:::0;12351:326:::1;12274:410:::0;;:::o;9422:84::-;9472:13;9496:7;9489:14;;;;;:::i;11395:225::-;226:10;11488:4;11537:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11537:34:0;;;;;;;;;;11488:4;;11505:85;;11528:7;;11537:52;;11574:15;;11537:52;:::i;9950:167::-;10028:4;10045:42;226:10;10069:9;10080:6;10045:9;:42::i;:::-;-1:-1:-1;10105:4:0;;9950:167;-1:-1:-1;;;9950:167:0:o;18069:326::-;7131:6;;-1:-1:-1;;;;;7131:6:0;226:10;7131:22;7123:51;;;;-1:-1:-1;;;7123:51:0;;;;;;;:::i;:::-;18167:6:::1;18162:226;18183:12;:19;18179:1;:23;18162:226;;;18229:7;:24;18237:12;18250:1;18237:15;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;18229:24:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;18229:24:0;;::::1;;18228:25;:71:::0;::::1;;;;5690:42;-1:-1:-1::0;;;;;18257:42:0::1;:12;18270:1;18257:15;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;18257:42:0::1;;;18228:71;18224:153;;;18354:7;18320:14;:31;18335:12;18348:1;18335:15;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;18320:31:0::1;-1:-1:-1::0;;;;;18320:31:0::1;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;18224:153;18204:3:::0;::::1;::::0;::::1;:::i;:::-;;;;18162:226;;;;18069:326:::0;;:::o;15689:166::-;7131:6;;-1:-1:-1;;;;;7131:6:0;226:10;7131:22;7123:51;;;;-1:-1:-1;;;7123:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15787:52:0::1;15842:5;15787:52:::0;;;:35:::1;:52;::::0;;;;:60;;-1:-1:-1;;15787:60:0::1;::::0;;15689:166::o;17885:171::-;7131:6;;-1:-1:-1;;;;;7131:6:0;226:10;7131:22;7123:51;;;;-1:-1:-1;;;7123:51:0;;;;;;;:::i;:::-;17962:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;17962:32:0::1;-1:-1:-1::0;;;;17962:32:0;;::::1;;::::0;;18010:38:::1;::::0;::::1;::::0;::::1;::::0;17986:8;1679:14:1;1672:22;1654:41;;1642:2;1627:18;;1514:187;18010:38:0::1;;;;;;;;17885:171:::0;:::o;15523:158::-;7131:6;;-1:-1:-1;;;;;7131:6:0;226:10;7131:22;7123:51;;;;-1:-1:-1;;;7123:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15614:52:0::1;;::::0;;;:35:::1;:52;::::0;;;;:59;;-1:-1:-1;;15614:59:0::1;15669:4;15614:59;::::0;;15523:158::o;12852:2519::-;7131:6;;-1:-1:-1;;;;;7131:6:0;226:10;7131:22;7123:51;;;;-1:-1:-1;;;7123:51:0;;;;;;;:::i;:::-;12996:13:::1;::::0;::::1;;12995:14;12987:56;;;::::0;-1:-1:-1;;;12987:56:0;;12272:2:1;12987:56:0::1;::::0;::::1;12254:21:1::0;12311:2;12291:18;;;12284:30;12350:31;12330:18;;;12323:59;12399:18;;12987:56:0::1;12070:353:1::0;12987:56:0::1;13062:13;::::0;:18;13054:27:::1;;;::::0;::::1;;13102:16:::0;;::::1;::::0;:5:::1;::::0;:16:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;13129:20:0;;::::1;::::0;:7:::1;::::0;:20:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;13162:14:0::1;:27:::0;;;13200:9:::1;:14:::0;;-1:-1:-1;;13200:14:0::1;13212:2;13200:14:::0;;::::1;::::0;;;13252:13:::1;::::0;:2:::1;:13;:::i;:::-;13235:14;;:30;;;;:::i;:::-;13225:7;:40:::0;13278:9:::1;:46:::0;;-1:-1:-1;;;;;;13278:46:0::1;5690:42;13278:46:::0;;::::1;::::0;;;13362:19:::1;::::0;;-1:-1:-1;;;13362:19:0;;;;:17:::1;::::0;:19:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;5690:42;13362:19:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13344:49:0::1;;13394:9;;;;;;;;;-1:-1:-1::0;;;;;13394:9:0::1;-1:-1:-1::0;;;;;13394:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13344:82;::::0;-1:-1:-1;;;;;;13344:82:0::1;::::0;;;;;;-1:-1:-1;;;;;14297:15:1;;;13344:82:0::1;::::0;::::1;14279:34:1::0;13420:4:0::1;14329:18:1::0;;;14322:43;14214:18;;13344:82:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13335:6;:91:::0;;-1:-1:-1;;;;;13335:91:0;;::::1;-1:-1:-1::0;;;;;;13335:91:0;;::::1;::::0;::::1;::::0;;;:6:::1;13437:15:::0;;;:7:::1;:15;::::0;;;;;;;:22;;-1:-1:-1;;13437:22:0::1;13335:91:::0;13437:22:::1;::::0;;13490:4:::1;13470:26:::0;;:11:::1;:26:::0;;;;;13505:9:::1;::::0;;;::::1;13470:46:::0;;;;;;;;;-1:-1:-1;;13470:66:0;;13549:10:::1;:64:::0;;;::::1;13570:42;13549:64;::::0;;13624:70;;;::::1;13651:42;13624:70;::::0;;;13705:15:::1;:69:::0;;;;::::1;13731:42;13705:69;::::0;;13802:2:::1;13787:12;:17:::0;;;13866:5:::1;13851:12;:20:::0;;;13898:7:::1;::::0;13866:5;;13898:22:::1;::::0;::::1;:::i;:::-;13897:39;;;;:::i;:::-;13882:12;:54:::0;13976:2:::1;13957:16;:21:::0;;;14029:5:::1;14010:16;:24:::0;;;14063:7:::1;::::0;14029:5;;14063:26:::1;::::0;::::1;:::i;:::-;14062:47;;;;:::i;:::-;14045:14;:64:::0;14147:7:::1;::::0;14162:6:::1;::::0;14147:11:::1;::::0;14157:1:::1;14147:11;:::i;:::-;14146:22;;;;:::i;:::-;14130:13;:38:::0;14193:7:::1;::::0;14208:5:::1;::::0;14193:11:::1;::::0;14203:1:::1;14193:11;:::i;:::-;14192:21;;;;:::i;:::-;14179:10;:34:::0;14257:4:::1;14226:19;:28;14246:7;7887::::0;7914:6;-1:-1:-1;;;;;7914:6:0;;7849:79;14246:7:::1;-1:-1:-1::0;;;;;14226:28:0;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;14226:28:0;;;:35;;;::::1;;-1:-1:-1::0;;14226:35:0;;::::1;;::::0;;14292:10:::1;::::0;;::::1;14272:31:::0;;:19:::1;:31:::0;;;;;:38;;;::::1;14226:35:::0;14272:38;;::::1;::::0;;;14341:16;;;::::1;14321:37:::0;;;;;:44;;;::::1;::::0;::::1;::::0;;14396:15:::1;::::0;;;::::1;14376:36:::0;;;;;:43;;;::::1;::::0;::::1;::::0;;14458:4:::1;14430:34:::0;;;;;:41;;;::::1;::::0;::::1;::::0;;5776:42:::1;14482:25:::0;;;:32;;;;::::1;::::0;::::1;::::0;;;14226:35;14525:17:::1;::::0;14543:7:::1;7887::::0;7914:6;-1:-1:-1;;;;;7914:6:0;;7849:79;14543:7:::1;-1:-1:-1::0;;;;;14525:26:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14525:26:0;:33;;-1:-1:-1;;14525:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14573:42:::1;5690;-1:-1:-1::0;;14573:7:0::1;:42::i;:::-;;14626:35;14634:7;7887::::0;7914:6;-1:-1:-1;;;;;7914:6:0;;7849:79;14634:7:::1;-1:-1:-1::0;;14626:7:0::1;:35::i;:::-;-1:-1:-1::0;14676:13:0::1;:20:::0;;-1:-1:-1;;14676:20:0::1;14692:4;14676:20:::0;;::::1;::::0;;;14726:7:::1;::::0;;14676:13:::1;14715:7;7887::::0;7914:6;-1:-1:-1;;;;;7914:6:0;;7849:79;14715:7:::1;-1:-1:-1::0;;;;;14707:16:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14707:16:0;:26;14744:42:::1;14753:7;7887::::0;7914:6;-1:-1:-1;;;;;7914:6:0;;7849:79;14753:7:::1;5690:42;14778:7;;14744:8;:42::i;:::-;7887:7:::0;7914:6;-1:-1:-1;;;;;7914:6:0;-1:-1:-1;;;;;14802:38:0::1;14819:1;-1:-1:-1::0;;;;;14802:38:0::1;;14832:7;;14802:38;;;;2242:25:1::0;;2230:2;2215:18;;2096:177;14802:38:0::1;;;;;;;;14863:6;::::0;14879:9:::1;::::0;14854:55:::1;::::0;-1:-1:-1;;;;;14863:6:0;;::::1;::::0;14879:9:::1;-1:-1:-1::0;;14854:8:0::1;:55::i;:::-;14952:9;::::0;14920:62:::1;::::0;14937:4:::1;::::0;-1:-1:-1;;;;;14952:9:0::1;-1:-1:-1::0;;14920:8:0::1;:62::i;:::-;15011:6;::::0;15001:51:::1;::::0;-1:-1:-1;;;;;15011:6:0::1;15027:4;15034:17;15011:6:::0;15034:9:::1;:17::i;15001:51::-;-1:-1:-1::0;15065:9:0::1;::::0;-1:-1:-1;;;;;15065:9:0::1;:25;15098:21;15143:4;15163:24;15143:4:::0;15163:9:::1;:24::i;:::-;15202:1;15245::::0;15288:7:::1;7887::::0;7914:6;-1:-1:-1;;;;;7914:6:0;;7849:79;15288:7:::1;15310:15;15065:271;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15347:16;15361:1;15347:13;:16::i;16222:399::-:0;7131:6;;-1:-1:-1;;;;;7131:6:0;226:10;7131:22;7123:51;;;;-1:-1:-1;;;7123:51:0;;;;;;;:::i;:::-;16337:7:::1;:14:::0;16326:25;::::1;::::0;::::1;::::0;:73:::1;;-1:-1:-1::0;16384:15:0;;16372:27;::::1;;16326:73;:129;;;;-1:-1:-1::0;16436:19:0;;16420:35;::::1;;16326:129;16318:182;;;::::0;-1:-1:-1;;;16318:182:0;;15501:2:1;16318:182:0::1;::::0;::::1;15483:21:1::0;15540:2;15520:18;;;15513:30;15579:25;15559:18;;;15552:53;15622:18;;16318:182:0::1;15299:347:1::0;16318:182:0::1;16512:4;:21:::0;;;;16545:12;:23;16580:16;:31;16222:399::o;11765:501::-;7131:6;;-1:-1:-1;;;;;7131:6:0;226:10;7131:22;7123:51;;;;-1:-1:-1;;;7123:51:0;;;;;;;:::i;:::-;11836:29:::1;11887:9;11836:61;;11908:16;11945:10;-1:-1:-1::0;;;;;11945:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11927:47:0::1;;11983:4;11990:10;-1:-1:-1::0;;;;;11990:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11927:81;::::0;-1:-1:-1;;;;;;11927:81:0::1;::::0;;;;;;-1:-1:-1;;;;;14297:15:1;;;11927:81:0::1;::::0;::::1;14279:34:1::0;14349:15;;14329:18;;;14322:43;14214:18;;11927:81:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11908:100:::0;-1:-1:-1;;;;;;12023:22:0;::::1;12019:207;;12089:10;-1:-1:-1::0;;;;;12089:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12071:50:0::1;;12130:4;12137:10;-1:-1:-1::0;;;;;12137:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12071:84;::::0;-1:-1:-1;;;;;;12071:84:0::1;::::0;;;;;;-1:-1:-1;;;;;14297:15:1;;;12071:84:0::1;::::0;::::1;14279:34:1::0;14349:15;;14329:18;;;14322:43;14214:18;;12071:84:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12062:6;:93:::0;;-1:-1:-1;;;;;;12062:93:0::1;-1:-1:-1::0;;;;;12062:93:0;;;::::1;::::0;;;::::1;::::0;;12019:207:::1;;;12197:6;:17:::0;;-1:-1:-1;;;;;;12197:17:0::1;-1:-1:-1::0;;;;;12197:17:0;::::1;;::::0;;12019:207:::1;-1:-1:-1::0;12236:9:0::1;:22:::0;;-1:-1:-1;;;;;;12236:22:0::1;-1:-1:-1::0;;;;;12236:22:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;11765:501:0:o;17281:289::-;7131:6;;-1:-1:-1;;;;;7131:6:0;226:10;7131:22;7123:51;;;;-1:-1:-1;;;7123:51:0;;;;;;;:::i;:::-;17481:16:::1;17461;17451:7;;:26;;;;:::i;:::-;17450:47;;;;:::i;:::-;17434:13;:63:::0;17522:7:::1;::::0;17549:13;;17522:23:::1;::::0;17532:13;;17522:23:::1;:::i;:::-;17521:41;;;;:::i;:::-;17508:10;:54:::0;-1:-1:-1;;;;17281:289:0:o;10294:309::-;-1:-1:-1;;;;;10388:20:0;;10380:52;;;;-1:-1:-1;;;10380:52:0;;15853:2:1;10380:52:0;;;15835:21:1;15892:2;15872:18;;;15865:30;-1:-1:-1;;;15911:18:1;;;15904:49;15970:18;;10380:52:0;15651:343:1;10380:52:0;-1:-1:-1;;;;;10451:21:0;;10443:53;;;;-1:-1:-1;;;10443:53:0;;15853:2:1;10443:53:0;;;15835:21:1;15892:2;15872:18;;;15865:30;-1:-1:-1;;;15911:18:1;;;15904:49;15970:18;;10443:53:0;15651:343:1;10443:53:0;-1:-1:-1;;;;;10509:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;10562:33;;2242:25:1;;;10562:33:0;;2215:18:1;10562:33:0;;;;;;;10294:309;;;:::o;18734:2003::-;18813:4;-1:-1:-1;;;;;18838:18:0;;18830:51;;;;-1:-1:-1;;;18830:51:0;;16201:2:1;18830:51:0;;;16183:21:1;16240:2;16220:18;;;16213:30;-1:-1:-1;;;16259:18:1;;;16252:50;16319:18;;18830:51:0;15999:344:1;18830:51:0;-1:-1:-1;;;;;18900:16:0;;18892:49;;;;-1:-1:-1;;;18892:49:0;;16201:2:1;18892:49:0;;;16183:21:1;16240:2;16220:18;;;16213:30;-1:-1:-1;;;16259:18:1;;;16252:50;16319:18;;18892:49:0;15999:344:1;18892:49:0;18969:1;18960:6;:10;18952:31;;;;-1:-1:-1;;;18952:31:0;;16550:2:1;18952:31:0;;;16532:21:1;16589:1;16569:18;;;16562:29;-1:-1:-1;;;16607:18:1;;;16600:38;16655:18;;18952:31:0;16348:331:1;18952:31:0;-1:-1:-1;;;;;19003:18:0;;;;;;:14;:18;;;;;;;;19002:19;:44;;;;-1:-1:-1;;;;;;19026:20:0;;;;;;:14;:20;;;;;;;;19025:21;19002:44;18994:71;;;;-1:-1:-1;;;18994:71:0;;16886:2:1;18994:71:0;;;16868:21:1;16925:2;16905:18;;;16898:30;-1:-1:-1;;;16944:18:1;;;16937:45;16999:18;;18994:71:0;16684:339:1;18994:71:0;19079:20;19090:4;19096:2;19079:10;:20::i;:::-;19076:891;;;19120:15;;;;19116:373;;;-1:-1:-1;;;;;19160:13:0;;;;;;:7;:13;;;;;;;;19156:318;;;-1:-1:-1;;;;;19205:13:0;;;;;;:9;:13;;;;;;19222:12;19205:29;;19197:38;;;;;;-1:-1:-1;;;;;19258:13:0;;;;;;:9;:13;;;;;19274:12;19258:28;;19156:318;;;-1:-1:-1;;;;;19365:15:0;;;;;;:9;:15;;;;;;19384:12;19365:31;;19357:40;;;;;;-1:-1:-1;;;;;19420:15:0;;;;;;:9;:15;;;;;19438:12;19420:30;;19156:318;-1:-1:-1;;;;;19508:41:0;;;;;;:35;:41;;;;;;;;;:84;;-1:-1:-1;;;;;;19553:39:0;;;;;;:35;:39;;;;;;;;19508:84;19503:439;;-1:-1:-1;;;;;19617:13:0;;;;;;:7;:13;;;;;;;;;:28;;-1:-1:-1;;;;;;19634:11:0;;;;;;:7;:11;;;;;;;;19617:28;19614:130;;;19683:12;;19673:6;:22;;19665:59;;;;-1:-1:-1;;;19665:59:0;;17230:2:1;19665:59:0;;;17212:21:1;17269:2;17249:18;;;17242:30;17308:26;17288:18;;;17281:54;17352:18;;19665:59:0;17028:348:1;19665:59:0;-1:-1:-1;;;;;19765:20:0;;5690:42;19765:20;;;;:36;;-1:-1:-1;;;;;;19790:11:0;;;;;;:7;:11;;;;;;;;19789:12;19765:36;19762:163;;;19860:14;;19850:6;19834:13;19844:2;19834:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;19826:79;;;;-1:-1:-1;;;19826:79:0;;17583:2:1;19826:79:0;;;17565:21:1;17622:2;17602:18;;;17595:30;17661:28;17641:18;;;17634:56;17707:18;;19826:79:0;17381:350:1;19826:79:0;-1:-1:-1;;;;;19983:11:0;;;;;;:7;:11;;;;;;:16;;19979:79;;-1:-1:-1;;;;;20016:12:0;;;;;;:8;:12;;;;;20031:15;20016:30;;19979:79;-1:-1:-1;;;;;20103:25:0;;20070:12;20103:25;;;:19;:25;;;;;;20085:4;;20103:25;;;:52;;-1:-1:-1;;;;;;20132:23:0;;;;;;:19;:23;;;;;;;;20103:52;20100:98;;;-1:-1:-1;20181:5:0;20100:98;-1:-1:-1;;;;;20214:11:0;;;;;;:7;:11;;;;;;;;20210:457;;;20247:16;;-1:-1:-1;;;20247:16:0;;;;20246:17;:59;;;;-1:-1:-1;20284:21:0;;-1:-1:-1;;;20284:21:0;;;;20246:59;20242:408;;;20340:28;20371:24;20389:4;20371:9;:24::i;:::-;20340:55;;20442:13;;20418:20;:37;20414:221;;20507:10;;20483:20;:34;20480:77;;-1:-1:-1;20544:10:0;;20480:77;20579:36;20594:20;20579:14;:36::i;:::-;20321:329;20242:408;20685:44;20703:4;20709:2;20713:6;20721:7;20685:17;:44::i;:::-;20678:51;18734:2003;-1:-1:-1;;;;;18734:2003:0:o;12692:150::-;12766:13;;:18;12757:38;;;;-1:-1:-1;;;12757:38:0;;17938:2:1;12757:38:0;;;17920:21:1;17977:1;17957:18;;;17950:29;-1:-1:-1;;;17995:18:1;;;17988:36;18041:18;;12757:38:0;17736:329:1;12757:38:0;12806:13;:28;12692:150::o;18403:323::-;18471:4;7914:6;;-1:-1:-1;;;;;18495:15:0;;;7914:6;;18495:15;;;;:45;;-1:-1:-1;7887:7:0;7914:6;-1:-1:-1;;;;;18527:13:0;;;7914:6;;18527:13;;18495:45;:84;;;;-1:-1:-1;;;;;;18558:21:0;;;;;;:17;:21;;;;;;;;18557:22;18495:84;:125;;;;-1:-1:-1;;;;;;18597:23:0;;;;;;:17;:23;;;;;;;;18596:24;18495:125;:152;;;;-1:-1:-1;;;;;;18637:10:0;;5776:42;18637:10;;18495:152;:185;;;;-1:-1:-1;;;;;;18664:16:0;;;;18495:185;:223;;;;-1:-1:-1;;;;;;18697:21:0;;18713:4;18697:21;;18495:223;18488:230;18403:323;-1:-1:-1;;;18403:323:0:o;20745:1476::-;7005:16;:23;;-1:-1:-1;;;;7005:23:0;-1:-1:-1;;;7005:23:0;;;20853:16;;:6:::1;20834:16:::0;:35:::1;::::0;20853:16;20834:35:::1;:::i;:::-;20830:66:::0;20889:7:::1;20830:66;21029:15:::0;;21010:16;;20991;;21029:6:::1;20972:16:::0;20906:17:::1;::::0;21050:1:::1;::::0;21029:15;;21010:16;;20972:35:::1;::::0;20991:16;20972:35:::1;:::i;:::-;:54;;;;:::i;:::-;:72;;;;:::i;:::-;20951:6;:16:::0;20928:39:::1;::::0;:20;:39:::1;:::i;:::-;20927:118;;;;:::i;:::-;20926:125;;;;:::i;:::-;20906:145:::0;-1:-1:-1;21064:20:0::1;21087:32;20906:145:::0;21087:20;:32:::1;:::i;:::-;21064:55;;21130:30;21147:12;21130:16;:30::i;:::-;21354:15:::0;;21335:16;;21316;;21354:6:::1;21297:16:::0;21198:21:::1;::::0;21173:22:::1;::::0;21375:1:::1;::::0;21354:15;;21335:16;;21297:35:::1;::::0;::::1;:::i;:::-;:54;;;;:::i;:::-;:72;;;;:::i;:::-;21276:6;:16:::0;21259:33:::1;::::0;:14;:33:::1;:::i;:::-;21258:112;;;;:::i;:::-;21257:119;;;;:::i;:::-;21230:146:::0;-1:-1:-1;21395:13:0;;21391:161:::1;;21425:41;21438:9;21449:16;21425:12;:41::i;:::-;21486:54;::::0;;3383:25:1;;;3439:2;3424:18;;3417:34;;;3467:18;;;3460:34;;;21486:54:0::1;::::0;3371:2:1;3356:18;21486:54:0::1;;;;;;;21391:161;21566:21;:25:::0;21562:652:::1;;21799:15:::0;;21780:16;;21761;;21623:4:::1;::::0;21663:21:::1;::::0;21608:12:::1;::::0;21761:35:::1;::::0;21780:16;21761:35:::1;:::i;:::-;:53;;;;:::i;:::-;21740:16:::0;;21727:29:::1;::::0;:10;:29:::1;:::i;:::-;21726:89;;;;:::i;:::-;21929:15:::0;;21910:16;;21891;;21699:117;;-1:-1:-1;21831:22:0::1;::::0;21891:35:::1;::::0;21910:16;21891:35:::1;:::i;:::-;:53;;;;:::i;:::-;21871:15:::0;;21858:28:::1;::::0;:10;:28:::1;:::i;:::-;21857:88;;;;:::i;:::-;21982:16;::::0;21974:58:::1;::::0;21831:115;;-1:-1:-1;;;;;;21982:16:0::1;::::0;22012:15;;21974:58:::1;::::0;;;22012:15;21982:16;21974:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;22068:15:0::1;::::0;22060:56:::1;::::0;21961:71;;-1:-1:-1;;;;;;22068:15:0::1;::::0;22097:14;;22060:56:::1;::::0;;;22097:14;22068:15;22060:56:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;22152:10:0::1;::::0;22144:58:::1;::::0;22047:69;;-1:-1:-1;;;;;;22152:10:0::1;::::0;22176:21:::1;::::0;22144:58:::1;::::0;;;22176:21;22152:10;22144:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;21562:652:0::1;20819:1402;;;;7039:1;-1:-1:-1::0;7051:16:0;:24;;-1:-1:-1;;;;7051:24:0;;;20745:1476::o;23491:582::-;23613:16;;23591:4;;23613:16;;23608:221;;23646:28;23665:4;23671:2;23646:18;:28::i;:::-;23694:16;;;;23693:17;:41;;;;;23714:20;23725:4;23731:2;23714:10;:20::i;:::-;23689:129;;;23755:47;;-1:-1:-1;;;23755:47:0;;18482:2:1;23755:47:0;;;18464:21:1;18521:2;18501:18;;;18494:30;18560:34;18540:18;;;18533:62;-1:-1:-1;;;18611:18:1;;;18604:35;18656:19;;23755:47:0;18280:401:1;23689:129:0;-1:-1:-1;;;;;23840:13:0;;;;;;:7;:13;;;;;:23;;23857:6;;23840:13;:23;;23857:6;;23840:23;:::i;:::-;;;;-1:-1:-1;23874:22:0;;-1:-1:-1;23900:7:0;23899:48;;23941:6;23899:48;;;23911:27;23921:4;23927:2;23931:6;23911:9;:27::i;:::-;-1:-1:-1;;;;;23962:11:0;;;;;;:7;:11;;;;;:29;;23874:73;;-1:-1:-1;23874:73:0;;23962:11;;;:29;;23874:73;;23962:29;:::i;:::-;;;;;;;;24024:2;-1:-1:-1;;;;;24009:34:0;24018:4;-1:-1:-1;;;;;24009:34:0;;24028:14;24009:34;;;;2242:25:1;;2230:2;2215:18;;2096:177;24009:34:0;;;;;;;;-1:-1:-1;24061:4:0;;23491:582;-1:-1:-1;;;;;23491:582:0:o;22229:417::-;22320:16;;;22334:1;22320:16;;;;;;;;22296:21;;22320:16;;;;;;;;;;-1:-1:-1;22320:16:0;22296:40;;22365:4;22347;22352:1;22347:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22347:23:0;;;:7;;;;;;;;;;:23;;;;22391:9;;:16;;;-1:-1:-1;;;22391:16:0;;;;:9;;;;;:14;;:16;;;;;22347:7;;22391:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22381:4;22386:1;22381:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22381:26:0;;;:7;;;;;;;;;:26;22420:9;;:218;;-1:-1:-1;;;22420:218:0;;:9;;;:60;;:218;;22495:11;;22420:9;;22565:4;;22592;;22612:15;;22420:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22285:361;22229:417;:::o;22654:335::-;22735:9;;-1:-1:-1;;;;;22735:9:0;:25;22768:9;22801:4;22821:11;22735:9;;22933:7;7887;7914:6;-1:-1:-1;;;;;7914:6:0;;7849:79;22933:7;22955:15;22735:246;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22654:335;;:::o;22997:486::-;23079:16;;;;23078:17;23070:65;;;;-1:-1:-1;;;23070:65:0;;19873:2:1;23070:65:0;;;19855:21:1;19912:2;19892:18;;;19885:30;19951:34;19931:18;;;19924:62;-1:-1:-1;;;20002:18:1;;;19995:33;20045:19;;23070:65:0;19671:399:1;23070:65:0;23151:20;23162:4;23168:2;23151:10;:20::i;:::-;23150:21;:37;;;;-1:-1:-1;23181:6:0;;-1:-1:-1;;;;;23175:12:0;;;23181:6;;23175:12;23150:37;23146:330;;;23223:12;23208;:27;-1:-1:-1;;;;;23252:23:0;;;;;;:17;:23;;;;;;;;;:30;;-1:-1:-1;;23252:30:0;;;23278:4;23252:30;;;;;;23297:16;:23;;;;;;;;;23350:15;23335:12;:30;23382:21;:28;;-1:-1:-1;;;;23382:28:0;-1:-1:-1;;;23382:28:0;;;23430:34;;1654:41:1;;;23430:34:0;;1627:18:1;23430:34:0;;;;;;;22997:486;;:::o;24081:689::-;24221:6;;24160:7;;;;-1:-1:-1;;;;;24221:6:0;;;24215:12;;;;24211:187;;-1:-1:-1;24255:12:0;;24211:187;;;24313:6;;-1:-1:-1;;;;;24313:6:0;;;24305:14;;;;24301:97;;-1:-1:-1;24335:4:0;:11;24301:97;;;-1:-1:-1;24380:16:0;;24301:97;24414:20;24425:4;24431:2;24414:10;:20::i;:::-;24410:142;;;24454:13;;:18;;:42;;;24476:13;;24494:1;24476:20;;24454:42;24450:91;;;24517:8;;;24450:91;24562:17;5382:5;24583:19;24592:10;24583:6;:19;:::i;:::-;:38;;;;:::i;:::-;24649:4;24633:22;;;;:7;:22;;;;;:37;;24562:60;;-1:-1:-1;24562:60:0;;24633:22;;;:37;;24562:60;;24633:37;:::i;:::-;;;;-1:-1:-1;;24686:40:0;;2242:25:1;;;24709:4:0;;-1:-1:-1;;;;;24686:40:0;;;;;2230:2:1;2215:18;24686:40:0;;;;;;;24744:18;24753:9;24744:6;:18;:::i;:::-;24737:25;24081:689;-1:-1:-1;;;;;;24081:689:0:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;222:597:1;334:4;363:2;392;381:9;374:21;424:6;418:13;467:6;462:2;451:9;447:18;440:34;492:1;502:140;516:6;513:1;510:13;502:140;;;611:14;;;607:23;;601:30;577:17;;;596:2;573:26;566:66;531:10;;502:140;;;660:6;657:1;654:13;651:91;;;730:1;725:2;716:6;705:9;701:22;697:31;690:42;651:91;-1:-1:-1;803:2:1;782:15;-1:-1:-1;;778:29:1;763:45;;;;810:2;759:54;;222:597;-1:-1:-1;;;222:597:1:o;1058:131::-;-1:-1:-1;;;;;1133:31:1;;1123:42;;1113:70;;1179:1;1176;1169:12;1113:70;1058:131;:::o;1194:315::-;1262:6;1270;1323:2;1311:9;1302:7;1298:23;1294:32;1291:52;;;1339:1;1336;1329:12;1291:52;1378:9;1365:23;1397:31;1422:5;1397:31;:::i;:::-;1447:5;1499:2;1484:18;;;;1471:32;;-1:-1:-1;;;1194:315:1:o;1706:385::-;1792:6;1800;1808;1816;1869:3;1857:9;1848:7;1844:23;1840:33;1837:53;;;1886:1;1883;1876:12;1837:53;-1:-1:-1;;1909:23:1;;;1979:2;1964:18;;1951:32;;-1:-1:-1;2030:2:1;2015:18;;2002:32;;2081:2;2066:18;2053:32;;-1:-1:-1;1706:385:1;-1:-1:-1;1706:385:1:o;2278:456::-;2355:6;2363;2371;2424:2;2412:9;2403:7;2399:23;2395:32;2392:52;;;2440:1;2437;2430:12;2392:52;2479:9;2466:23;2498:31;2523:5;2498:31;:::i;:::-;2548:5;-1:-1:-1;2605:2:1;2590:18;;2577:32;2618:33;2577:32;2618:33;:::i;:::-;2278:456;;2670:7;;-1:-1:-1;;;2724:2:1;2709:18;;;;2696:32;;2278:456::o;2739:248::-;2807:6;2815;2868:2;2856:9;2847:7;2843:23;2839:32;2836:52;;;2884:1;2881;2874:12;2836:52;-1:-1:-1;;2907:23:1;;;2977:2;2962:18;;;2949:32;;-1:-1:-1;2739:248:1:o;3505:247::-;3564:6;3617:2;3605:9;3596:7;3592:23;3588:32;3585:52;;;3633:1;3630;3623:12;3585:52;3672:9;3659:23;3691:31;3716:5;3691:31;:::i;3757:160::-;3822:20;;3878:13;;3871:21;3861:32;;3851:60;;3907:1;3904;3897:12;3851:60;3757:160;;;:::o;3922:315::-;3987:6;3995;4048:2;4036:9;4027:7;4023:23;4019:32;4016:52;;;4064:1;4061;4054:12;4016:52;4103:9;4090:23;4122:31;4147:5;4122:31;:::i;:::-;4172:5;-1:-1:-1;4196:35:1;4227:2;4212:18;;4196:35;:::i;:::-;4186:45;;3922:315;;;;;:::o;4242:553::-;4343:6;4351;4359;4412:2;4400:9;4391:7;4387:23;4383:32;4380:52;;;4428:1;4425;4418:12;4380:52;4467:9;4454:23;4486:31;4511:5;4486:31;:::i;:::-;4536:5;-1:-1:-1;4593:2:1;4578:18;;4565:32;4606:33;4565:32;4606:33;:::i;:::-;4658:7;-1:-1:-1;4717:2:1;4702:18;;4689:32;4730:33;4689:32;4730:33;:::i;:::-;4782:7;4772:17;;;4242:553;;;;;:::o;4800:127::-;4861:10;4856:3;4852:20;4849:1;4842:31;4892:4;4889:1;4882:15;4916:4;4913:1;4906:15;4932:275;5003:2;4997:9;5068:2;5049:13;;-1:-1:-1;;5045:27:1;5033:40;;5103:18;5088:34;;5124:22;;;5085:62;5082:88;;;5150:18;;:::i;:::-;5186:2;5179:22;4932:275;;-1:-1:-1;4932:275:1:o;5212:1091::-;5302:6;5310;5363:2;5351:9;5342:7;5338:23;5334:32;5331:52;;;5379:1;5376;5369:12;5331:52;5419:9;5406:23;5448:18;5489:2;5481:6;5478:14;5475:34;;;5505:1;5502;5495:12;5475:34;5543:6;5532:9;5528:22;5518:32;;5588:7;5581:4;5577:2;5573:13;5569:27;5559:55;;5610:1;5607;5600:12;5559:55;5646:2;5633:16;5668:4;5691:2;5687;5684:10;5681:36;;;5697:18;;:::i;:::-;5743:2;5740:1;5736:10;5726:20;;5766:28;5790:2;5786;5782:11;5766:28;:::i;:::-;5828:15;;;5898:11;;;5894:20;;;5859:12;;;;5926:19;;;5923:39;;;5958:1;5955;5948:12;5923:39;5982:11;;;;6002:217;6018:6;6013:3;6010:15;6002:217;;;6098:3;6085:17;6072:30;;6115:31;6140:5;6115:31;:::i;:::-;6159:18;;;6035:12;;;;6197;;;;6002:217;;;6238:5;-1:-1:-1;6262:35:1;;-1:-1:-1;6278:18:1;;;6262:35;:::i;:::-;6252:45;;;;;;5212:1091;;;;;:::o;6704:180::-;6760:6;6813:2;6801:9;6792:7;6788:23;6784:32;6781:52;;;6829:1;6826;6819:12;6781:52;6852:26;6868:9;6852:26;:::i;6889:531::-;6932:5;6985:3;6978:4;6970:6;6966:17;6962:27;6952:55;;7003:1;7000;6993:12;6952:55;7039:6;7026:20;7065:18;7061:2;7058:26;7055:52;;;7087:18;;:::i;:::-;7131:55;7174:2;7155:13;;-1:-1:-1;;7151:27:1;7180:4;7147:38;7131:55;:::i;:::-;7211:2;7202:7;7195:19;7257:3;7250:4;7245:2;7237:6;7233:15;7229:26;7226:35;7223:55;;;7274:1;7271;7264:12;7223:55;7339:2;7332:4;7324:6;7320:17;7313:4;7304:7;7300:18;7287:55;7387:1;7362:16;;;7380:4;7358:27;7351:38;;;;7366:7;6889:531;-1:-1:-1;;;6889:531:1:o;7425:611::-;7522:6;7530;7538;7591:2;7579:9;7570:7;7566:23;7562:32;7559:52;;;7607:1;7604;7597:12;7559:52;7647:9;7634:23;7676:18;7717:2;7709:6;7706:14;7703:34;;;7733:1;7730;7723:12;7703:34;7756:50;7798:7;7789:6;7778:9;7774:22;7756:50;:::i;:::-;7746:60;;7859:2;7848:9;7844:18;7831:32;7815:48;;7888:2;7878:8;7875:16;7872:36;;;7904:1;7901;7894:12;7872:36;;7927:52;7971:7;7960:8;7949:9;7945:24;7927:52;:::i;:::-;7917:62;;;8026:2;8015:9;8011:18;7998:32;7988:42;;7425:611;;;;;:::o;8041:388::-;8109:6;8117;8170:2;8158:9;8149:7;8145:23;8141:32;8138:52;;;8186:1;8183;8176:12;8138:52;8225:9;8212:23;8244:31;8269:5;8244:31;:::i;:::-;8294:5;-1:-1:-1;8351:2:1;8336:18;;8323:32;8364:33;8323:32;8364:33;:::i;:::-;8416:7;8406:17;;;8041:388;;;;;:::o;8434:316::-;8511:6;8519;8527;8580:2;8568:9;8559:7;8555:23;8551:32;8548:52;;;8596:1;8593;8586:12;8548:52;-1:-1:-1;;8619:23:1;;;8689:2;8674:18;;8661:32;;-1:-1:-1;8740:2:1;8725:18;;;8712:32;;8434:316;-1:-1:-1;8434:316:1:o;8755:380::-;8834:1;8830:12;;;;8877;;;8898:61;;8952:4;8944:6;8940:17;8930:27;;8898:61;9005:2;8997:6;8994:14;8974:18;8971:38;8968:161;;9051:10;9046:3;9042:20;9039:1;9032:31;9086:4;9083:1;9076:15;9114:4;9111:1;9104:15;8968:161;;8755:380;;;:::o;9140:340::-;9342:2;9324:21;;;9381:2;9361:18;;;9354:30;-1:-1:-1;;;9415:2:1;9400:18;;9393:46;9471:2;9456:18;;9140:340::o;9485:127::-;9546:10;9541:3;9537:20;9534:1;9527:31;9577:4;9574:1;9567:15;9601:4;9598:1;9591:15;9617:128;9657:3;9688:1;9684:6;9681:1;9678:13;9675:39;;;9694:18;;:::i;:::-;-1:-1:-1;9730:9:1;;9617:128::o;10090:125::-;10130:4;10158:1;10155;10152:8;10149:34;;;10163:18;;:::i;:::-;-1:-1:-1;10200:9:1;;10090:125::o;10220:168::-;10260:7;10326:1;10322;10318:6;10314:14;10311:1;10308:21;10303:1;10296:9;10289:17;10285:45;10282:71;;;10333:18;;:::i;:::-;-1:-1:-1;10373:9:1;;10220:168::o;10393:217::-;10433:1;10459;10449:132;;10503:10;10498:3;10494:20;10491:1;10484:31;10538:4;10535:1;10528:15;10566:4;10563:1;10556:15;10449:132;-1:-1:-1;10595:9:1;;10393:217::o;10615:401::-;10817:2;10799:21;;;10856:2;10836:18;;;10829:30;10895:34;10890:2;10875:18;;10868:62;-1:-1:-1;;;10961:2:1;10946:18;;10939:35;11006:3;10991:19;;10615:401::o;11021:425::-;11223:2;11205:21;;;11262:2;11242:18;;;11235:30;11301:34;11296:2;11281:18;;11274:62;11372:31;11367:2;11352:18;;11345:59;11436:3;11421:19;;11021:425::o;11798:127::-;11859:10;11854:3;11850:20;11847:1;11840:31;11890:4;11887:1;11880:15;11914:4;11911:1;11904:15;11930:135;11969:3;11990:17;;;11987:43;;12010:18;;:::i;:::-;-1:-1:-1;12057:1:1;12046:13;;11930:135::o;12428:422::-;12517:1;12560:5;12517:1;12574:270;12595:7;12585:8;12582:21;12574:270;;;12654:4;12650:1;12646:6;12642:17;12636:4;12633:27;12630:53;;;12663:18;;:::i;:::-;12713:7;12703:8;12699:22;12696:55;;;12733:16;;;;12696:55;12812:22;;;;12772:15;;;;12574:270;;;12578:3;12428:422;;;;;:::o;12855:806::-;12904:5;12934:8;12924:80;;-1:-1:-1;12975:1:1;12989:5;;12924:80;13023:4;13013:76;;-1:-1:-1;13060:1:1;13074:5;;13013:76;13105:4;13123:1;13118:59;;;;13191:1;13186:130;;;;13098:218;;13118:59;13148:1;13139:10;;13162:5;;;13186:130;13223:3;13213:8;13210:17;13207:43;;;13230:18;;:::i;:::-;-1:-1:-1;;13286:1:1;13272:16;;13301:5;;13098:218;;13400:2;13390:8;13387:16;13381:3;13375:4;13372:13;13368:36;13362:2;13352:8;13349:16;13344:2;13338:4;13335:12;13331:35;13328:77;13325:159;;;-1:-1:-1;13437:19:1;;;13469:5;;13325:159;13516:34;13541:8;13535:4;13516:34;:::i;:::-;13586:6;13582:1;13578:6;13574:19;13565:7;13562:32;13559:58;;;13597:18;;:::i;:::-;13635:20;;12855:806;-1:-1:-1;;;12855:806:1:o;13666:140::-;13724:5;13753:47;13794:4;13784:8;13780:19;13774:4;13753:47;:::i;13811:251::-;13881:6;13934:2;13922:9;13913:7;13909:23;13905:32;13902:52;;;13950:1;13947;13940:12;13902:52;13982:9;13976:16;14001:31;14026:5;14001:31;:::i;14376:607::-;-1:-1:-1;;;;;14735:15:1;;;14717:34;;14782:2;14767:18;;14760:34;;;;14825:2;14810:18;;14803:34;;;;14868:2;14853:18;;14846:34;;;;14917:15;;;14911:3;14896:19;;14889:44;14697:3;14949:19;;14942:35;;;;14666:3;14651:19;;14376:607::o;14988:306::-;15076:6;15084;15092;15145:2;15133:9;15124:7;15120:23;15116:32;15113:52;;;15161:1;15158;15151:12;15113:52;15190:9;15184:16;15174:26;;15240:2;15229:9;15225:18;15219:25;15209:35;;15284:2;15273:9;15269:18;15263:25;15253:35;;14988:306;;;;;:::o;18686:980::-;18948:4;18996:3;18985:9;18981:19;19027:6;19016:9;19009:25;19053:2;19091:6;19086:2;19075:9;19071:18;19064:34;19134:3;19129:2;19118:9;19114:18;19107:31;19158:6;19193;19187:13;19224:6;19216;19209:22;19262:3;19251:9;19247:19;19240:26;;19301:2;19293:6;19289:15;19275:29;;19322:1;19332:195;19346:6;19343:1;19340:13;19332:195;;;19411:13;;-1:-1:-1;;;;;19407:39:1;19395:52;;19502:15;;;;19467:12;;;;19443:1;19361:9;19332:195;;;-1:-1:-1;;;;;;;19583:32:1;;;;19578:2;19563:18;;19556:60;-1:-1:-1;;;19647:3:1;19632:19;19625:35;19544:3;18686:980;-1:-1:-1;;;18686:980:1:o

Swarm Source

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