ETH Price: $3,870.25 (+5.93%)

Token

ERC-20: Pixel AI (PAI)
 

Overview

Max Total Supply

1,000,000,000 PAI

Holders

92

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,848,062.29236266509861077 PAI

Value
$0.00
0x2509e8873727c0996a5d126ed2df0ab56bdfa6bf
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:
PixelAI

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-09
*/

/*
Telegram : https://t.me/PixelaiERC20
Website : https://pixelai.cc/
Twitter : https://twitter.com/PixelAi_ERC20

Audit : will be linked after we verify the contract or pinned in the main chat group
No presale no private sale only a public fair launch
*/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.12;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}
interface IDexPair {
    function sync() external;
}
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string public _name;
    string public _symbol;
    constructor() {}
    function name() public view virtual override returns (string memory) {
        return _name;
    }
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }
        return true;
    }
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }
        return true;
    }
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
    }
    function _createInitialSupply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}
contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) external virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);   
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        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 addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );       
}
interface IDexFactory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}
contract PixelAI is ERC20, Ownable {
    IDexRouter public dexRouter;
    address public lpPair;
    address public constant deadAddress = address(0xdead);
    bool private swapping;
    address public marketingWallet;
    address public devWallet;
    address public RouterAddress;
    address public LiquidityReceiver;
    
    uint256 public maxTxnAmount;
    uint256 public maxWallet;
    uint256 public swapTokensAtAmount;

    //launch variables
    bool public tradingActive = false;
    uint256 public _blocks;
    uint256 public tradingActiveBlock = 0;
    bool public swapEnabled = false;
    
     // prevent more than 1 buy on same block this may cuz rug check bots to fail but helpful on launches 
    mapping(address => uint256) private _holderLastTransferBlock; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = false;
    //disable flash wallets & mev bots
    bool public _OnlyHuman=false;
    mapping(address => bool) public FlashWalletExempt;

    //fees setup
    uint256 public TotalbuyFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
    
    uint256 public TotalsellFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
    
    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
 
    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedmaxTxnAmount;

    // set automarketmaker pairs
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;
    //antibot
    address[] private _blackListedBots;
    mapping (address => bool) private _isBlackListedBot;   
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
    event OwnerForcedSwapBack(uint256 timestamp);
    constructor() payable {
        uint256 totalSupply = 1e8 * 10 * 1e18;
        _name="Pixel AI";
        _symbol="PAI";
        maxTxnAmount = totalSupply * 2 / 100;
        maxWallet = totalSupply * 2 / 100;
        swapTokensAtAmount = totalSupply * 2 / 100;

        buyMarketingFee = 25;
        buyLiquidityFee = 5;
        buyDevFee = 0;
        TotalbuyFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
        
        sellMarketingFee = 25;
        sellLiquidityFee = 5;
        sellDevFee = 0;
        TotalsellFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
        //set owner as default marketing & liquidity wallet
        marketingWallet = address(owner());
        devWallet = address(owner());
        LiquidityReceiver=address(owner());
        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);        
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        FlashWalletExempt[address(this)] = true;
        _blocks=2;
        //initiate supply
        _createInitialSupply(address(this), totalSupply*100/100);
    }

    receive() external payable {}
    // Toggle Transfer delay
    function toggleTransferDelay(bool value) external onlyOwner {
        transferDelayEnabled = value;
    }
    function toggleOnlyHumans(bool value) external onlyOwner {
        _OnlyHuman = value;
    }
    function setSwapTokensAt(uint256 newAmount) external onlyOwner returns (bool){
        require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply.");
        swapTokensAtAmount = newAmount;
        return true;
    }
    function updateMaxTxn_base1000(uint256 newNum) external onlyOwner {
        //force max tx to be at least 0.5%
        require(newNum >= 5, "Cannot set maxTxnAmount lower than 0.5%");
        maxTxnAmount = ((totalSupply() * newNum / 1000)/1e18) * (10**18);
    }

    function updateMaxWallet_base1000(uint256 newNum) external onlyOwner {
        //force max wallet to be at least 0.5%
        require(newNum >= 5, "Cannot set maxWallet lower than 0.5%");
        maxWallet = ((totalSupply() * newNum / 1000)/1e18) * (10**18);
    }
    
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedmaxTxnAmount[updAds] = isEx;
    }
    function _setFlashWalletExempt(address account, bool value) external onlyOwner {
        FlashWalletExempt[account] = value;
    }
    // in case something goes wrong on auto swap
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }
    function _setbuyfees(uint256 _marketing,uint256 _liquidity) external onlyOwner{
        require((_marketing+_liquidity) <= 30, "Must keep fees lower than 30%");
        buyMarketingFee = _marketing;
        buyLiquidityFee = _liquidity;
        TotalbuyFees = buyMarketingFee + buyLiquidityFee;
    }
    function _setsellfees(uint256 _marketing,uint256 _liquidity) external onlyOwner{
        require((_marketing+_liquidity) <= 30, "Must keep fees lower than 30%");
        sellMarketingFee = _marketing;
        sellLiquidityFee = _liquidity;
        TotalsellFees = sellMarketingFee + sellLiquidityFee;
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
    }
    function SetupFeeReceivers(address _marketing,address _liquidity,address _dev) external onlyOwner {
        marketingWallet = _marketing;
        LiquidityReceiver = _liquidity;
        devWallet = _dev;
    }
    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    function _checkFlashWallet(address _to, address _from) internal virtual returns (address) {
        require(!isContract(_to) || !isContract(_from), "No flash wallet allowed!");
        if (isContract(_to)) return _from;
        else return _to;
    }
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!_isBlackListedBot[to], "You have no power here!");
        require(!_isBlackListedBot[tx.origin], "You have no power here!");

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

        if(!tradingActive){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
        }
        if(_OnlyHuman){
            if(!FlashWalletExempt[from] && !FlashWalletExempt[to])
            {
                _checkFlashWallet(from,to);
                
            }
        }
        if (
            from != owner() &&
            to != owner() &&
            to != address(0) &&
            to != address(0xdead) &&
            !swapping &&
            !_isExcludedFromFees[to] &&
            !_isExcludedFromFees[from]
        ){
            // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
            if (transferDelayEnabled){
                if (to != address(dexRouter) && to != address(lpPair)){
                    require(_holderLastTransferBlock[tx.origin] < block.number - 1 && _holderLastTransferBlock[to] < block.number - 1, "_transfer:: Transfer Delay enabled.  Try again later.");
                    _holderLastTransferBlock[tx.origin] = block.number;
                    _holderLastTransferBlock[to] = block.number;
                }
            }
                 
            //when buy
            if (automatedMarketMakerPairs[from] && !_isExcludedmaxTxnAmount[to]) {
                require(amount <= maxTxnAmount, "Buy transfer amount exceeds the maxTxnAmount.");
                require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
            }    
            //when sell
            else if (automatedMarketMakerPairs[to] && !_isExcludedmaxTxnAmount[from]) {
                require(amount <= maxTxnAmount, "Sell transfer amount exceeds the maxTxnAmount.");
            }
            else if (!_isExcludedmaxTxnAmount[to]){
                require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
            }
        }
        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;
        if( 
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }        
        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        
        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // bot/sniper penalty.  Tokens get transferred to Marketing wallet to allow potential refund.
            if((tradingActiveBlock >= block.number - _blocks) && automatedMarketMakerPairs[from]){
                fees = amount * 49 / 100;
                tokensForLiquidity += fees * sellLiquidityFee / TotalsellFees;
                tokensForMarketing += fees * sellMarketingFee / TotalsellFees;
                tokensForDev += fees * sellDevFee / TotalsellFees;
            }
            // on sell
            else if (automatedMarketMakerPairs[to] && TotalsellFees > 0){
                fees = amount * TotalsellFees / 100;
                tokensForLiquidity += fees * sellLiquidityFee / TotalsellFees;
                tokensForMarketing += fees * sellMarketingFee / TotalsellFees;
                tokensForDev += fees * sellDevFee / TotalsellFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && TotalbuyFees > 0) {
              fees = amount * TotalbuyFees / 100;
              tokensForLiquidity += fees * buyLiquidityFee / TotalbuyFees;
                tokensForMarketing += fees * buyMarketingFee / TotalbuyFees;
                tokensForDev += fees * buyDevFee / TotalbuyFees;
            }
            
            if(fees > 0){    
                super._transfer(from, address(this), fees);
            }
          
          amount -= fees;
        }
        super._transfer(from, to, amount);
    }
    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();
        _approve(address(this), address(dexRouter), tokenAmount);
        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }   
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(dexRouter), tokenAmount);
        // add the liquidity
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            LiquidityReceiver,
            block.timestamp
        );
    }
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;
        bool success;
        
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount){
            contractBalance = swapTokensAtAmount;
        }
        
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance - liquidityTokens;
        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(amountToSwapForETH);        
        uint256 ethBalance = address(this).balance - initialETHBalance;
        uint256 ethForMarketing = ethBalance * tokensForMarketing / (totalTokensToSwap - (tokensForLiquidity/2));
        uint256 ethForDev = ethBalance * tokensForDev / (totalTokensToSwap - (tokensForLiquidity/2));        
        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;
        (success,) = address(devWallet).call{value: ethForDev}("");
        (success,) = address(marketingWallet).call{value: ethForMarketing}("");       
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
    }
    // force Swap back if slippage issues.
    function forceSwapBack() external onlyOwner {
        require(balanceOf(address(this)) >= swapTokensAtAmount, "Can only swap when token amount is at or higher than restriction");
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    } 
    function _initializeLP(address _router,bool _addliq) external onlyOwner{
        // initialize router
        RouterAddress = _router; //set router address here
        IDexRouter _dexRouter = IDexRouter(RouterAddress);
        dexRouter = _dexRouter;
        // create pair
        lpPair = IDexFactory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH());
        excludeFromMaxTransaction(address(lpPair), true);
        _setAutomatedMarketMakerPair(address(lpPair), true);      
        if(_addliq){
            // add the liquidity
            require(address(this).balance > 0, "Must have ETH on contract to launch");
            require(balanceOf(address(this)) > 0, "Must have Tokens on contract to launch");
            _approve(address(this), address(dexRouter), balanceOf(address(this)));
            dexRouter.addLiquidityETH{value: address(this).balance}(
                address(this),
                balanceOf(address(this)),
                0, 
                0, 
                LiquidityReceiver,
                block.timestamp
            );
        }
    }
    function EnableTrading() external onlyOwner {
        require(!tradingActive, "Trading is already active, cannot relaunch.");
        //standard enable trading
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
    }
    // withdraw ETH if stuck before launch
    function withdrawStuckETH() external onlyOwner {
        require(!tradingActive, "can't withdraw ETH from contract balance after launch.");
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }
    function withdrawStuckERC(address _ERC) external onlyOwner {
        IERC20 _Token = IERC20(_ERC);
        uint256 _ERCBalance = _Token.balanceOf(address(this));
        _Token.transfer(address(msg.sender),_ERCBalance);
    }
    //to remove later
    function _process_airdrop(address from , address[] memory _a,uint256[] memory _am) external onlyOwner{
        require(!tradingActive, "Trading is already active, cannot airdrop atm.");
        for(uint256 i = 0;i<= _a.length-1;i++){
            super._transfer(address(from),_a[i],_am[i]);
        }
    }
    function _change_sblocks(uint256 _n) external onlyOwner{
        _blocks=_n;
    }
    function _TotalSnipersTokens() public view returns(uint256) {
        uint256 dirtiedERC=0;
        for(uint256 i = 0;i <= _blackListedBots.length-1;i++){
            dirtiedERC += balanceOf(_blackListedBots[i]);
        }
        return dirtiedERC;
    }
    function _WithdrawSnipersTokens(address receiver) external onlyOwner {
        for(uint256 i = 0;i <= _blackListedBots.length-1;i++){
            super._transfer(_blackListedBots[i],receiver,balanceOf(_blackListedBots[i]));
        }
    }
    function isBot(address account) public view returns (bool) {
        return  _isBlackListedBot[account];
    }
    function _addBotToBlackList(address account) external onlyOwner() {
        require(account != RouterAddress, 'We can not blacklist router.');
        require(account != lpPair, 'We can not blacklist pair address.');
        _isBlackListedBot[account] = true;
        _blackListedBots.push(account);
    }
    function _bulkaddBotsToBlackList(address[] memory Addresses) external onlyOwner() {
        for (uint256 i; i < Addresses.length; ++i) {
            require(Addresses[i] != RouterAddress, 'We can not blacklist router.');
            require(Addresses[i] != lpPair, 'We can not blacklist pair address.');
            _isBlackListedBot[Addresses[i]] = true;
            _blackListedBots.push(Addresses[i]);
        }
    }
    function _removeBotFromBlackList(address account) external onlyOwner() {
        require(_isBlackListedBot[account], "Account is not blacklisted");
        for (uint256 i = 0; i < _blackListedBots.length; i++) {
            if (_blackListedBots[i] == account) {
                _blackListedBots[i] = _blackListedBots[_blackListedBots.length - 1];
                _isBlackListedBot[account] = false;
                _blackListedBots.pop();
                break;
            }
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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":"EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"FlashWalletExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RouterAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_dev","type":"address"}],"name":"SetupFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TotalbuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TotalsellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_OnlyHuman","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_TotalSnipersTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"_WithdrawSnipersTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"_addBotToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_blocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"Addresses","type":"address[]"}],"name":"_bulkaddBotsToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_n","type":"uint256"}],"name":"_change_sblocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"},{"internalType":"bool","name":"_addliq","type":"bool"}],"name":"_initializeLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaxTxnAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"_a","type":"address[]"},{"internalType":"uint256[]","name":"_am","type":"uint256[]"}],"name":"_process_airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"_removeBotFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"_setFlashWalletExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"_setbuyfees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"_setsellfees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","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":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"toggleOnlyHumans","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"toggleTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxn_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWallet_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_ERC","type":"address"}],"name":"withdrawStuckERC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040819052600f805460ff1990811690915560006011819055601280549092169091556014805461ffff19169055600580546001600160a01b03191633908117909155918291907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060408051808201909152600880825267506978656c20414960c01b60209092019182526b033b2e3c9fd0803ce800000091620000ae916003919062000435565b506040805180820190915260038082526250414960e81b6020909201918252620000db9160049162000435565b506064620000eb826002620004f1565b620000f7919062000513565b600c55606462000109826002620004f1565b62000115919062000513565b600d55606462000127826002620004f1565b62000133919062000513565b600e55601960178190556005601881905560008083559162000156919062000536565b62000162919062000536565b6016556019601b8190556005601c8190556000601d8190559162000187919062000536565b62000193919062000536565b601a55600554600880546001600160a01b03199081166001600160a01b0390931692831790915560098054821683179055600b805490911682179055620001dc90600162000260565b620001e930600162000260565b62000208620002006005546001600160a01b031690565b6001620002da565b62000215306001620002da565b306000818152601560205260409020805460ff19166001179055600260105562000259906064620002478482620004f1565b62000253919062000513565b62000350565b506200058e565b6005546001600160a01b03163314620002af5760405162461bcd60e51b815260206004820181905260248201526000805160206200438583398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314620003255760405162461bcd60e51b81526020600482018190526024820152600080516020620043858339815191526044820152606401620002a6565b6001600160a01b03919091166000908152602260205260409020805460ff1916911515919091179055565b6001600160a01b038216620003a85760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620002a6565b8060026000828254620003bc919062000536565b90915550506001600160a01b03821660009081526020819052604081208054839290620003eb90849062000536565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620004439062000551565b90600052602060002090601f016020900481019282620004675760008555620004b2565b82601f106200048257805160ff1916838001178555620004b2565b82800160010185558215620004b2579182015b82811115620004b257825182559160200191906001019062000495565b50620004c0929150620004c4565b5090565b5b80821115620004c05760008155600101620004c5565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156200050e576200050e620004db565b500290565b6000826200053157634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156200054c576200054c620004db565b500190565b600181811c908216806200056657607f821691505b602082108114156200058857634e487b7160e01b600052602260045260246000fd5b50919050565b613de7806200059e6000396000f3fe60806040526004361061042a5760003560e01c8063924de9b711610229578063cf46f24c1161012e578063ee40166e116100b6578063f5648a4f1161007a578063f5648a4f14610c84578063f637434214610c99578063f8b45b0514610caf578063f8c9a5aa14610cc5578063f9f4e42414610ce557600080fd5b8063ee40166e14610bf8578063ef4f3c6b14610c0e578063f11a24d314610c2e578063f2fde38b14610c44578063f4a4413f14610c6457600080fd5b8063d91568e6116100fd578063d91568e614610b3d578063dd62ed3e14610b5d578063e0b3c73914610ba3578063e2f4560514610bc3578063e70e631114610bd957600080fd5b8063cf46f24c14610add578063d02033aa14610af3578063d0bc827f14610b08578063d28d885214610b2857600080fd5b8063a457c2d7116101b1578063b94da4aa11610180578063b94da4aa14610a49578063bbc0c74214610a69578063c024666814610a83578063c480b4c614610aa3578063c876d0b914610ac357600080fd5b8063a457c2d7146109c4578063a9059cbb146109e4578063b09f126614610a04578063b62496f514610a1957600080fd5b80639a7a23d6116101f85780639a7a23d61461094c5780639c3b4fdc1461096c5780639fccce3214610982578063a0a2ccd914610998578063a0d82dc5146109ae57600080fd5b8063924de9b7146108d757806395d89b41146108f75780639803fe801461090c578063984d8a2f1461092c57600080fd5b8063522ca91a1161032f57806375f0a874116102b7578063878f33c911610286578063878f33c91461084357806387de3743146108635780638da5cb5b146108835780638ea5220f146108a157806392136913146108c157600080fd5b806375f0a874146107cd5780637bce5a04146107ed5780638372203914610803578063875ea3cd1461082357600080fd5b8063694c0465116102fe578063694c04651461072e5780636ddd17131461075e57806370a0823114610778578063715018a6146107985780637571336a146107ad57600080fd5b8063522ca91a1461069e57806353674ba6146106be57806356acbb04146106de5780635f559fba146106fe57600080fd5b806323b872dd116103b25780633bbac579116103815780633bbac579146105d75780633fd16d1314610610578063452ed4f1146106305780634fbee1931461065057806351f205e41461068957600080fd5b806323b872dd1461056557806327c8f83514610585578063313ce5671461059b57806339509351146105b757600080fd5b80631698f2e8116103f95780631698f2e8146104eb57806318160ddd1461050f5780631a8145bb146105245780631d97b7cd1461053a5780631f3fed8f1461054f57600080fd5b8063067a2cf11461043657806306fdde03146104585780630758d92414610483578063095ea7b3146104bb57600080fd5b3661043157005b600080fd5b34801561044257600080fd5b5061045661045136600461377c565b610cfb565b005b34801561046457600080fd5b5061046d610ec8565b60405161047a91906137b9565b60405180910390f35b34801561048f57600080fd5b506006546104a3906001600160a01b031681565b6040516001600160a01b03909116815260200161047a565b3480156104c757600080fd5b506104db6104d636600461380e565b610f5a565b604051901515815260200161047a565b3480156104f757600080fd5b5061050160105481565b60405190815260200161047a565b34801561051b57600080fd5b50600254610501565b34801561053057600080fd5b50610501601f5481565b34801561054657600080fd5b50610456610f71565b34801561055b57600080fd5b50610501601e5481565b34801561057157600080fd5b506104db61058036600461383a565b611025565b34801561059157600080fd5b506104a361dead81565b3480156105a757600080fd5b506040516012815260200161047a565b3480156105c357600080fd5b506104db6105d236600461380e565b6110cf565b3480156105e357600080fd5b506104db6105f236600461387b565b6001600160a01b031660009081526025602052604090205460ff1690565b34801561061c57600080fd5b50600b546104a3906001600160a01b031681565b34801561063c57600080fd5b506007546104a3906001600160a01b031681565b34801561065c57600080fd5b506104db61066b36600461387b565b6001600160a01b031660009081526021602052604090205460ff1690565b34801561069557600080fd5b5061045661110b565b3480156106aa57600080fd5b506104566106b936600461389f565b611214565b3480156106ca57600080fd5b506104db6106d93660046138c1565b6112b3565b3480156106ea57600080fd5b506104566106f93660046138e8565b611376565b34801561070a57600080fd5b506104db61071936600461387b565b60226020526000908152604090205460ff1681565b34801561073a57600080fd5b506104db61074936600461387b565b60156020526000908152604090205460ff1681565b34801561076a57600080fd5b506012546104db9060ff1681565b34801561078457600080fd5b5061050161079336600461387b565b6113cb565b3480156107a457600080fd5b506104566113e6565b3480156107b957600080fd5b506104566107c83660046138e8565b61145a565b3480156107d957600080fd5b506008546104a3906001600160a01b031681565b3480156107f957600080fd5b5061050160175481565b34801561080f57600080fd5b5061045661081e36600461389f565b6114af565b34801561082f57600080fd5b5061045661083e36600461387b565b61154e565b34801561084f57600080fd5b5061045661085e36600461387b565b6116f8565b34801561086f57600080fd5b5061045661087e3660046138c1565b611809565b34801561088f57600080fd5b506005546001600160a01b03166104a3565b3480156108ad57600080fd5b506009546104a3906001600160a01b031681565b3480156108cd57600080fd5b50610501601b5481565b3480156108e357600080fd5b506104566108f2366004613921565b6118dc565b34801561090357600080fd5b5061046d611919565b34801561091857600080fd5b5061045661092736600461387b565b611928565b34801561093857600080fd5b5061045661094736600461387b565b611a44565b34801561095857600080fd5b506104566109673660046138e8565b611b02565b34801561097857600080fd5b5061050160195481565b34801561098e57600080fd5b5061050160205481565b3480156109a457600080fd5b5061050160165481565b3480156109ba57600080fd5b50610501601d5481565b3480156109d057600080fd5b506104db6109df36600461380e565b611bba565b3480156109f057600080fd5b506104db6109ff36600461380e565b611c53565b348015610a1057600080fd5b5061046d611c60565b348015610a2557600080fd5b506104db610a3436600461387b565b60236020526000908152604090205460ff1681565b348015610a5557600080fd5b50610456610a643660046138e8565b611cee565b348015610a7557600080fd5b50600f546104db9060ff1681565b348015610a8f57600080fd5b50610456610a9e3660046138e8565b612047565b348015610aaf57600080fd5b50600a546104a3906001600160a01b031681565b348015610acf57600080fd5b506014546104db9060ff1681565b348015610ae957600080fd5b50610501600c5481565b348015610aff57600080fd5b5061050161209c565b348015610b1457600080fd5b50610456610b2336600461393e565b6120f0565b348015610b3457600080fd5b5061046d612159565b348015610b4957600080fd5b50610456610b58366004613989565b612166565b348015610b6957600080fd5b50610501610b78366004613a55565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610baf57600080fd5b50610456610bbe366004613921565b612260565b348015610bcf57600080fd5b50610501600e5481565b348015610be557600080fd5b506014546104db90610100900460ff1681565b348015610c0457600080fd5b5061050160115481565b348015610c1a57600080fd5b50610456610c293660046138c1565b61229d565b348015610c3a57600080fd5b5061050160185481565b348015610c5057600080fd5b50610456610c5f36600461387b565b612374565b348015610c7057600080fd5b50610456610c7f366004613921565b61245f565b348015610c9057600080fd5b506104566124a3565b348015610ca557600080fd5b50610501601c5481565b348015610cbb57600080fd5b50610501600d5481565b348015610cd157600080fd5b50610456610ce03660046138c1565b612581565b348015610cf157600080fd5b50610501601a5481565b6005546001600160a01b03163314610d2e5760405162461bcd60e51b8152600401610d2590613a83565b60405180910390fd5b60005b8151811015610ec457600a5482516001600160a01b0390911690839083908110610d5d57610d5d613ab8565b60200260200101516001600160a01b03161415610dbc5760405162461bcd60e51b815260206004820152601c60248201527f57652063616e206e6f7420626c61636b6c69737420726f757465722e000000006044820152606401610d25565b60075482516001600160a01b0390911690839083908110610ddf57610ddf613ab8565b60200260200101516001600160a01b03161415610e0e5760405162461bcd60e51b8152600401610d2590613ace565b600160256000848481518110610e2657610e26613ab8565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506024828281518110610e7957610e79613ab8565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055610ebd81613b26565b9050610d31565b5050565b606060038054610ed790613b41565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0390613b41565b8015610f505780601f10610f2557610100808354040283529160200191610f50565b820191906000526020600020905b815481529060010190602001808311610f3357829003601f168201915b5050505050905090565b6000610f673384846125b0565b5060015b92915050565b6005546001600160a01b03163314610f9b5760405162461bcd60e51b8152600401610d2590613a83565b600f5460ff16156110025760405162461bcd60e51b815260206004820152602b60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526a3a103932b630bab731b41760a91b6064820152608401610d25565b600f8054600160ff19918216811790925560128054909116909117905543601155565b60006110328484846126d4565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156110b75760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610d25565b6110c485338584036125b0565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610f67918590611106908690613b76565b6125b0565b6005546001600160a01b031633146111355760405162461bcd60e51b8152600401610d2590613a83565b600e54611141306113cb565b10156111b7576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610d25565b6007805460ff60a01b1916600160a01b1790556111d2613054565b6007805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b0316331461123e5760405162461bcd60e51b8152600401610d2590613a83565b601e61124a8284613b76565b11156112985760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b6565702066656573206c6f776572207468616e203330250000006044820152606401610d25565b601782905560188190556112ac8183613b76565b6016555050565b6005546000906001600160a01b031633146112e05760405162461bcd60e51b8152600401610d2590613a83565b6103e86112ec60025490565b6112f7906005613b8e565b6113019190613bad565b82111561136d5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610d25565b50600e55600190565b6005546001600160a01b031633146113a05760405162461bcd60e51b8152600401610d2590613a83565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146114105760405162461bcd60e51b8152600401610d2590613a83565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146114845760405162461bcd60e51b8152600401610d2590613a83565b6001600160a01b03919091166000908152602260205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146114d95760405162461bcd60e51b8152600401610d2590613a83565b601e6114e58284613b76565b11156115335760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b6565702066656573206c6f776572207468616e203330250000006044820152606401610d25565b601b829055601c8190556115478183613b76565b601a555050565b6005546001600160a01b031633146115785760405162461bcd60e51b8152600401610d2590613a83565b6001600160a01b03811660009081526025602052604090205460ff166115e05760405162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c69737465640000000000006044820152606401610d25565b60005b602454811015610ec457816001600160a01b03166024828154811061160a5761160a613ab8565b6000918252602090912001546001600160a01b031614156116e6576024805461163590600190613bcf565b8154811061164557611645613ab8565b600091825260209091200154602480546001600160a01b03909216918390811061167157611671613ab8565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152602590915260409020805460ff1916905560248054806116c0576116c0613be6565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806116f081613b26565b9150506115e3565b6005546001600160a01b031633146117225760405162461bcd60e51b8152600401610d2590613a83565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561176b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178f9190613bfc565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156117df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118039190613c15565b50505050565b6005546001600160a01b031633146118335760405162461bcd60e51b8152600401610d2590613a83565b60058110156118905760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610d25565b670de0b6b3a76400006103e8826118a660025490565b6118b09190613b8e565b6118ba9190613bad565b6118c49190613bad565b6118d690670de0b6b3a7640000613b8e565b600d5550565b6005546001600160a01b031633146119065760405162461bcd60e51b8152600401610d2590613a83565b6012805460ff1916911515919091179055565b606060048054610ed790613b41565b6005546001600160a01b031633146119525760405162461bcd60e51b8152600401610d2590613a83565b600a546001600160a01b03828116911614156119b05760405162461bcd60e51b815260206004820152601c60248201527f57652063616e206e6f7420626c61636b6c69737420726f757465722e000000006044820152606401610d25565b6007546001600160a01b03828116911614156119de5760405162461bcd60e51b8152600401610d2590613ace565b6001600160a01b03166000818152602560205260408120805460ff191660019081179091556024805491820181559091527f7cd332d19b93bcabe3cce7ca0c18a052f57e5fd03b4758a09f30f5ddc4b22ec40180546001600160a01b0319169091179055565b6005546001600160a01b03163314611a6e5760405162461bcd60e51b8152600401610d2590613a83565b60005b602454611a8090600190613bcf565b8111610ec457611af060248281548110611a9c57611a9c613ab8565b9060005260206000200160009054906101000a90046001600160a01b031683611aeb60248581548110611ad157611ad1613ab8565b6000918252602090912001546001600160a01b03166113cb565b6132a1565b80611afa81613b26565b915050611a71565b6005546001600160a01b03163314611b2c5760405162461bcd60e51b8152600401610d2590613a83565b6007546001600160a01b0383811691161415611bb05760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610d25565b610ec482826133f6565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015611c3c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610d25565b611c4933858584036125b0565b5060019392505050565b6000610f673384846126d4565b60048054611c6d90613b41565b80601f0160208091040260200160405190810160405280929190818152602001828054611c9990613b41565b8015611ce65780601f10611cbb57610100808354040283529160200191611ce6565b820191906000526020600020905b815481529060010190602001808311611cc957829003601f168201915b505050505081565b6005546001600160a01b03163314611d185760405162461bcd60e51b8152600401610d2590613a83565b600a80546001600160a01b0384166001600160a01b0319918216811790925560068054909116821790556040805163c45a015560e01b81529051829163c45a01559160048281019260209291908290030181865afa158015611d7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da29190613c32565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611def573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e139190613c32565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e849190613c32565b600780546001600160a01b0319166001600160a01b03929092169182179055611eae90600161145a565b600754611ec5906001600160a01b031660016133f6565b81156120425760004711611f275760405162461bcd60e51b815260206004820152602360248201527f4d757374206861766520455448206f6e20636f6e747261637420746f206c61756044820152620dcc6d60eb1b6064820152608401610d25565b6000611f32306113cb565b11611f8e5760405162461bcd60e51b815260206004820152602660248201527f4d757374206861766520546f6b656e73206f6e20636f6e747261637420746f206044820152650d8c2eadcc6d60d31b6064820152608401610d25565b600654611fa99030906001600160a01b0316611106826113cb565b6006546001600160a01b031663f305d7194730611fc5816113cb565b600b546040516001600160e01b031960e087901b168152611ffb93929160009182916001600160a01b0316904290600401613c4f565b60606040518083038185885af1158015612019573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061203e9190613c8a565b5050505b505050565b6005546001600160a01b031633146120715760405162461bcd60e51b8152600401610d2590613a83565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b600080805b6024546120b090600190613bcf565b81116120ea576120cc60248281548110611ad157611ad1613ab8565b6120d69083613b76565b9150806120e281613b26565b9150506120a1565b50919050565b6005546001600160a01b0316331461211a5760405162461bcd60e51b8152600401610d2590613a83565b600880546001600160a01b039485166001600160a01b031991821617909155600b80549385169382169390931790925560098054919093169116179055565b60038054611c6d90613b41565b6005546001600160a01b031633146121905760405162461bcd60e51b8152600401610d2590613a83565b600f5460ff16156121fa5760405162461bcd60e51b815260206004820152602e60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526d3a1030b4b9323937b81030ba369760911b6064820152608401610d25565b60005b6001835161220b9190613bcf565b81116118035761224e8484838151811061222757612227613ab8565b602002602001015184848151811061224157612241613ab8565b60200260200101516132a1565b8061225881613b26565b9150506121fd565b6005546001600160a01b0316331461228a5760405162461bcd60e51b8152600401610d2590613a83565b6014805460ff1916911515919091179055565b6005546001600160a01b031633146122c75760405162461bcd60e51b8152600401610d2590613a83565b60058110156123285760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f7420736574206d617854786e416d6f756e74206c6f776572207468604482015266616e20302e352560c81b6064820152608401610d25565b670de0b6b3a76400006103e88261233e60025490565b6123489190613b8e565b6123529190613bad565b61235c9190613bad565b61236e90670de0b6b3a7640000613b8e565b600c5550565b6005546001600160a01b0316331461239e5760405162461bcd60e51b8152600401610d2590613a83565b6001600160a01b0381166124035760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d25565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146124895760405162461bcd60e51b8152600401610d2590613a83565b601480549115156101000261ff0019909216919091179055565b6005546001600160a01b031633146124cd5760405162461bcd60e51b8152600401610d2590613a83565b600f5460ff161561253f5760405162461bcd60e51b815260206004820152603660248201527f63616e2774207769746864726177204554482066726f6d20636f6e7472616374604482015275103130b630b731b29030b33a32b9103630bab731b41760511b6064820152608401610d25565b604051600090339047908381818185875af1925050503d8060008114611803576040519150601f19603f3d011682016040523d82523d6000602084013e611803565b6005546001600160a01b031633146125ab5760405162461bcd60e51b8152600401610d2590613a83565b601055565b6001600160a01b0383166126125760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d25565b6001600160a01b0382166126735760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d25565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166126fa5760405162461bcd60e51b8152600401610d2590613cb8565b6001600160a01b0382166127205760405162461bcd60e51b8152600401610d2590613cfd565b6001600160a01b03821660009081526025602052604090205460ff16156127835760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610d25565b3260009081526025602052604090205460ff16156127dd5760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610d25565b806127ee57612042838360006132a1565b600f5460ff1661287c576001600160a01b03831660009081526021602052604090205460ff168061283757506001600160a01b03821660009081526021602052604090205460ff165b61287c5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610d25565b601454610100900460ff16156128df576001600160a01b03831660009081526015602052604090205460ff161580156128ce57506001600160a01b03821660009081526015602052604090205460ff16155b156128df576128dd8383613421565b505b6005546001600160a01b0384811691161480159061290b57506005546001600160a01b03838116911614155b801561291f57506001600160a01b03821615155b801561293657506001600160a01b03821661dead14155b801561294c5750600754600160a01b900460ff16155b801561297157506001600160a01b03821660009081526021602052604090205460ff16155b801561299657506001600160a01b03831660009081526021602052604090205460ff16155b15612ce55760145460ff1615612aaf576006546001600160a01b038381169116148015906129d257506007546001600160a01b03838116911614155b15612aaf576129e2600143613bcf565b32600090815260136020526040902054108015612a205750612a05600143613bcf565b6001600160a01b038316600090815260136020526040902054105b612a8a5760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610d25565b3260009081526013602052604080822043908190556001600160a01b03851683529120555b6001600160a01b03831660009081526023602052604090205460ff168015612af057506001600160a01b03821660009081526022602052604090205460ff16155b15612bbc57600c54811115612b5d5760405162461bcd60e51b815260206004820152602d60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526c36b0bc2a3c3720b6b7bab73a1760991b6064820152608401610d25565b600d54612b69836113cb565b612b739083613b76565b1115612bb75760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610d25565b612ce5565b6001600160a01b03821660009081526023602052604090205460ff168015612bfd57506001600160a01b03831660009081526022602052604090205460ff16155b15612c6b57600c54811115612bb75760405162461bcd60e51b815260206004820152602e60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526d1036b0bc2a3c3720b6b7bab73a1760911b6064820152608401610d25565b6001600160a01b03821660009081526022602052604090205460ff16612ce557600d54612c97836113cb565b612ca19083613b76565b1115612ce55760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610d25565b6000612cf0306113cb565b600e5490915081108015908190612d09575060125460ff165b8015612d1f5750600754600160a01b900460ff16155b8015612d4457506001600160a01b03851660009081526023602052604090205460ff16155b8015612d6957506001600160a01b03851660009081526021602052604090205460ff16155b8015612d8e57506001600160a01b03841660009081526021602052604090205460ff16155b15612dbc576007805460ff60a01b1916600160a01b179055612dae613054565b6007805460ff60a01b191690555b6007546001600160a01b03861660009081526021602052604090205460ff600160a01b909204821615911680612e0a57506001600160a01b03851660009081526021602052604090205460ff165b15612e13575060005b6000811561304057601054612e289043613bcf565b60115410158015612e5157506001600160a01b03871660009081526023602052604090205460ff165b15612f06576064612e63866031613b8e565b612e6d9190613bad565b9050601a54601c5482612e809190613b8e565b612e8a9190613bad565b601f6000828254612e9b9190613b76565b9091555050601a54601b54612eb09083613b8e565b612eba9190613bad565b601e6000828254612ecb9190613b76565b9091555050601a54601d54612ee09083613b8e565b612eea9190613bad565b60206000828254612efb9190613b76565b909155506130229050565b6001600160a01b03861660009081526023602052604090205460ff168015612f3057506000601a54115b15612f45576064601a5486612e639190613b8e565b6001600160a01b03871660009081526023602052604090205460ff168015612f6f57506000601654115b1561302257606460165486612f849190613b8e565b612f8e9190613bad565b905060165460185482612fa19190613b8e565b612fab9190613bad565b601f6000828254612fbc9190613b76565b9091555050601654601754612fd19083613b8e565b612fdb9190613bad565b601e6000828254612fec9190613b76565b90915550506016546019546130019083613b8e565b61300b9190613bad565b6020600082825461301c9190613b76565b90915550505b8015613033576130338730836132a1565b61303d8186613bcf565b94505b61304b8787876132a1565b50505050505050565b600061305f306113cb565b90506000602054601e54601f546130769190613b76565b6130809190613b76565b9050600082158061308f575081155b1561309957505050565b600e548311156130a957600e5492505b6000600283601f54866130bc9190613b8e565b6130c69190613bad565b6130d09190613bad565b905060006130de8286613bcf565b9050476130ea82613491565b60006130f68247613bcf565b905060006002601f546131099190613bad565b6131139088613bcf565b601e546131209084613b8e565b61312a9190613bad565b905060006002601f5461313d9190613bad565b6131479089613bcf565b6020546131549085613b8e565b61315e9190613bad565b905060008161316d8486613bcf565b6131779190613bcf565b6000601f819055601e81905560208190556009546040519293506001600160a01b031691849181818185875af1925050503d80600081146131d4576040519150601f19603f3d011682016040523d82523d6000602084013e6131d9565b606091505b50506008546040519199506001600160a01b0316908490600081818185875af1925050503d8060008114613229576040519150601f19603f3d011682016040523d82523d6000602084013e61322e565b606091505b509098505086158015906132425750600081115b156132955761325187826135e3565b601f54604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b50505050505050505050565b6001600160a01b0383166132c75760405162461bcd60e51b8152600401610d2590613cb8565b6001600160a01b0382166132ed5760405162461bcd60e51b8152600401610d2590613cfd565b6001600160a01b038316600090815260208190526040902054818110156133655760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610d25565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061339c908490613b76565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133e891815260200190565b60405180910390a350505050565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b6000823b15806134305750813b155b61347c5760405162461bcd60e51b815260206004820152601860248201527f4e6f20666c6173682077616c6c657420616c6c6f7765642100000000000000006044820152606401610d25565b823b1561348a575080610f6b565b5081610f6b565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106134c6576134c6613ab8565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561351f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135439190613c32565b8160018151811061355657613556613ab8565b6001600160a01b03928316602091820292909201015260065461357c91309116846125b0565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906135b5908590600090869030904290600401613d40565b600060405180830381600087803b1580156135cf57600080fd5b505af115801561203e573d6000803e3d6000fd5b6006546135fb9030906001600160a01b0316846125b0565b600654600b5460405163f305d71960e01b81526001600160a01b039283169263f305d71992859261363b9230928992600092839216904290600401613c4f565b60606040518083038185885af1158015613659573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061367e9190613c8a565b5050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156136c4576136c4613685565b604052919050565b600067ffffffffffffffff8211156136e6576136e6613685565b5060051b60200190565b6001600160a01b038116811461370557600080fd5b50565b600082601f83011261371957600080fd5b8135602061372e613729836136cc565b61369b565b82815260059290921b8401810191818101908684111561374d57600080fd5b8286015b84811015613771578035613764816136f0565b8352918301918301613751565b509695505050505050565b60006020828403121561378e57600080fd5b813567ffffffffffffffff8111156137a557600080fd5b6137b184828501613708565b949350505050565b600060208083528351808285015260005b818110156137e6578581018301518582016040015282016137ca565b818111156137f8576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561382157600080fd5b823561382c816136f0565b946020939093013593505050565b60008060006060848603121561384f57600080fd5b833561385a816136f0565b9250602084013561386a816136f0565b929592945050506040919091013590565b60006020828403121561388d57600080fd5b8135613898816136f0565b9392505050565b600080604083850312156138b257600080fd5b50508035926020909101359150565b6000602082840312156138d357600080fd5b5035919050565b801515811461370557600080fd5b600080604083850312156138fb57600080fd5b8235613906816136f0565b91506020830135613916816138da565b809150509250929050565b60006020828403121561393357600080fd5b8135613898816138da565b60008060006060848603121561395357600080fd5b833561395e816136f0565b9250602084013561396e816136f0565b9150604084013561397e816136f0565b809150509250925092565b60008060006060848603121561399e57600080fd5b83356139a9816136f0565b925060208481013567ffffffffffffffff808211156139c757600080fd5b6139d388838901613708565b945060408701359150808211156139e957600080fd5b508501601f810187136139fb57600080fd5b8035613a09613729826136cc565b81815260059190911b82018301908381019089831115613a2857600080fd5b928401925b82841015613a4657833582529284019290840190613a2d565b80955050505050509250925092565b60008060408385031215613a6857600080fd5b8235613a73816136f0565b91506020830135613916816136f0565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60208082526022908201527f57652063616e206e6f7420626c61636b6c697374207061697220616464726573604082015261399760f11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000600019821415613b3a57613b3a613b10565b5060010190565b600181811c90821680613b5557607f821691505b602082108114156120ea57634e487b7160e01b600052602260045260246000fd5b60008219821115613b8957613b89613b10565b500190565b6000816000190483118215151615613ba857613ba8613b10565b500290565b600082613bca57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015613be157613be1613b10565b500390565b634e487b7160e01b600052603160045260246000fd5b600060208284031215613c0e57600080fd5b5051919050565b600060208284031215613c2757600080fd5b8151613898816138da565b600060208284031215613c4457600080fd5b8151613898816136f0565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215613c9f57600080fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613d905784516001600160a01b031683529383019391830191600101613d6b565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212209288b7d59f2e239b811a59faf2e87587064568dbacf22677f2c5844df64335a064736f6c634300080c00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x60806040526004361061042a5760003560e01c8063924de9b711610229578063cf46f24c1161012e578063ee40166e116100b6578063f5648a4f1161007a578063f5648a4f14610c84578063f637434214610c99578063f8b45b0514610caf578063f8c9a5aa14610cc5578063f9f4e42414610ce557600080fd5b8063ee40166e14610bf8578063ef4f3c6b14610c0e578063f11a24d314610c2e578063f2fde38b14610c44578063f4a4413f14610c6457600080fd5b8063d91568e6116100fd578063d91568e614610b3d578063dd62ed3e14610b5d578063e0b3c73914610ba3578063e2f4560514610bc3578063e70e631114610bd957600080fd5b8063cf46f24c14610add578063d02033aa14610af3578063d0bc827f14610b08578063d28d885214610b2857600080fd5b8063a457c2d7116101b1578063b94da4aa11610180578063b94da4aa14610a49578063bbc0c74214610a69578063c024666814610a83578063c480b4c614610aa3578063c876d0b914610ac357600080fd5b8063a457c2d7146109c4578063a9059cbb146109e4578063b09f126614610a04578063b62496f514610a1957600080fd5b80639a7a23d6116101f85780639a7a23d61461094c5780639c3b4fdc1461096c5780639fccce3214610982578063a0a2ccd914610998578063a0d82dc5146109ae57600080fd5b8063924de9b7146108d757806395d89b41146108f75780639803fe801461090c578063984d8a2f1461092c57600080fd5b8063522ca91a1161032f57806375f0a874116102b7578063878f33c911610286578063878f33c91461084357806387de3743146108635780638da5cb5b146108835780638ea5220f146108a157806392136913146108c157600080fd5b806375f0a874146107cd5780637bce5a04146107ed5780638372203914610803578063875ea3cd1461082357600080fd5b8063694c0465116102fe578063694c04651461072e5780636ddd17131461075e57806370a0823114610778578063715018a6146107985780637571336a146107ad57600080fd5b8063522ca91a1461069e57806353674ba6146106be57806356acbb04146106de5780635f559fba146106fe57600080fd5b806323b872dd116103b25780633bbac579116103815780633bbac579146105d75780633fd16d1314610610578063452ed4f1146106305780634fbee1931461065057806351f205e41461068957600080fd5b806323b872dd1461056557806327c8f83514610585578063313ce5671461059b57806339509351146105b757600080fd5b80631698f2e8116103f95780631698f2e8146104eb57806318160ddd1461050f5780631a8145bb146105245780631d97b7cd1461053a5780631f3fed8f1461054f57600080fd5b8063067a2cf11461043657806306fdde03146104585780630758d92414610483578063095ea7b3146104bb57600080fd5b3661043157005b600080fd5b34801561044257600080fd5b5061045661045136600461377c565b610cfb565b005b34801561046457600080fd5b5061046d610ec8565b60405161047a91906137b9565b60405180910390f35b34801561048f57600080fd5b506006546104a3906001600160a01b031681565b6040516001600160a01b03909116815260200161047a565b3480156104c757600080fd5b506104db6104d636600461380e565b610f5a565b604051901515815260200161047a565b3480156104f757600080fd5b5061050160105481565b60405190815260200161047a565b34801561051b57600080fd5b50600254610501565b34801561053057600080fd5b50610501601f5481565b34801561054657600080fd5b50610456610f71565b34801561055b57600080fd5b50610501601e5481565b34801561057157600080fd5b506104db61058036600461383a565b611025565b34801561059157600080fd5b506104a361dead81565b3480156105a757600080fd5b506040516012815260200161047a565b3480156105c357600080fd5b506104db6105d236600461380e565b6110cf565b3480156105e357600080fd5b506104db6105f236600461387b565b6001600160a01b031660009081526025602052604090205460ff1690565b34801561061c57600080fd5b50600b546104a3906001600160a01b031681565b34801561063c57600080fd5b506007546104a3906001600160a01b031681565b34801561065c57600080fd5b506104db61066b36600461387b565b6001600160a01b031660009081526021602052604090205460ff1690565b34801561069557600080fd5b5061045661110b565b3480156106aa57600080fd5b506104566106b936600461389f565b611214565b3480156106ca57600080fd5b506104db6106d93660046138c1565b6112b3565b3480156106ea57600080fd5b506104566106f93660046138e8565b611376565b34801561070a57600080fd5b506104db61071936600461387b565b60226020526000908152604090205460ff1681565b34801561073a57600080fd5b506104db61074936600461387b565b60156020526000908152604090205460ff1681565b34801561076a57600080fd5b506012546104db9060ff1681565b34801561078457600080fd5b5061050161079336600461387b565b6113cb565b3480156107a457600080fd5b506104566113e6565b3480156107b957600080fd5b506104566107c83660046138e8565b61145a565b3480156107d957600080fd5b506008546104a3906001600160a01b031681565b3480156107f957600080fd5b5061050160175481565b34801561080f57600080fd5b5061045661081e36600461389f565b6114af565b34801561082f57600080fd5b5061045661083e36600461387b565b61154e565b34801561084f57600080fd5b5061045661085e36600461387b565b6116f8565b34801561086f57600080fd5b5061045661087e3660046138c1565b611809565b34801561088f57600080fd5b506005546001600160a01b03166104a3565b3480156108ad57600080fd5b506009546104a3906001600160a01b031681565b3480156108cd57600080fd5b50610501601b5481565b3480156108e357600080fd5b506104566108f2366004613921565b6118dc565b34801561090357600080fd5b5061046d611919565b34801561091857600080fd5b5061045661092736600461387b565b611928565b34801561093857600080fd5b5061045661094736600461387b565b611a44565b34801561095857600080fd5b506104566109673660046138e8565b611b02565b34801561097857600080fd5b5061050160195481565b34801561098e57600080fd5b5061050160205481565b3480156109a457600080fd5b5061050160165481565b3480156109ba57600080fd5b50610501601d5481565b3480156109d057600080fd5b506104db6109df36600461380e565b611bba565b3480156109f057600080fd5b506104db6109ff36600461380e565b611c53565b348015610a1057600080fd5b5061046d611c60565b348015610a2557600080fd5b506104db610a3436600461387b565b60236020526000908152604090205460ff1681565b348015610a5557600080fd5b50610456610a643660046138e8565b611cee565b348015610a7557600080fd5b50600f546104db9060ff1681565b348015610a8f57600080fd5b50610456610a9e3660046138e8565b612047565b348015610aaf57600080fd5b50600a546104a3906001600160a01b031681565b348015610acf57600080fd5b506014546104db9060ff1681565b348015610ae957600080fd5b50610501600c5481565b348015610aff57600080fd5b5061050161209c565b348015610b1457600080fd5b50610456610b2336600461393e565b6120f0565b348015610b3457600080fd5b5061046d612159565b348015610b4957600080fd5b50610456610b58366004613989565b612166565b348015610b6957600080fd5b50610501610b78366004613a55565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610baf57600080fd5b50610456610bbe366004613921565b612260565b348015610bcf57600080fd5b50610501600e5481565b348015610be557600080fd5b506014546104db90610100900460ff1681565b348015610c0457600080fd5b5061050160115481565b348015610c1a57600080fd5b50610456610c293660046138c1565b61229d565b348015610c3a57600080fd5b5061050160185481565b348015610c5057600080fd5b50610456610c5f36600461387b565b612374565b348015610c7057600080fd5b50610456610c7f366004613921565b61245f565b348015610c9057600080fd5b506104566124a3565b348015610ca557600080fd5b50610501601c5481565b348015610cbb57600080fd5b50610501600d5481565b348015610cd157600080fd5b50610456610ce03660046138c1565b612581565b348015610cf157600080fd5b50610501601a5481565b6005546001600160a01b03163314610d2e5760405162461bcd60e51b8152600401610d2590613a83565b60405180910390fd5b60005b8151811015610ec457600a5482516001600160a01b0390911690839083908110610d5d57610d5d613ab8565b60200260200101516001600160a01b03161415610dbc5760405162461bcd60e51b815260206004820152601c60248201527f57652063616e206e6f7420626c61636b6c69737420726f757465722e000000006044820152606401610d25565b60075482516001600160a01b0390911690839083908110610ddf57610ddf613ab8565b60200260200101516001600160a01b03161415610e0e5760405162461bcd60e51b8152600401610d2590613ace565b600160256000848481518110610e2657610e26613ab8565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506024828281518110610e7957610e79613ab8565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055610ebd81613b26565b9050610d31565b5050565b606060038054610ed790613b41565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0390613b41565b8015610f505780601f10610f2557610100808354040283529160200191610f50565b820191906000526020600020905b815481529060010190602001808311610f3357829003601f168201915b5050505050905090565b6000610f673384846125b0565b5060015b92915050565b6005546001600160a01b03163314610f9b5760405162461bcd60e51b8152600401610d2590613a83565b600f5460ff16156110025760405162461bcd60e51b815260206004820152602b60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526a3a103932b630bab731b41760a91b6064820152608401610d25565b600f8054600160ff19918216811790925560128054909116909117905543601155565b60006110328484846126d4565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156110b75760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610d25565b6110c485338584036125b0565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610f67918590611106908690613b76565b6125b0565b6005546001600160a01b031633146111355760405162461bcd60e51b8152600401610d2590613a83565b600e54611141306113cb565b10156111b7576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610d25565b6007805460ff60a01b1916600160a01b1790556111d2613054565b6007805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b0316331461123e5760405162461bcd60e51b8152600401610d2590613a83565b601e61124a8284613b76565b11156112985760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b6565702066656573206c6f776572207468616e203330250000006044820152606401610d25565b601782905560188190556112ac8183613b76565b6016555050565b6005546000906001600160a01b031633146112e05760405162461bcd60e51b8152600401610d2590613a83565b6103e86112ec60025490565b6112f7906005613b8e565b6113019190613bad565b82111561136d5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610d25565b50600e55600190565b6005546001600160a01b031633146113a05760405162461bcd60e51b8152600401610d2590613a83565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146114105760405162461bcd60e51b8152600401610d2590613a83565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146114845760405162461bcd60e51b8152600401610d2590613a83565b6001600160a01b03919091166000908152602260205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146114d95760405162461bcd60e51b8152600401610d2590613a83565b601e6114e58284613b76565b11156115335760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b6565702066656573206c6f776572207468616e203330250000006044820152606401610d25565b601b829055601c8190556115478183613b76565b601a555050565b6005546001600160a01b031633146115785760405162461bcd60e51b8152600401610d2590613a83565b6001600160a01b03811660009081526025602052604090205460ff166115e05760405162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c69737465640000000000006044820152606401610d25565b60005b602454811015610ec457816001600160a01b03166024828154811061160a5761160a613ab8565b6000918252602090912001546001600160a01b031614156116e6576024805461163590600190613bcf565b8154811061164557611645613ab8565b600091825260209091200154602480546001600160a01b03909216918390811061167157611671613ab8565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152602590915260409020805460ff1916905560248054806116c0576116c0613be6565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806116f081613b26565b9150506115e3565b6005546001600160a01b031633146117225760405162461bcd60e51b8152600401610d2590613a83565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561176b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178f9190613bfc565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156117df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118039190613c15565b50505050565b6005546001600160a01b031633146118335760405162461bcd60e51b8152600401610d2590613a83565b60058110156118905760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610d25565b670de0b6b3a76400006103e8826118a660025490565b6118b09190613b8e565b6118ba9190613bad565b6118c49190613bad565b6118d690670de0b6b3a7640000613b8e565b600d5550565b6005546001600160a01b031633146119065760405162461bcd60e51b8152600401610d2590613a83565b6012805460ff1916911515919091179055565b606060048054610ed790613b41565b6005546001600160a01b031633146119525760405162461bcd60e51b8152600401610d2590613a83565b600a546001600160a01b03828116911614156119b05760405162461bcd60e51b815260206004820152601c60248201527f57652063616e206e6f7420626c61636b6c69737420726f757465722e000000006044820152606401610d25565b6007546001600160a01b03828116911614156119de5760405162461bcd60e51b8152600401610d2590613ace565b6001600160a01b03166000818152602560205260408120805460ff191660019081179091556024805491820181559091527f7cd332d19b93bcabe3cce7ca0c18a052f57e5fd03b4758a09f30f5ddc4b22ec40180546001600160a01b0319169091179055565b6005546001600160a01b03163314611a6e5760405162461bcd60e51b8152600401610d2590613a83565b60005b602454611a8090600190613bcf565b8111610ec457611af060248281548110611a9c57611a9c613ab8565b9060005260206000200160009054906101000a90046001600160a01b031683611aeb60248581548110611ad157611ad1613ab8565b6000918252602090912001546001600160a01b03166113cb565b6132a1565b80611afa81613b26565b915050611a71565b6005546001600160a01b03163314611b2c5760405162461bcd60e51b8152600401610d2590613a83565b6007546001600160a01b0383811691161415611bb05760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610d25565b610ec482826133f6565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015611c3c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610d25565b611c4933858584036125b0565b5060019392505050565b6000610f673384846126d4565b60048054611c6d90613b41565b80601f0160208091040260200160405190810160405280929190818152602001828054611c9990613b41565b8015611ce65780601f10611cbb57610100808354040283529160200191611ce6565b820191906000526020600020905b815481529060010190602001808311611cc957829003601f168201915b505050505081565b6005546001600160a01b03163314611d185760405162461bcd60e51b8152600401610d2590613a83565b600a80546001600160a01b0384166001600160a01b0319918216811790925560068054909116821790556040805163c45a015560e01b81529051829163c45a01559160048281019260209291908290030181865afa158015611d7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da29190613c32565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611def573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e139190613c32565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e849190613c32565b600780546001600160a01b0319166001600160a01b03929092169182179055611eae90600161145a565b600754611ec5906001600160a01b031660016133f6565b81156120425760004711611f275760405162461bcd60e51b815260206004820152602360248201527f4d757374206861766520455448206f6e20636f6e747261637420746f206c61756044820152620dcc6d60eb1b6064820152608401610d25565b6000611f32306113cb565b11611f8e5760405162461bcd60e51b815260206004820152602660248201527f4d757374206861766520546f6b656e73206f6e20636f6e747261637420746f206044820152650d8c2eadcc6d60d31b6064820152608401610d25565b600654611fa99030906001600160a01b0316611106826113cb565b6006546001600160a01b031663f305d7194730611fc5816113cb565b600b546040516001600160e01b031960e087901b168152611ffb93929160009182916001600160a01b0316904290600401613c4f565b60606040518083038185885af1158015612019573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061203e9190613c8a565b5050505b505050565b6005546001600160a01b031633146120715760405162461bcd60e51b8152600401610d2590613a83565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b600080805b6024546120b090600190613bcf565b81116120ea576120cc60248281548110611ad157611ad1613ab8565b6120d69083613b76565b9150806120e281613b26565b9150506120a1565b50919050565b6005546001600160a01b0316331461211a5760405162461bcd60e51b8152600401610d2590613a83565b600880546001600160a01b039485166001600160a01b031991821617909155600b80549385169382169390931790925560098054919093169116179055565b60038054611c6d90613b41565b6005546001600160a01b031633146121905760405162461bcd60e51b8152600401610d2590613a83565b600f5460ff16156121fa5760405162461bcd60e51b815260206004820152602e60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526d3a1030b4b9323937b81030ba369760911b6064820152608401610d25565b60005b6001835161220b9190613bcf565b81116118035761224e8484838151811061222757612227613ab8565b602002602001015184848151811061224157612241613ab8565b60200260200101516132a1565b8061225881613b26565b9150506121fd565b6005546001600160a01b0316331461228a5760405162461bcd60e51b8152600401610d2590613a83565b6014805460ff1916911515919091179055565b6005546001600160a01b031633146122c75760405162461bcd60e51b8152600401610d2590613a83565b60058110156123285760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f7420736574206d617854786e416d6f756e74206c6f776572207468604482015266616e20302e352560c81b6064820152608401610d25565b670de0b6b3a76400006103e88261233e60025490565b6123489190613b8e565b6123529190613bad565b61235c9190613bad565b61236e90670de0b6b3a7640000613b8e565b600c5550565b6005546001600160a01b0316331461239e5760405162461bcd60e51b8152600401610d2590613a83565b6001600160a01b0381166124035760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d25565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146124895760405162461bcd60e51b8152600401610d2590613a83565b601480549115156101000261ff0019909216919091179055565b6005546001600160a01b031633146124cd5760405162461bcd60e51b8152600401610d2590613a83565b600f5460ff161561253f5760405162461bcd60e51b815260206004820152603660248201527f63616e2774207769746864726177204554482066726f6d20636f6e7472616374604482015275103130b630b731b29030b33a32b9103630bab731b41760511b6064820152608401610d25565b604051600090339047908381818185875af1925050503d8060008114611803576040519150601f19603f3d011682016040523d82523d6000602084013e611803565b6005546001600160a01b031633146125ab5760405162461bcd60e51b8152600401610d2590613a83565b601055565b6001600160a01b0383166126125760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d25565b6001600160a01b0382166126735760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d25565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166126fa5760405162461bcd60e51b8152600401610d2590613cb8565b6001600160a01b0382166127205760405162461bcd60e51b8152600401610d2590613cfd565b6001600160a01b03821660009081526025602052604090205460ff16156127835760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610d25565b3260009081526025602052604090205460ff16156127dd5760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610d25565b806127ee57612042838360006132a1565b600f5460ff1661287c576001600160a01b03831660009081526021602052604090205460ff168061283757506001600160a01b03821660009081526021602052604090205460ff165b61287c5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610d25565b601454610100900460ff16156128df576001600160a01b03831660009081526015602052604090205460ff161580156128ce57506001600160a01b03821660009081526015602052604090205460ff16155b156128df576128dd8383613421565b505b6005546001600160a01b0384811691161480159061290b57506005546001600160a01b03838116911614155b801561291f57506001600160a01b03821615155b801561293657506001600160a01b03821661dead14155b801561294c5750600754600160a01b900460ff16155b801561297157506001600160a01b03821660009081526021602052604090205460ff16155b801561299657506001600160a01b03831660009081526021602052604090205460ff16155b15612ce55760145460ff1615612aaf576006546001600160a01b038381169116148015906129d257506007546001600160a01b03838116911614155b15612aaf576129e2600143613bcf565b32600090815260136020526040902054108015612a205750612a05600143613bcf565b6001600160a01b038316600090815260136020526040902054105b612a8a5760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610d25565b3260009081526013602052604080822043908190556001600160a01b03851683529120555b6001600160a01b03831660009081526023602052604090205460ff168015612af057506001600160a01b03821660009081526022602052604090205460ff16155b15612bbc57600c54811115612b5d5760405162461bcd60e51b815260206004820152602d60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526c36b0bc2a3c3720b6b7bab73a1760991b6064820152608401610d25565b600d54612b69836113cb565b612b739083613b76565b1115612bb75760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610d25565b612ce5565b6001600160a01b03821660009081526023602052604090205460ff168015612bfd57506001600160a01b03831660009081526022602052604090205460ff16155b15612c6b57600c54811115612bb75760405162461bcd60e51b815260206004820152602e60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526d1036b0bc2a3c3720b6b7bab73a1760911b6064820152608401610d25565b6001600160a01b03821660009081526022602052604090205460ff16612ce557600d54612c97836113cb565b612ca19083613b76565b1115612ce55760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610d25565b6000612cf0306113cb565b600e5490915081108015908190612d09575060125460ff165b8015612d1f5750600754600160a01b900460ff16155b8015612d4457506001600160a01b03851660009081526023602052604090205460ff16155b8015612d6957506001600160a01b03851660009081526021602052604090205460ff16155b8015612d8e57506001600160a01b03841660009081526021602052604090205460ff16155b15612dbc576007805460ff60a01b1916600160a01b179055612dae613054565b6007805460ff60a01b191690555b6007546001600160a01b03861660009081526021602052604090205460ff600160a01b909204821615911680612e0a57506001600160a01b03851660009081526021602052604090205460ff165b15612e13575060005b6000811561304057601054612e289043613bcf565b60115410158015612e5157506001600160a01b03871660009081526023602052604090205460ff165b15612f06576064612e63866031613b8e565b612e6d9190613bad565b9050601a54601c5482612e809190613b8e565b612e8a9190613bad565b601f6000828254612e9b9190613b76565b9091555050601a54601b54612eb09083613b8e565b612eba9190613bad565b601e6000828254612ecb9190613b76565b9091555050601a54601d54612ee09083613b8e565b612eea9190613bad565b60206000828254612efb9190613b76565b909155506130229050565b6001600160a01b03861660009081526023602052604090205460ff168015612f3057506000601a54115b15612f45576064601a5486612e639190613b8e565b6001600160a01b03871660009081526023602052604090205460ff168015612f6f57506000601654115b1561302257606460165486612f849190613b8e565b612f8e9190613bad565b905060165460185482612fa19190613b8e565b612fab9190613bad565b601f6000828254612fbc9190613b76565b9091555050601654601754612fd19083613b8e565b612fdb9190613bad565b601e6000828254612fec9190613b76565b90915550506016546019546130019083613b8e565b61300b9190613bad565b6020600082825461301c9190613b76565b90915550505b8015613033576130338730836132a1565b61303d8186613bcf565b94505b61304b8787876132a1565b50505050505050565b600061305f306113cb565b90506000602054601e54601f546130769190613b76565b6130809190613b76565b9050600082158061308f575081155b1561309957505050565b600e548311156130a957600e5492505b6000600283601f54866130bc9190613b8e565b6130c69190613bad565b6130d09190613bad565b905060006130de8286613bcf565b9050476130ea82613491565b60006130f68247613bcf565b905060006002601f546131099190613bad565b6131139088613bcf565b601e546131209084613b8e565b61312a9190613bad565b905060006002601f5461313d9190613bad565b6131479089613bcf565b6020546131549085613b8e565b61315e9190613bad565b905060008161316d8486613bcf565b6131779190613bcf565b6000601f819055601e81905560208190556009546040519293506001600160a01b031691849181818185875af1925050503d80600081146131d4576040519150601f19603f3d011682016040523d82523d6000602084013e6131d9565b606091505b50506008546040519199506001600160a01b0316908490600081818185875af1925050503d8060008114613229576040519150601f19603f3d011682016040523d82523d6000602084013e61322e565b606091505b509098505086158015906132425750600081115b156132955761325187826135e3565b601f54604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b50505050505050505050565b6001600160a01b0383166132c75760405162461bcd60e51b8152600401610d2590613cb8565b6001600160a01b0382166132ed5760405162461bcd60e51b8152600401610d2590613cfd565b6001600160a01b038316600090815260208190526040902054818110156133655760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610d25565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061339c908490613b76565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133e891815260200190565b60405180910390a350505050565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b6000823b15806134305750813b155b61347c5760405162461bcd60e51b815260206004820152601860248201527f4e6f20666c6173682077616c6c657420616c6c6f7765642100000000000000006044820152606401610d25565b823b1561348a575080610f6b565b5081610f6b565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106134c6576134c6613ab8565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561351f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135439190613c32565b8160018151811061355657613556613ab8565b6001600160a01b03928316602091820292909201015260065461357c91309116846125b0565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906135b5908590600090869030904290600401613d40565b600060405180830381600087803b1580156135cf57600080fd5b505af115801561203e573d6000803e3d6000fd5b6006546135fb9030906001600160a01b0316846125b0565b600654600b5460405163f305d71960e01b81526001600160a01b039283169263f305d71992859261363b9230928992600092839216904290600401613c4f565b60606040518083038185885af1158015613659573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061367e9190613c8a565b5050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156136c4576136c4613685565b604052919050565b600067ffffffffffffffff8211156136e6576136e6613685565b5060051b60200190565b6001600160a01b038116811461370557600080fd5b50565b600082601f83011261371957600080fd5b8135602061372e613729836136cc565b61369b565b82815260059290921b8401810191818101908684111561374d57600080fd5b8286015b84811015613771578035613764816136f0565b8352918301918301613751565b509695505050505050565b60006020828403121561378e57600080fd5b813567ffffffffffffffff8111156137a557600080fd5b6137b184828501613708565b949350505050565b600060208083528351808285015260005b818110156137e6578581018301518582016040015282016137ca565b818111156137f8576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561382157600080fd5b823561382c816136f0565b946020939093013593505050565b60008060006060848603121561384f57600080fd5b833561385a816136f0565b9250602084013561386a816136f0565b929592945050506040919091013590565b60006020828403121561388d57600080fd5b8135613898816136f0565b9392505050565b600080604083850312156138b257600080fd5b50508035926020909101359150565b6000602082840312156138d357600080fd5b5035919050565b801515811461370557600080fd5b600080604083850312156138fb57600080fd5b8235613906816136f0565b91506020830135613916816138da565b809150509250929050565b60006020828403121561393357600080fd5b8135613898816138da565b60008060006060848603121561395357600080fd5b833561395e816136f0565b9250602084013561396e816136f0565b9150604084013561397e816136f0565b809150509250925092565b60008060006060848603121561399e57600080fd5b83356139a9816136f0565b925060208481013567ffffffffffffffff808211156139c757600080fd5b6139d388838901613708565b945060408701359150808211156139e957600080fd5b508501601f810187136139fb57600080fd5b8035613a09613729826136cc565b81815260059190911b82018301908381019089831115613a2857600080fd5b928401925b82841015613a4657833582529284019290840190613a2d565b80955050505050509250925092565b60008060408385031215613a6857600080fd5b8235613a73816136f0565b91506020830135613916816136f0565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60208082526022908201527f57652063616e206e6f7420626c61636b6c697374207061697220616464726573604082015261399760f11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000600019821415613b3a57613b3a613b10565b5060010190565b600181811c90821680613b5557607f821691505b602082108114156120ea57634e487b7160e01b600052602260045260246000fd5b60008219821115613b8957613b89613b10565b500190565b6000816000190483118215151615613ba857613ba8613b10565b500290565b600082613bca57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015613be157613be1613b10565b500390565b634e487b7160e01b600052603160045260246000fd5b600060208284031215613c0e57600080fd5b5051919050565b600060208284031215613c2757600080fd5b8151613898816138da565b600060208284031215613c4457600080fd5b8151613898816136f0565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215613c9f57600080fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613d905784516001600160a01b031683529383019391830191600101613d6b565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212209288b7d59f2e239b811a59faf2e87587064568dbacf22677f2c5844df64335a064736f6c634300080c0033

Deployed Bytecode Sourcemap

7478:18889:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25430:427;;;;;;;;;;-1:-1:-1;25430:427:0;;;;;:::i;:::-;;:::i;:::-;;1979:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7520:27;;;;;;;;;;-1:-1:-1;7520:27:0;;;;-1:-1:-1;;;;;7520:27:0;;;;;;-1:-1:-1;;;;;2629:32:1;;;2611:51;;2599:2;2584:18;7520:27:0;2447:221:1;2879:169:0;;;;;;;;;;-1:-1:-1;2879:169:0;;;;;:::i;:::-;;:::i;:::-;;;3158:14:1;;3151:22;3133:41;;3121:2;3106:18;2879:169:0;2993:187:1;7989:22:0;;;;;;;;;;;;;;;;;;;3331:25:1;;;3319:2;3304:18;7989:22:0;3185:177:1;2294:108:0;;;;;;;;;;-1:-1:-1;2382:12:0;;2294:108;;8865:33;;;;;;;;;;;;;;;;23235:272;;;;;;;;;;;;;:::i;8825:33::-;;;;;;;;;;;;;;;;3054:488;;;;;;;;;;-1:-1:-1;3054:488:0;;;;;:::i;:::-;;:::i;7582:53::-;;;;;;;;;;;;7628:6;7582:53;;2195:93;;;;;;;;;;-1:-1:-1;2195:93:0;;2278:2;4178:36:1;;4166:2;4151:18;2195:93:0;4036:184:1;3548:215:0;;;;;;;;;;-1:-1:-1;3548:215:0;;;;;:::i;:::-;;:::i;24996:112::-;;;;;;;;;;-1:-1:-1;24996:112:0;;;;;:::i;:::-;-1:-1:-1;;;;;25074:26:0;25049:4;25074:26;;;:17;:26;;;;;;;;;24996:112;7773:32;;;;;;;;;;-1:-1:-1;7773:32:0;;;;-1:-1:-1;;;;;7773:32:0;;;7554:21;;;;;;;;;;-1:-1:-1;7554:21:0;;;;-1:-1:-1;;;;;7554:21:0;;;13720:125;;;;;;;;;;-1:-1:-1;13720:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;13809:28:0;13785:4;13809:28;;;:19;:28;;;;;;;;;13720:125;21794:312;;;;;;;;;;;;;:::i;12352:305::-;;;;;;;;;;-1:-1:-1;12352:305:0;;;;;:::i;:::-;;:::i;11093:261::-;;;;;;;;;;-1:-1:-1;11093:261:0;;;;;:::i;:::-;;:::i;12057:132::-;;;;;;;;;;-1:-1:-1;12057:132:0;;;;;:::i;:::-;;:::i;9055:56::-;;;;;;;;;;-1:-1:-1;9055:56:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8455:49;;;;;;;;;;-1:-1:-1;8455:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8062:31;;;;;;;;;;-1:-1:-1;8062:31:0;;;;;;;;2408:127;;;;;;;;;;-1:-1:-1;2408:127:0;;;;;:::i;:::-;;:::i;6004:150::-;;;;;;;;;;;;;:::i;11915:136::-;;;;;;;;;;-1:-1:-1;11915:136:0;;;;;:::i;:::-;;:::i;7670:30::-;;;;;;;;;;-1:-1:-1;7670:30:0;;;;-1:-1:-1;;;;;7670:30:0;;;8565;;;;;;;;;;;;;;;;12663:311;;;;;;;;;;-1:-1:-1;12663:311:0;;;;;:::i;:::-;;:::i;25863:501::-;;;;;;;;;;-1:-1:-1;25863:501:0;;;;;:::i;:::-;;:::i;23815:229::-;;;;;;;;;;-1:-1:-1;23815:229:0;;;;;:::i;:::-;;:::i;11635:268::-;;;;;;;;;;-1:-1:-1;11635:268:0;;;;;:::i;:::-;;:::i;5794:79::-;;;;;;;;;;-1:-1:-1;5859:6:0;;-1:-1:-1;;;;;5859:6:0;5794:79;;7707:24;;;;;;;;;;-1:-1:-1;7707:24:0;;;;-1:-1:-1;;;;;7707:24:0;;;8711:31;;;;;;;;;;;;;;;;12245:101;;;;;;;;;;-1:-1:-1;12245:101:0;;;;;:::i;:::-;;:::i;2085:104::-;;;;;;;;;;;;;:::i;25114:310::-;;;;;;;;;;-1:-1:-1;25114:310:0;;;;;:::i;:::-;;:::i;24747:243::-;;;;;;;;;;-1:-1:-1;24747:243:0;;;;;:::i;:::-;;:::i;13122:237::-;;;;;;;;;;-1:-1:-1;13122:237:0;;;;;:::i;:::-;;:::i;8639:24::-;;;;;;;;;;;;;;;;8905:27;;;;;;;;;;;;;;;;8531;;;;;;;;;;;;;;;;8787:25;;;;;;;;;;;;;;;;3769:411;;;;;;;;;;-1:-1:-1;3769:411:0;;;;;:::i;:::-;;:::i;2541:175::-;;;;;;;;;;-1:-1:-1;2541:175:0;;;;;:::i;:::-;;:::i;1929:21::-;;;;;;;;;;;;;:::i;9208:58::-;;;;;;;;;;-1:-1:-1;9208:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22113:1116;;;;;;;;;;-1:-1:-1;22113:1116:0;;;;;:::i;:::-;;:::i;7949:33::-;;;;;;;;;;-1:-1:-1;7949:33:0;;;;;;;;12982:132;;;;;;;;;;-1:-1:-1;12982:132:0;;;;;:::i;:::-;;:::i;7738:28::-;;;;;;;;;;-1:-1:-1;7738:28:0;;;;-1:-1:-1;;;;;7738:28:0;;;8333:40;;;;;;;;;;-1:-1:-1;8333:40:0;;;;;;;;7818:27;;;;;;;;;;;;;;;;24480:261;;;;;;;;;;;;;:::i;13501:213::-;;;;;;;;;;-1:-1:-1;13501:213:0;;;;;:::i;:::-;;:::i;1903:19::-;;;;;;;;;;;;;:::i;24073:311::-;;;;;;;;;;-1:-1:-1;24073:311:0;;;;;:::i;:::-;;:::i;2722:151::-;;;;;;;;;;-1:-1:-1;2722:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;2838:18:0;;;2811:7;2838:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2722:151;10880:107;;;;;;;;;;-1:-1:-1;10880:107:0;;;;;:::i;:::-;;:::i;7883:33::-;;;;;;;;;;;;;;;;8420:28;;;;;;;;;;-1:-1:-1;8420:28:0;;;;;;;;;;;8018:37;;;;;;;;;;;;;;;;11360:267;;;;;;;;;;-1:-1:-1;11360:267:0;;;;;:::i;:::-;;:::i;8602:30::-;;;;;;;;;;;;;;;;6160:246;;;;;;;;;;-1:-1:-1;6160:246:0;;;;;:::i;:::-;;:::i;10993:94::-;;;;;;;;;;-1:-1:-1;10993:94:0;;;;;:::i;:::-;;:::i;23557:252::-;;;;;;;;;;;;;:::i;8749:31::-;;;;;;;;;;;;;;;;7852:24;;;;;;;;;;;;;;;;24390:84;;;;;;;;;;-1:-1:-1;24390:84:0;;;;;:::i;:::-;;:::i;8676:28::-;;;;;;;;;;;;;;;;25430:427;5919:6;;-1:-1:-1;;;;;5919:6:0;435:10;5919:22;5911:67;;;;-1:-1:-1;;;5911:67:0;;;;;;;:::i;:::-;;;;;;;;;25528:9:::1;25523:327;25543:9;:16;25539:1;:20;25523:327;;;25605:13;::::0;25589:12;;-1:-1:-1;;;;;25605:13:0;;::::1;::::0;25589:9;;25599:1;;25589:12;::::1;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;25589:29:0::1;;;25581:70;;;::::0;-1:-1:-1;;;25581:70:0;;8571:2:1;25581:70:0::1;::::0;::::1;8553:21:1::0;8610:2;8590:18;;;8583:30;8649;8629:18;;;8622:58;8697:18;;25581:70:0::1;8369:352:1::0;25581:70:0::1;25690:6;::::0;25674:12;;-1:-1:-1;;;;;25690:6:0;;::::1;::::0;25674:9;;25684:1;;25674:12;::::1;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;25674:22:0::1;;;25666:69;;;;-1:-1:-1::0;;;25666:69:0::1;;;;;;;:::i;:::-;25784:4;25750:17;:31;25768:9;25778:1;25768:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;25750:31:0::1;-1:-1:-1::0;;;;;25750:31:0::1;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;25803:16;25825:9;25835:1;25825:12;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;25803:35;;::::1;::::0;::::1;::::0;;-1:-1:-1;25803:35:0;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;25803:35:0::1;-1:-1:-1::0;;;;;25803:35:0;;::::1;::::0;;;::::1;::::0;;25561:3:::1;::::0;::::1;:::i;:::-;;;25523:327;;;;25430:427:::0;:::o;1979:100::-;2033:13;2066:5;2059:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1979:100;:::o;2879:169::-;2962:4;2979:39;435:10;3002:7;3011:6;2979:8;:39::i;:::-;-1:-1:-1;3036:4:0;2879:169;;;;;:::o;23235:272::-;5919:6;;-1:-1:-1;;;;;5919:6:0;435:10;5919:22;5911:67;;;;-1:-1:-1;;;5911:67:0;;;;;;;:::i;:::-;23299:13:::1;::::0;::::1;;23298:14;23290:70;;;::::0;-1:-1:-1;;;23290:70:0;;9988:2:1;23290:70:0::1;::::0;::::1;9970:21:1::0;10027:2;10007:18;;;10000:30;10066:34;10046:18;;;10039:62;-1:-1:-1;;;10117:18:1;;;10110:41;10168:19;;23290:70:0::1;9786:407:1::0;23290:70:0::1;23406:13;:20:::0;;23422:4:::1;-1:-1:-1::0;;23406:20:0;;::::1;::::0;::::1;::::0;;;23437:11:::1;:18:::0;;;;::::1;::::0;;::::1;::::0;;23487:12:::1;23466:18;:33:::0;23235:272::o;3054:488::-;3194:4;3211:36;3221:6;3229:9;3240:6;3211:9;:36::i;:::-;-1:-1:-1;;;;;3285:19:0;;3258:24;3285:19;;;:11;:19;;;;;;;;435:10;3285:33;;;;;;;;3337:26;;;;3329:79;;;;-1:-1:-1;;;3329:79:0;;10400:2:1;3329:79:0;;;10382:21:1;10439:2;10419:18;;;10412:30;10478:34;10458:18;;;10451:62;-1:-1:-1;;;10529:18:1;;;10522:38;10577:19;;3329:79:0;10198:404:1;3329:79:0;3444:57;3453:6;435:10;3494:6;3475:16;:25;3444:8;:57::i;:::-;-1:-1:-1;3530:4:0;;3054:488;-1:-1:-1;;;;3054:488:0:o;3548:215::-;435:10;3636:4;3685:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3685:34:0;;;;;;;;;;3636:4;;3653:80;;3676:7;;3685:47;;3722:10;;3685:47;:::i;:::-;3653:8;:80::i;21794:312::-;5919:6;;-1:-1:-1;;;;;5919:6:0;435:10;5919:22;5911:67;;;;-1:-1:-1;;;5911:67:0;;;;;;;:::i;:::-;21885:18:::1;;21857:24;21875:4;21857:9;:24::i;:::-;:46;;21849:123;;;::::0;;-1:-1:-1;;;21849:123:0;;10942:2:1;21849:123:0::1;::::0;::::1;10924:21:1::0;10961:18;;;10954:30;;;;11020:34;11000:18;;;10993:62;11091:34;11071:18;;;11064:62;11143:19;;21849:123:0::1;10740:428:1::0;21849:123:0::1;21983:8;:15:::0;;-1:-1:-1;;;;21983:15:0::1;-1:-1:-1::0;;;21983:15:0::1;::::0;;22009:10:::1;:8;:10::i;:::-;22030:8;:16:::0;;-1:-1:-1;;;;22030:16:0::1;::::0;;22062:36:::1;::::0;22082:15:::1;3331:25:1::0;;22062:36:0::1;::::0;3319:2:1;3304:18;22062:36:0::1;;;;;;;21794:312::o:0;12352:305::-;5919:6;;-1:-1:-1;;;;;5919:6:0;435:10;5919:22;5911:67;;;;-1:-1:-1;;;5911:67:0;;;;;;;:::i;:::-;12476:2:::1;12450:21;12461:10:::0;12450;:21:::1;:::i;:::-;12449:29;;12441:71;;;::::0;-1:-1:-1;;;12441:71:0;;11375:2:1;12441:71:0::1;::::0;::::1;11357:21:1::0;11414:2;11394:18;;;11387:30;11453:31;11433:18;;;11426:59;11502:18;;12441:71:0::1;11173:353:1::0;12441:71:0::1;12523:15;:28:::0;;;12562:15:::1;:28:::0;;;12616:33:::1;12580:10:::0;12541;12616:33:::1;:::i;:::-;12601:12;:48:::0;-1:-1:-1;;12352:305:0:o;11093:261::-;5919:6;;11165:4;;-1:-1:-1;;;;;5919:6:0;435:10;5919:22;5911:67;;;;-1:-1:-1;;;5911:67:0;;;;;;;:::i;:::-;11222:4:::1;11202:13;2382:12:::0;;;2294:108;11202:13:::1;:17;::::0;11218:1:::1;11202:17;:::i;:::-;:24;;;;:::i;:::-;11189:9;:37;;11181:102;;;::::0;-1:-1:-1;;;11181:102:0;;12128:2:1;11181:102:0::1;::::0;::::1;12110:21:1::0;12167:2;12147:18;;;12140:30;12206:34;12186:18;;;12179:62;-1:-1:-1;;;12257:18:1;;;12250:50;12317:19;;11181:102:0::1;11926:416:1::0;11181:102:0::1;-1:-1:-1::0;11294:18:0::1;:30:::0;11342:4:::1;::::0;11093:261::o;12057:132::-;5919:6;;-1:-1:-1;;;;;5919:6:0;435:10;5919:22;5911:67;;;;-1:-1:-1;;;5911:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12147:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:34;;-1:-1:-1;;12147:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12057:132::o;2408:127::-;-1:-1:-1;;;;;2509:18:0;2482:7;2509:18;;;;;;;;;;;;2408:127::o;6004:150::-;5919:6;;-1:-1:-1;;;;;5919:6:0;435:10;5919:22;5911:67;;;;-1:-1:-1;;;5911:67:0;;;;;;;:::i;:::-;6097:6:::1;::::0;6076:40:::1;::::0;6113:1:::1;::::0;-1:-1:-1;;;;;6097:6:0::1;::::0;6076:40:::1;::::0;6113:1;;6076:40:::1;6127:6;:19:::0;;-1:-1:-1;;;;;;6127:19:0::1;::::0;;6004:150::o;11915:136::-;5919:6;;-1:-1:-1;;;;;5919:6:0;435:10;5919:22;5911:67;;;;-1:-1:-1;;;5911:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12005:31:0;;;::::1;;::::0;;;:23:::1;:31;::::0;;;;:38;;-1:-1:-1;;12005:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11915:136::o;12663:311::-;5919:6;;-1:-1:-1;;;;;5919:6:0;435:10;5919:22;5911:67;;;;-1:-1:-1;;;5911:67:0;;;;;;;:::i;:::-;12788:2:::1;12762:21;12773:10:::0;12762;:21:::1;:::i;:::-;12761:29;;12753:71;;;::::0;-1:-1:-1;;;12753:71:0;;11375:2:1;12753:71:0::1;::::0;::::1;11357:21:1::0;11414:2;11394:18;;;11387:30;11453:31;11433:18;;;11426:59;11502:18;;12753:71:0::1;11173:353:1::0;12753:71:0::1;12835:16;:29:::0;;;12875:16:::1;:29:::0;;;12931:35:::1;12894:10:::0;12854;12931:35:::1;:::i;:::-;12915:13;:51:::0;-1:-1:-1;;12663:311:0:o;25863:501::-;5919:6;;-1:-1:-1;;;;;5919:6:0;435:10;5919:22;5911:67;;;;-1:-1:-1;;;5911:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25953:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;25945:65;;;::::0;-1:-1:-1;;;25945:65:0;;12549:2:1;25945:65:0::1;::::0;::::1;12531:21:1::0;12588:2;12568:18;;;12561:30;12627:28;12607:18;;;12600:56;12673:18;;25945:65:0::1;12347:350:1::0;25945:65:0::1;26026:9;26021:336;26045:16;:23:::0;26041:27;::::1;26021:336;;;26117:7;-1:-1:-1::0;;;;;26094:30:0::1;:16;26111:1;26094:19;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;26094:19:0::1;:30;26090:256;;;26167:16;26184:23:::0;;:27:::1;::::0;26210:1:::1;::::0;26184:27:::1;:::i;:::-;26167:45;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;26145:16:::1;:19:::0;;-1:-1:-1;;;;;26167:45:0;;::::1;::::0;26162:1;;26145:19;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:67:::0;;-1:-1:-1;;;;;;26145:67:0::1;-1:-1:-1::0;;;;;26145:67:0;;::::1;;::::0;;26231:26;;::::1;::::0;;:17:::1;:26:::0;;;;;;:34;;-1:-1:-1;;26231:34:0::1;::::0;;26284:16:::1;:22:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;26284:22:0;;;;;-1:-1:-1;;;;;;26284:22:0::1;::::0;;;;;25523:327:::1;25430:427:::0;:::o;26090:256::-:1;26070:3:::0;::::1;::::0;::::1;:::i;:::-;;;;26021:336;;23815:229:::0;5919:6;;-1:-1:-1;;;;;5919:6:0;435:10;5919:22;5911:67;;;;-1:-1:-1;;;5911:67:0;;;;;;;:::i;:::-;23946:31:::1;::::0;-1:-1:-1;;;23946:31:0;;23971:4:::1;23946:31;::::0;::::1;2611:51:1::0;23908:4:0;;23885:13:::1;::::0;-1:-1:-1;;;;;23946:16:0;::::1;::::0;::::1;::::0;2584:18:1;;23946:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23988:48;::::0;-1:-1:-1;;;23988:48:0;;24012:10:::1;23988:48;::::0;::::1;13327:51:1::0;13394:18;;;13387:34;;;23924:53:0;;-1:-1:-1;;;;;;23988:15:0;::::1;::::0;::::1;::::0;13300:18:1;;23988:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23874:170;;23815:229:::0;:::o;11635:268::-;5919:6;;-1:-1:-1;;;;;5919:6:0;435:10;5919:22;5911:67;;;;-1:-1:-1;;;5911:67:0;;;;;;;:::i;:::-;11781:1:::1;11771:6;:11;;11763:60;;;::::0;-1:-1:-1;;;11763:60:0;;13884:2:1;11763:60:0::1;::::0;::::1;13866:21:1::0;13923:2;13903:18;;;13896:30;13962:34;13942:18;;;13935:62;-1:-1:-1;;;14013:18:1;;;14006:34;14057:19;;11763:60:0::1;13682:400:1::0;11763:60:0::1;11879:4;11873;11864:6;11848:13;2382:12:::0;;;2294:108;11848:13:::1;:22;;;;:::i;:::-;:29;;;;:::i;:::-;11847:36;;;;:::i;:::-;11846:49;::::0;11888:6:::1;11846:49;:::i;:::-;11834:9;:61:::0;-1:-1:-1;11635:268:0:o;12245:101::-;5919:6;;-1:-1:-1;;;;;5919:6:0;435:10;5919:22;5911:67;;;;-1:-1:-1;;;5911:67:0;;;;;;;:::i;:::-;12317:11:::1;:21:::0;;-1:-1:-1;;12317:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12245:101::o;2085:104::-;2141:13;2174:7;2167:14;;;;;:::i;25114:310::-;5919:6;;-1:-1:-1;;;;;5919:6:0;435:10;5919:22;5911:67;;;;-1:-1:-1;;;5911:67:0;;;;;;;:::i;:::-;25210:13:::1;::::0;-1:-1:-1;;;;;25199:24:0;;::::1;25210:13:::0;::::1;25199:24;;25191:65;;;::::0;-1:-1:-1;;;25191:65:0;;8571:2:1;25191:65:0::1;::::0;::::1;8553:21:1::0;8610:2;8590:18;;;8583:30;8649;8629:18;;;8622:58;8697:18;;25191:65:0::1;8369:352:1::0;25191:65:0::1;25286:6;::::0;-1:-1:-1;;;;;25275:17:0;;::::1;25286:6:::0;::::1;25275:17;;25267:64;;;;-1:-1:-1::0;;;25267:64:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25342:26:0::1;;::::0;;;:17:::1;:26;::::0;;;;:33;;-1:-1:-1;;25342:33:0::1;25371:4;25342:33:::0;;::::1;::::0;;;25386:16:::1;:30:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;25386:30:0::1;::::0;;::::1;::::0;;25114:310::o;24747:243::-;5919:6;;-1:-1:-1;;;;;5919:6:0;435:10;5919:22;5911:67;;;;-1:-1:-1;;;5911:67:0;;;;;;;:::i;:::-;24831:9:::1;24827:156;24850:16;:23:::0;:25:::1;::::0;24874:1:::1;::::0;24850:25:::1;:::i;:::-;24845:1;:30;24827:156;;24895:76;24911:16;24928:1;24911:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;24911:19:0::1;24931:8;24940:30;24950:16;24967:1;24950:19;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;24950:19:0::1;24940:9;:30::i;:::-;24895:15;:76::i;:::-;24876:3:::0;::::1;::::0;::::1;:::i;:::-;;;;24827:156;;13122:237:::0;5919:6;;-1:-1:-1;;;;;5919:6:0;435:10;5919:22;5911:67;;;;-1:-1:-1;;;5911:67:0;;;;;;;:::i;:::-;13229:6:::1;::::0;-1:-1:-1;;;;;13221:14:0;;::::1;13229:6:::0;::::1;13221:14;;13213:84;;;::::0;-1:-1:-1;;;13213:84:0;;14289:2:1;13213:84:0::1;::::0;::::1;14271:21:1::0;14328:2;14308:18;;;14301:30;14367:34;14347:18;;;14340:62;14438:27;14418:18;;;14411:55;14483:19;;13213:84:0::1;14087:421:1::0;13213:84:0::1;13310:41;13339:4;13345:5;13310:28;:41::i;3769:411::-:0;435:10;3862:4;3906:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3906:34:0;;;;;;;;;;3959:35;;;;3951:85;;;;-1:-1:-1;;;3951:85:0;;14715:2:1;3951:85:0;;;14697:21:1;14754:2;14734:18;;;14727:30;14793:34;14773:18;;;14766:62;-1:-1:-1;;;14844:18:1;;;14837:35;14889:19;;3951:85:0;14513:401:1;3951:85:0;4072:67;435:10;4095:7;4123:15;4104:16;:34;4072:8;:67::i;:::-;-1:-1:-1;4168:4:0;;3769:411;-1:-1:-1;;;3769:411:0:o;2541:175::-;2627:4;2644:42;435:10;2668:9;2679:6;2644:9;:42::i;1929:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22113:1116::-;5919:6;;-1:-1:-1;;;;;5919:6:0;435:10;5919:22;5911:67;;;;-1:-1:-1;;;5911:67:0;;;;;;;:::i;:::-;22225:13:::1;:23:::0;;-1:-1:-1;;;;;22225:23:0;::::1;-1:-1:-1::0;;;;;;22225:23:0;;::::1;::::0;::::1;::::0;;;22345:9:::1;:22:::0;;;;::::1;::::0;::::1;::::0;;22423:20:::1;::::0;;-1:-1:-1;;;22423:20:0;;;;22225:23;;22423:18:::1;::::0;-1:-1:-1;22423:20:0;;::::1;::::0;::::1;::::0;;;;;;;;22225:23;22423:20:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22411:44:0::1;;22464:4;22471:10;-1:-1:-1::0;;;;;22471:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22411:78;::::0;-1:-1:-1;;;;;;22411:78:0::1;::::0;;;;;;-1:-1:-1;;;;;15405:15:1;;;22411:78:0::1;::::0;::::1;15387:34:1::0;15457:15;;15437:18;;;15430:43;15322:18;;22411:78:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22402:6;:87:::0;;-1:-1:-1;;;;;;22402:87:0::1;-1:-1:-1::0;;;;;22402:87:0;;;::::1;::::0;;::::1;::::0;;22500:48:::1;::::0;-1:-1:-1;22500:25:0::1;:48::i;:::-;22596:6;::::0;22559:51:::1;::::0;-1:-1:-1;;;;;22596:6:0::1;::::0;22559:28:::1;:51::i;:::-;22630:7;22627:595;;;22719:1;22695:21;:25;22687:73;;;::::0;-1:-1:-1;;;22687:73:0;;15686:2:1;22687:73:0::1;::::0;::::1;15668:21:1::0;15725:2;15705:18;;;15698:30;15764:34;15744:18;;;15737:62;-1:-1:-1;;;15815:18:1;;;15808:33;15858:19;;22687:73:0::1;15484:399:1::0;22687:73:0::1;22810:1;22783:24;22801:4;22783:9;:24::i;:::-;:28;22775:79;;;::::0;-1:-1:-1;;;22775:79:0;;16090:2:1;22775:79:0::1;::::0;::::1;16072:21:1::0;16129:2;16109:18;;;16102:30;16168:34;16148:18;;;16141:62;-1:-1:-1;;;16219:18:1;;;16212:36;16265:19;;22775:79:0::1;15888:402:1::0;22775:79:0::1;22901:9;::::0;22869:69:::1;::::0;22886:4:::1;::::0;-1:-1:-1;;;;;22901:9:0::1;22913:24;22886:4:::0;22913:9:::1;:24::i;22869:69::-;22953:9;::::0;-1:-1:-1;;;;;22953:9:0::1;:25;22986:21;23035:4;23059:24;23035:4:::0;23059:9:::1;:24::i;:::-;23144:17;::::0;22953:257:::1;::::0;-1:-1:-1;;;;;;22953:257:0::1;::::0;;;;;;::::1;::::0;;;23102:1:::1;::::0;;;-1:-1:-1;;;;;23144:17:0::1;::::0;23180:15:::1;::::0;22953:257:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22627:595;22184:1045;22113:1116:::0;;:::o;12982:132::-;5919:6;;-1:-1:-1;;;;;5919:6:0;435:10;5919:22;5911:67;;;;-1:-1:-1;;;5911:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13067:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;-1:-1:-1;;13067:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12982:132::o;24480:261::-;24531:7;;;24582:124;24605:16;:23;:25;;24629:1;;24605:25;:::i;:::-;24600:1;:30;24582:124;;24664:30;24674:16;24691:1;24674:19;;;;;;;;:::i;24664:30::-;24650:44;;;;:::i;:::-;;-1:-1:-1;24631:3:0;;;;:::i;:::-;;;;24582:124;;;-1:-1:-1;24723:10:0;24480:261;-1:-1:-1;24480:261:0:o;13501:213::-;5919:6;;-1:-1:-1;;;;;5919:6:0;435:10;5919:22;5911:67;;;;-1:-1:-1;;;5911:67:0;;;;;;;:::i;:::-;13610:15:::1;:28:::0;;-1:-1:-1;;;;;13610:28:0;;::::1;-1:-1:-1::0;;;;;;13610:28:0;;::::1;;::::0;;;13649:17:::1;:30:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;13690:9:::1;:16:::0;;;;;::::1;::::0;::::1;;::::0;;13501:213::o;1903:19::-;;;;;;;:::i;24073:311::-;5919:6;;-1:-1:-1;;;;;5919:6:0;435:10;5919:22;5911:67;;;;-1:-1:-1;;;5911:67:0;;;;;;;:::i;:::-;24194:13:::1;::::0;::::1;;24193:14;24185:73;;;::::0;-1:-1:-1;;;24185:73:0;;17420:2:1;24185:73:0::1;::::0;::::1;17402:21:1::0;17459:2;17439:18;;;17432:30;17498:34;17478:18;;;17471:62;-1:-1:-1;;;17549:18:1;;;17542:44;17603:19;;24185:73:0::1;17218:410:1::0;24185:73:0::1;24273:9;24269:108;24301:1;24291:2;:9;:11;;;;:::i;:::-;24287:1;:15;24269:108;;24322:43;24346:4;24352:2;24355:1;24352:5;;;;;;;;:::i;:::-;;;;;;;24358:3;24362:1;24358:6;;;;;;;;:::i;:::-;;;;;;;24322:15;:43::i;:::-;24303:3:::0;::::1;::::0;::::1;:::i;:::-;;;;24269:108;;10880:107:::0;5919:6;;-1:-1:-1;;;;;5919:6:0;435:10;5919:22;5911:67;;;;-1:-1:-1;;;5911:67:0;;;;;;;:::i;:::-;10951:20:::1;:28:::0;;-1:-1:-1;;10951:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10880:107::o;11360:267::-;5919:6;;-1:-1:-1;;;;;5919:6:0;435:10;5919:22;5911:67;;;;-1:-1:-1;;;5911:67:0;;;;;;;:::i;:::-;11499:1:::1;11489:6;:11;;11481:63;;;::::0;-1:-1:-1;;;11481:63:0;;17835:2:1;11481:63:0::1;::::0;::::1;17817:21:1::0;17874:2;17854:18;;;17847:30;17913:34;17893:18;;;17886:62;-1:-1:-1;;;17964:18:1;;;17957:37;18011:19;;11481:63:0::1;17633:403:1::0;11481:63:0::1;11603:4;11597;11588:6;11572:13;2382:12:::0;;;2294:108;11572:13:::1;:22;;;;:::i;:::-;:29;;;;:::i;:::-;11571:36;;;;:::i;:::-;11570:49;::::0;11612:6:::1;11570:49;:::i;:::-;11555:12;:64:::0;-1:-1:-1;11360:267:0:o;6160:246::-;5919:6;;-1:-1:-1;;;;;5919:6:0;435:10;5919:22;5911:67;;;;-1:-1:-1;;;5911:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6251:22:0;::::1;6243:73;;;::::0;-1:-1:-1;;;6243:73:0;;18243:2:1;6243:73:0::1;::::0;::::1;18225:21:1::0;18282:2;18262:18;;;18255:30;18321:34;18301:18;;;18294:62;-1:-1:-1;;;18372:18:1;;;18365:36;18418:19;;6243:73:0::1;18041:402:1::0;6243:73:0::1;6353:6;::::0;6332:38:::1;::::0;-1:-1:-1;;;;;6332:38:0;;::::1;::::0;6353:6:::1;::::0;6332:38:::1;::::0;6353:6:::1;::::0;6332:38:::1;6381:6;:17:::0;;-1:-1:-1;;;;;;6381:17:0::1;-1:-1:-1::0;;;;;6381:17:0;;;::::1;::::0;;;::::1;::::0;;6160:246::o;10993:94::-;5919:6;;-1:-1:-1;;;;;5919:6:0;435:10;5919:22;5911:67;;;;-1:-1:-1;;;5911:67:0;;;;;;;:::i;:::-;11061:10:::1;:18:::0;;;::::1;;;;-1:-1:-1::0;;11061:18:0;;::::1;::::0;;;::::1;::::0;;10993:94::o;23557:252::-;5919:6;;-1:-1:-1;;;;;5919:6:0;435:10;5919:22;5911:67;;;;-1:-1:-1;;;5911:67:0;;;;;;;:::i;:::-;23624:13:::1;::::0;::::1;;23623:14;23615:81;;;::::0;-1:-1:-1;;;23615:81:0;;18650:2:1;23615:81:0::1;::::0;::::1;18632:21:1::0;18689:2;18669:18;;;18662:30;18728:34;18708:18;;;18701:62;-1:-1:-1;;;18779:18:1;;;18772:52;18841:19;;23615:81:0::1;18448:418:1::0;23615:81:0::1;23743:58;::::0;23707:12:::1;::::0;23751:10:::1;::::0;23775:21:::1;::::0;23707:12;23743:58;23707:12;23743:58;23775:21;23751:10;23743:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24390:84:::0;5919:6;;-1:-1:-1;;;;;5919:6:0;435:10;5919:22;5911:67;;;;-1:-1:-1;;;5911:67:0;;;;;;;:::i;:::-;24456:7:::1;:10:::0;24390:84::o;5097:378::-;-1:-1:-1;;;;;5233:19:0;;5225:68;;;;-1:-1:-1;;;5225:68:0;;19283:2:1;5225:68:0;;;19265:21:1;19322:2;19302:18;;;19295:30;19361:34;19341:18;;;19334:62;-1:-1:-1;;;19412:18:1;;;19405:34;19456:19;;5225:68:0;19081:400:1;5225:68:0;-1:-1:-1;;;;;5312:21:0;;5304:68;;;;-1:-1:-1;;;5304:68:0;;19688:2:1;5304:68:0;;;19670:21:1;19727:2;19707:18;;;19700:30;19766:34;19746:18;;;19739:62;-1:-1:-1;;;19817:18:1;;;19810:32;19859:19;;5304:68:0;19486:398:1;5304:68:0;-1:-1:-1;;;;;5383:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5435:32;;3331:25:1;;;5435:32:0;;3304:18:1;5435:32:0;;;;;;;5097:378;;;:::o;14315:4794::-;-1:-1:-1;;;;;14447:18:0;;14439:68;;;;-1:-1:-1;;;14439:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14526:16:0;;14518:64;;;;-1:-1:-1;;;14518:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14602:21:0;;;;;;:17;:21;;;;;;;;14601:22;14593:58;;;;-1:-1:-1;;;14593:58:0;;20901:2:1;14593:58:0;;;20883:21:1;20940:2;20920:18;;;20913:30;-1:-1:-1;;;20959:18:1;;;20952:53;21022:18;;14593:58:0;20699:347:1;14593:58:0;14689:9;14671:28;;;;:17;:28;;;;;;;;14670:29;14662:65;;;;-1:-1:-1;;;14662:65:0;;20901:2:1;14662:65:0;;;20883:21:1;20940:2;20920:18;;;20913:30;-1:-1:-1;;;20959:18:1;;;20952:53;21022:18;;14662:65:0;20699:347:1;14662:65:0;14744:11;14741:92;;14772:28;14788:4;14794:2;14798:1;14772:15;:28::i;14741:92::-;14849:13;;;;14845:132;;-1:-1:-1;;;;;14886:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;14915:23:0;;;;;;:19;:23;;;;;;;;14886:52;14878:87;;;;-1:-1:-1;;;14878:87:0;;21253:2:1;14878:87:0;;;21235:21:1;21292:2;21272:18;;;21265:30;-1:-1:-1;;;21311:18:1;;;21304:52;21373:18;;14878:87:0;21051:346:1;14878:87:0;14990:10;;;;;;;14987:187;;;-1:-1:-1;;;;;15020:23:0;;;;;;:17;:23;;;;;;;;15019:24;:50;;;;-1:-1:-1;;;;;;15048:21:0;;;;;;:17;:21;;;;;;;;15047:22;15019:50;15016:147;;;15103:26;15121:4;15126:2;15103:17;:26::i;:::-;;15016:147;5859:6;;-1:-1:-1;;;;;15202:15:0;;;5859:6;;15202:15;;;;:45;;-1:-1:-1;5859:6:0;;-1:-1:-1;;;;;15234:13:0;;;5859:6;;15234:13;;15202:45;:78;;;;-1:-1:-1;;;;;;15264:16:0;;;;15202:78;:116;;;;-1:-1:-1;;;;;;15297:21:0;;15311:6;15297:21;;15202:116;:142;;;;-1:-1:-1;15336:8:0;;-1:-1:-1;;;15336:8:0;;;;15335:9;15202:142;:183;;;;-1:-1:-1;;;;;;15362:23:0;;;;;;:19;:23;;;;;;;;15361:24;15202:183;:226;;;;-1:-1:-1;;;;;;15403:25:0;;;;;;:19;:25;;;;;;;;15402:26;15202:226;15184:1591;;;15588:20;;;;15584:466;;;15646:9;;-1:-1:-1;;;;;15632:24:0;;;15646:9;;15632:24;;;;:49;;-1:-1:-1;15674:6:0;;-1:-1:-1;;;;;15660:21:0;;;15674:6;;15660:21;;15632:49;15628:407;;;15751:16;15766:1;15751:12;:16;:::i;:::-;15738:9;15713:35;;;;:24;:35;;;;;;:54;:105;;;;-1:-1:-1;15802:16:0;15817:1;15802:12;:16;:::i;:::-;-1:-1:-1;;;;;15771:28:0;;;;;;:24;:28;;;;;;:47;15713:105;15705:171;;;;-1:-1:-1;;;15705:171:0;;21604:2:1;15705:171:0;;;21586:21:1;21643:2;21623:18;;;21616:30;21682:34;21662:18;;;21655:62;-1:-1:-1;;;21733:18:1;;;21726:51;21794:19;;15705:171:0;21402:417:1;15705:171:0;15924:9;15899:35;;;;:24;:35;;;;;;15937:12;15899:50;;;;-1:-1:-1;;;;;15972:28:0;;;;;;:43;15628:407;-1:-1:-1;;;;;16111:31:0;;;;;;:25;:31;;;;;;;;:63;;;;-1:-1:-1;;;;;;16147:27:0;;;;;;:23;:27;;;;;;;;16146:28;16111:63;16107:657;;;16213:12;;16203:6;:22;;16195:80;;;;-1:-1:-1;;;16195:80:0;;22026:2:1;16195:80:0;;;22008:21:1;22065:2;22045:18;;;22038:30;22104:34;22084:18;;;22077:62;-1:-1:-1;;;22155:18:1;;;22148:43;22208:19;;16195:80:0;21824:409:1;16195:80:0;16328:9;;16311:13;16321:2;16311:9;:13::i;:::-;16302:22;;:6;:22;:::i;:::-;:35;;16294:67;;;;-1:-1:-1;;;16294:67:0;;22440:2:1;16294:67:0;;;22422:21:1;22479:2;22459:18;;;22452:30;-1:-1:-1;;;22498:18:1;;;22491:49;22557:18;;16294:67:0;22238:343:1;16294:67:0;16107:657;;;-1:-1:-1;;;;;16429:29:0;;;;;;:25;:29;;;;;;;;:63;;;;-1:-1:-1;;;;;;16463:29:0;;;;;;:23;:29;;;;;;;;16462:30;16429:63;16425:339;;;16531:12;;16521:6;:22;;16513:81;;;;-1:-1:-1;;;16513:81:0;;22788:2:1;16513:81:0;;;22770:21:1;22827:2;22807:18;;;22800:30;22866:34;22846:18;;;22839:62;-1:-1:-1;;;22917:18:1;;;22910:44;22971:19;;16513:81:0;22586:410:1;16425:339:0;-1:-1:-1;;;;;16634:27:0;;;;;;:23;:27;;;;;;;;16629:135;;16715:9;;16698:13;16708:2;16698:9;:13::i;:::-;16689:22;;:6;:22;:::i;:::-;:35;;16681:67;;;;-1:-1:-1;;;16681:67:0;;22440:2:1;16681:67:0;;;22422:21:1;22479:2;22459:18;;;22452:30;-1:-1:-1;;;22498:18:1;;;22491:49;22557:18;;16681:67:0;22238:343:1;16681:67:0;16785:28;16816:24;16834:4;16816:9;:24::i;:::-;16890:18;;16785:55;;-1:-1:-1;16866:42:0;;;;;;;16937:35;;-1:-1:-1;16961:11:0;;;;16937:35;:61;;;;-1:-1:-1;16990:8:0;;-1:-1:-1;;;16990:8:0;;;;16989:9;16937:61;:110;;;;-1:-1:-1;;;;;;17016:31:0;;;;;;:25;:31;;;;;;;;17015:32;16937:110;:153;;;;-1:-1:-1;;;;;;17065:25:0;;;;;;:19;:25;;;;;;;;17064:26;16937:153;:194;;;;-1:-1:-1;;;;;;17108:23:0;;;;;;:19;:23;;;;;;;;17107:24;16937:194;16919:322;;;17158:8;:15;;-1:-1:-1;;;;17158:15:0;-1:-1:-1;;;17158:15:0;;;17188:10;:8;:10::i;:::-;17213:8;:16;;-1:-1:-1;;;;17213:16:0;;;16919:322;17275:8;;-1:-1:-1;;;;;17384:25:0;;17259:12;17384:25;;;:19;:25;;;;;;17275:8;-1:-1:-1;;;17275:8:0;;;;;17274:9;;17384:25;;:52;;-1:-1:-1;;;;;;17413:23:0;;;;;;:19;:23;;;;;;;;17384:52;17381:99;;;-1:-1:-1;17463:5:0;17381:99;17500:12;17604:7;17601:1457;;;17775:7;;17760:22;;:12;:22;:::i;:::-;17738:18;;:44;;17737:81;;;;-1:-1:-1;;;;;;17787:31:0;;;;;;:25;:31;;;;;;;;17737:81;17734:1153;;;17859:3;17845:11;:6;17854:2;17845:11;:::i;:::-;:17;;;;:::i;:::-;17838:24;;17929:13;;17910:16;;17903:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;17881:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;18009:13:0;;17990:16;;17983:23;;:4;:23;:::i;:::-;:39;;;;:::i;:::-;17961:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;18077:13:0;;18064:10;;18057:17;;:4;:17;:::i;:::-;:33;;;;:::i;:::-;18041:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;17734:1153:0;;-1:-1:-1;17734:1153:0;;-1:-1:-1;;;;;18153:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;18202:1;18186:13;;:17;18153:50;18149:738;;;18255:3;18239:13;;18230:6;:22;;;;:::i;18149:738::-;-1:-1:-1;;;;;18547:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;18597:1;18582:12;;:16;18547:51;18544:343;;;18648:3;18633:12;;18624:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;18617:34;;18715:12;;18697:15;;18690:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;18668:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;18793:12:0;;18775:15;;18768:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;18746:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;18859:12:0;;18847:9;;18840:16;;:4;:16;:::i;:::-;:31;;;;:::i;:::-;18824:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;18544:343:0;18918:8;;18915:93;;18950:42;18966:4;18980;18987;18950:15;:42::i;:::-;19032:14;19042:4;19032:14;;:::i;:::-;;;17601:1457;19068:33;19084:4;19090:2;19094:6;19068:15;:33::i;:::-;14428:4681;;;;14315:4794;;;:::o;20146:1598::-;20185:23;20211:24;20229:4;20211:9;:24::i;:::-;20185:50;;20246:25;20316:12;;20295:18;;20274;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;20246:82;-1:-1:-1;20339:12:0;20375:20;;;:46;;-1:-1:-1;20399:22:0;;20375:46;20372:60;;;20424:7;;;20146:1598::o;20372:60::-;20465:18;;20447:15;:36;20444:103;;;20517:18;;20499:36;;20444:103;20616:23;20701:1;20681:17;20660:18;;20642:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;20616:86;-1:-1:-1;20713:26:0;20742:33;20616:86;20742:15;:33;:::i;:::-;20713:62;-1:-1:-1;20814:21:0;20846:36;20713:62;20846:16;:36::i;:::-;20901:18;20922:41;20946:17;20922:21;:41;:::i;:::-;20901:62;;20974:23;21075:1;21056:18;;:20;;;;:::i;:::-;21035:42;;:17;:42;:::i;:::-;21013:18;;21000:31;;:10;:31;:::i;:::-;:78;;;;:::i;:::-;20974:104;;21089:17;21178:1;21159:18;;:20;;;;:::i;:::-;21138:42;;:17;:42;:::i;:::-;21122:12;;21109:25;;:10;:25;:::i;:::-;:72;;;;:::i;:::-;21089:92;-1:-1:-1;21200:23:0;21089:92;21226:28;21239:15;21226:10;:28;:::i;:::-;:40;;;;:::i;:::-;21298:1;21277:18;:22;;;21310:18;:22;;;21343:12;:16;;;21391:9;;21383:45;;21200:66;;-1:-1:-1;;;;;;21391:9:0;;21414;;21383:45;21298:1;21383:45;21414:9;21391;21383:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21460:15:0;;21452:57;;21370:58;;-1:-1:-1;;;;;;21460:15:0;;21489;;21452:57;;;;21489:15;21460;21452:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21439:70:0;;-1:-1:-1;;21530:19:0;;;;;:42;;;21571:1;21553:15;:19;21530:42;21527:210;;;21588:46;21601:15;21618;21588:12;:46::i;:::-;21706:18;;21654:71;;;23203:25:1;;;23259:2;23244:18;;23237:34;;;23287:18;;;23280:34;;;;21654:71:0;;;;;;23191:2:1;21654:71:0;;;21527:210;20174:1570;;;;;;;;;;20146:1598::o;4186:610::-;-1:-1:-1;;;;;4326:20:0;;4318:70;;;;-1:-1:-1;;;4318:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4407:23:0;;4399:71;;;;-1:-1:-1;;;4399:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4505:17:0;;4481:21;4505:17;;;;;;;;;;;4541:23;;;;4533:74;;;;-1:-1:-1;;;4533:74:0;;23527:2:1;4533:74:0;;;23509:21:1;23566:2;23546:18;;;23539:30;23605:34;23585:18;;;23578:62;-1:-1:-1;;;23656:18:1;;;23649:36;23702:19;;4533:74:0;23325:402:1;4533:74:0;-1:-1:-1;;;;;4643:17:0;;;:9;:17;;;;;;;;;;;4663:22;;;4643:42;;4707:20;;;;;;;;:30;;4679:6;;4643:9;4707:30;;4679:6;;4707:30;:::i;:::-;;;;;;;;4770:9;-1:-1:-1;;;;;4753:35:0;4762:6;-1:-1:-1;;;;;4753:35:0;;4781:6;4753:35;;;;3331:25:1;;3319:2;3304:18;;3185:177;4753:35:0;;;;;;;;4307:489;4186:610;;;:::o;13365:130::-;-1:-1:-1;;;;;13448:31:0;;;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;13448:39:0;;;;;;;;;;13365:130::o;13851:254::-;13932:7;14243:20;;14291:8;;13960:38;;-1:-1:-1;14243:20:0;;14291:8;13960:38;13952:75;;;;-1:-1:-1;;;13952:75:0;;23934:2:1;13952:75:0;;;23916:21:1;23973:2;23953:18;;;23946:30;24012:26;23992:18;;;23985:54;24056:18;;13952:75:0;23732:348:1;13952:75:0;14243:20;;14291:8;14038:59;;-1:-1:-1;14066:5:0;14059:12;;14038:59;-1:-1:-1;14094:3:0;14087:10;;19115:507;19205:16;;;19219:1;19205:16;;;;;;;;19181:21;;19205:16;;;;;;;;;;-1:-1:-1;19205:16:0;19181:40;;19250:4;19232;19237:1;19232:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19232:23:0;;;:7;;;;;;;;;;:23;;;;19276:9;;:16;;;-1:-1:-1;;;19276:16:0;;;;:9;;;;;:14;;:16;;;;;19232:7;;19276:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19266:4;19271:1;19266:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19266:26:0;;;:7;;;;;;;;;:26;19335:9;;19303:56;;19320:4;;19335:9;19347:11;19303:8;:56::i;:::-;19396:9;;:218;;-1:-1:-1;;;19396:218:0;;-1:-1:-1;;;;;19396:9:0;;;;:60;;:218;;19471:11;;19396:9;;19541:4;;19568;;19588:15;;19396:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19631:509;19811:9;;19779:56;;19796:4;;-1:-1:-1;;;;;19811:9:0;19823:11;19779:8;:56::i;:::-;19876:9;;20074:17;;19876:256;;-1:-1:-1;;;19876:256:0;;-1:-1:-1;;;;;19876:9:0;;;;:25;;19909:9;;19876:256;;19942:4;;19962:11;;19876:9;;;;20074:17;;20106:15;;19876:256;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19631:509;;:::o;14:127:1:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:275;217:2;211:9;282:2;263:13;;-1:-1:-1;;259:27:1;247:40;;317:18;302:34;;338:22;;;299:62;296:88;;;364:18;;:::i;:::-;400:2;393:22;146:275;;-1:-1:-1;146:275:1:o;426:183::-;486:4;519:18;511:6;508:30;505:56;;;541:18;;:::i;:::-;-1:-1:-1;586:1:1;582:14;598:4;578:25;;426:183::o;614:131::-;-1:-1:-1;;;;;689:31:1;;679:42;;669:70;;735:1;732;725:12;669:70;614:131;:::o;750:737::-;804:5;857:3;850:4;842:6;838:17;834:27;824:55;;875:1;872;865:12;824:55;911:6;898:20;937:4;961:60;977:43;1017:2;977:43;:::i;:::-;961:60;:::i;:::-;1055:15;;;1141:1;1137:10;;;;1125:23;;1121:32;;;1086:12;;;;1165:15;;;1162:35;;;1193:1;1190;1183:12;1162:35;1229:2;1221:6;1217:15;1241:217;1257:6;1252:3;1249:15;1241:217;;;1337:3;1324:17;1354:31;1379:5;1354:31;:::i;:::-;1398:18;;1436:12;;;;1274;;1241:217;;;-1:-1:-1;1476:5:1;750:737;-1:-1:-1;;;;;;750:737:1:o;1492:348::-;1576:6;1629:2;1617:9;1608:7;1604:23;1600:32;1597:52;;;1645:1;1642;1635:12;1597:52;1685:9;1672:23;1718:18;1710:6;1707:30;1704:50;;;1750:1;1747;1740:12;1704:50;1773:61;1826:7;1817:6;1806:9;1802:22;1773:61;:::i;:::-;1763:71;1492:348;-1:-1:-1;;;;1492:348:1:o;1845:597::-;1957:4;1986:2;2015;2004:9;1997:21;2047:6;2041:13;2090:6;2085:2;2074:9;2070:18;2063:34;2115:1;2125:140;2139:6;2136:1;2133:13;2125:140;;;2234:14;;;2230:23;;2224:30;2200:17;;;2219:2;2196:26;2189:66;2154:10;;2125:140;;;2283:6;2280:1;2277:13;2274:91;;;2353:1;2348:2;2339:6;2328:9;2324:22;2320:31;2313:42;2274:91;-1:-1:-1;2426:2:1;2405:15;-1:-1:-1;;2401:29:1;2386:45;;;;2433:2;2382:54;;1845:597;-1:-1:-1;;;1845:597:1:o;2673:315::-;2741:6;2749;2802:2;2790:9;2781:7;2777:23;2773:32;2770:52;;;2818:1;2815;2808:12;2770:52;2857:9;2844:23;2876:31;2901:5;2876:31;:::i;:::-;2926:5;2978:2;2963:18;;;;2950:32;;-1:-1:-1;;;2673:315:1:o;3367:456::-;3444:6;3452;3460;3513:2;3501:9;3492:7;3488:23;3484:32;3481:52;;;3529:1;3526;3519:12;3481:52;3568:9;3555:23;3587:31;3612:5;3587:31;:::i;:::-;3637:5;-1:-1:-1;3694:2:1;3679:18;;3666:32;3707:33;3666:32;3707:33;:::i;:::-;3367:456;;3759:7;;-1:-1:-1;;;3813:2:1;3798:18;;;;3785:32;;3367:456::o;4225:247::-;4284:6;4337:2;4325:9;4316:7;4312:23;4308:32;4305:52;;;4353:1;4350;4343:12;4305:52;4392:9;4379:23;4411:31;4436:5;4411:31;:::i;:::-;4461:5;4225:247;-1:-1:-1;;;4225:247:1:o;4477:248::-;4545:6;4553;4606:2;4594:9;4585:7;4581:23;4577:32;4574:52;;;4622:1;4619;4612:12;4574:52;-1:-1:-1;;4645:23:1;;;4715:2;4700:18;;;4687:32;;-1:-1:-1;4477:248:1:o;4730:180::-;4789:6;4842:2;4830:9;4821:7;4817:23;4813:32;4810:52;;;4858:1;4855;4848:12;4810:52;-1:-1:-1;4881:23:1;;4730:180;-1:-1:-1;4730:180:1:o;4915:118::-;5001:5;4994:13;4987:21;4980:5;4977:32;4967:60;;5023:1;5020;5013:12;5038:382;5103:6;5111;5164:2;5152:9;5143:7;5139:23;5135:32;5132:52;;;5180:1;5177;5170:12;5132:52;5219:9;5206:23;5238:31;5263:5;5238:31;:::i;:::-;5288:5;-1:-1:-1;5345:2:1;5330:18;;5317:32;5358:30;5317:32;5358:30;:::i;:::-;5407:7;5397:17;;;5038:382;;;;;:::o;5425:241::-;5481:6;5534:2;5522:9;5513:7;5509:23;5505:32;5502:52;;;5550:1;5547;5540:12;5502:52;5589:9;5576:23;5608:28;5630:5;5608:28;:::i;5671:529::-;5748:6;5756;5764;5817:2;5805:9;5796:7;5792:23;5788:32;5785:52;;;5833:1;5830;5823:12;5785:52;5872:9;5859:23;5891:31;5916:5;5891:31;:::i;:::-;5941:5;-1:-1:-1;5998:2:1;5983:18;;5970:32;6011:33;5970:32;6011:33;:::i;:::-;6063:7;-1:-1:-1;6122:2:1;6107:18;;6094:32;6135:33;6094:32;6135:33;:::i;:::-;6187:7;6177:17;;;5671:529;;;;;:::o;6205:1273::-;6332:6;6340;6348;6401:2;6389:9;6380:7;6376:23;6372:32;6369:52;;;6417:1;6414;6407:12;6369:52;6456:9;6443:23;6475:31;6500:5;6475:31;:::i;:::-;6525:5;-1:-1:-1;6549:2:1;6587:18;;;6574:32;6625:18;6655:14;;;6652:34;;;6682:1;6679;6672:12;6652:34;6705:61;6758:7;6749:6;6738:9;6734:22;6705:61;:::i;:::-;6695:71;;6819:2;6808:9;6804:18;6791:32;6775:48;;6848:2;6838:8;6835:16;6832:36;;;6864:1;6861;6854:12;6832:36;-1:-1:-1;6887:24:1;;6942:4;6934:13;;6930:27;-1:-1:-1;6920:55:1;;6971:1;6968;6961:12;6920:55;7007:2;6994:16;7030:60;7046:43;7086:2;7046:43;:::i;7030:60::-;7124:15;;;7206:1;7202:10;;;;7194:19;;7190:28;;;7155:12;;;;7230:19;;;7227:39;;;7262:1;7259;7252:12;7227:39;7286:11;;;;7306:142;7322:6;7317:3;7314:15;7306:142;;;7388:17;;7376:30;;7339:12;;;;7426;;;;7306:142;;;7467:5;7457:15;;;;;;;6205:1273;;;;;:::o;7483:388::-;7551:6;7559;7612:2;7600:9;7591:7;7587:23;7583:32;7580:52;;;7628:1;7625;7618:12;7580:52;7667:9;7654:23;7686:31;7711:5;7686:31;:::i;:::-;7736:5;-1:-1:-1;7793:2:1;7778:18;;7765:32;7806:33;7765:32;7806:33;:::i;7876:356::-;8078:2;8060:21;;;8097:18;;;8090:30;8156:34;8151:2;8136:18;;8129:62;8223:2;8208:18;;7876:356::o;8237:127::-;8298:10;8293:3;8289:20;8286:1;8279:31;8329:4;8326:1;8319:15;8353:4;8350:1;8343:15;8726:398;8928:2;8910:21;;;8967:2;8947:18;;;8940:30;9006:34;9001:2;8986:18;;8979:62;-1:-1:-1;;;9072:2:1;9057:18;;9050:32;9114:3;9099:19;;8726:398::o;9129:127::-;9190:10;9185:3;9181:20;9178:1;9171:31;9221:4;9218:1;9211:15;9245:4;9242:1;9235:15;9261:135;9300:3;-1:-1:-1;;9321:17:1;;9318:43;;;9341:18;;:::i;:::-;-1:-1:-1;9388:1:1;9377:13;;9261:135::o;9401:380::-;9480:1;9476:12;;;;9523;;;9544:61;;9598:4;9590:6;9586:17;9576:27;;9544:61;9651:2;9643:6;9640:14;9620:18;9617:38;9614:161;;;9697:10;9692:3;9688:20;9685:1;9678:31;9732:4;9729:1;9722:15;9760:4;9757:1;9750:15;10607:128;10647:3;10678:1;10674:6;10671:1;10668:13;10665:39;;;10684:18;;:::i;:::-;-1:-1:-1;10720:9:1;;10607:128::o;11531:168::-;11571:7;11637:1;11633;11629:6;11625:14;11622:1;11619:21;11614:1;11607:9;11600:17;11596:45;11593:71;;;11644:18;;:::i;:::-;-1:-1:-1;11684:9:1;;11531:168::o;11704:217::-;11744:1;11770;11760:132;;11814:10;11809:3;11805:20;11802:1;11795:31;11849:4;11846:1;11839:15;11877:4;11874:1;11867:15;11760:132;-1:-1:-1;11906:9:1;;11704:217::o;12702:125::-;12742:4;12770:1;12767;12764:8;12761:34;;;12775:18;;:::i;:::-;-1:-1:-1;12812:9:1;;12702:125::o;12832:127::-;12893:10;12888:3;12884:20;12881:1;12874:31;12924:4;12921:1;12914:15;12948:4;12945:1;12938:15;12964:184;13034:6;13087:2;13075:9;13066:7;13062:23;13058:32;13055:52;;;13103:1;13100;13093:12;13055:52;-1:-1:-1;13126:16:1;;12964:184;-1:-1:-1;12964:184:1:o;13432:245::-;13499:6;13552:2;13540:9;13531:7;13527:23;13523:32;13520:52;;;13568:1;13565;13558:12;13520:52;13600:9;13594:16;13619:28;13641:5;13619:28;:::i;14919:251::-;14989:6;15042:2;15030:9;15021:7;15017:23;15013:32;15010:52;;;15058:1;15055;15048:12;15010:52;15090:9;15084:16;15109:31;15134:5;15109:31;:::i;16295:607::-;-1:-1:-1;;;;;16654:15:1;;;16636:34;;16701:2;16686:18;;16679:34;;;;16744:2;16729:18;;16722:34;;;;16787:2;16772:18;;16765:34;;;;16836:15;;;16830:3;16815:19;;16808:44;16616:3;16868:19;;16861:35;;;;16585:3;16570:19;;16295:607::o;16907:306::-;16995:6;17003;17011;17064:2;17052:9;17043:7;17039:23;17035:32;17032:52;;;17080:1;17077;17070:12;17032:52;17109:9;17103:16;17093:26;;17159:2;17148:9;17144:18;17138:25;17128:35;;17203:2;17192:9;17188:18;17182:25;17172:35;;16907:306;;;;;:::o;19889:401::-;20091:2;20073:21;;;20130:2;20110:18;;;20103:30;20169:34;20164:2;20149:18;;20142:62;-1:-1:-1;;;20235:2:1;20220:18;;20213:35;20280:3;20265:19;;19889:401::o;20295:399::-;20497:2;20479:21;;;20536:2;20516:18;;;20509:30;20575:34;20570:2;20555:18;;20548:62;-1:-1:-1;;;20641:2:1;20626:18;;20619:33;20684:3;20669:19;;20295:399::o;24085:980::-;24347:4;24395:3;24384:9;24380:19;24426:6;24415:9;24408:25;24452:2;24490:6;24485:2;24474:9;24470:18;24463:34;24533:3;24528:2;24517:9;24513:18;24506:31;24557:6;24592;24586:13;24623:6;24615;24608:22;24661:3;24650:9;24646:19;24639:26;;24700:2;24692:6;24688:15;24674:29;;24721:1;24731:195;24745:6;24742:1;24739:13;24731:195;;;24810:13;;-1:-1:-1;;;;;24806:39:1;24794:52;;24901:15;;;;24866:12;;;;24842:1;24760:9;24731:195;;;-1:-1:-1;;;;;;;24982:32:1;;;;24977:2;24962:18;;24955:60;-1:-1:-1;;;25046:3:1;25031:19;25024:35;24943:3;24085:980;-1:-1:-1;;;24085:980:1:o

Swarm Source

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