ETH Price: $2,642.61 (-0.16%)

Token

The Trident Game (TTG)
 

Overview

Max Total Supply

6,666,666,666,666 TTG

Holders

90

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
hoangnguyen1519.eth
Balance
587,109,329.211796570012348664 TTG

Value
$0.00
0x1f5d8e69864f98c2cf3dc70b1ea72232540a83b2
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:
TridentGame

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-17
*/

/***                                                                               
                                    .J                                          
                                    ^P.                                         
                                    ?P!                                         
                                   .PPJ                                         
                                   7PP5~                                        
                                  ^PPPPJ.                                       
                                 .YPPPPP?                                       
                  ^:            :YPPPPPPP?.            ^.                       
                  ?7           ~5PPPPPPPPPY^           Y^                       
                 .YY.       .~YGGPPPPPPPPPGPJ^.       ^P7                       
                 ~PG~      :~77!!!!YPPPJ!!!!7!~.      ?GP:                      
                :YPP5:             JPPP!             ~PPGJ                      
               :YPPPPY:            JPPP!            ^5PPPP?.                    
             .!5GPPPPG5!.          JPPP!          :?PGPPPPGY^                   
            ^7JJ?YPPY?JJ7^         JPPP!        .~?J??5PPJ?JJ!:                 
                 !GG!              JPPP!              ?GG.                      
                 !GG!              JPPP!             .JGG.                      
                 !GG7              JPPP!             .YGG.                      
                 !GP5.             JPPP!             ^PPG.                      
                 !GPP!             JPPP!            .?GPG.                      
                 !GPPP~            JPPP!            7PPPG.                      
                 !GPPPP!           JPPP!          .?PPPPG.                      
                 !GPPPPP?:         JPPP!         ^YPPPPPP.                      
                 .JGPPPPP57:       JPPP!       ^JPPPPPPG7                       
                  .75PPPPPPPJ~.    JPPP!    :!YPPPPPPP5~                        
                    :!YPPPPPPP5J7^.JPPP7:~7YPPPPPPP5J~.                         
                       :!J5PPPPPPP5PPPP5PPPPPPPPY?~:                            
                          .:!7J5PPPPPPPPPP5YJ7~:                                
                               .:^~YPPPJ^:.                                     
                                   JPPP!                                        
                                   JPPP!                                        
                                   JPPP!                                        
                                   JPPP!                                        
                                   JPPP!                                        
                                   JPPP!                                        
                                   JPPP!                                        
                                   JPPP!                                        
                                   JPPP!                                        
                                   JPPP!                                        
                                   ::::.                                       
*
**/
// 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;
        return msg.data;
    }
}

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 private _name;
    string private _symbol;

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

    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) public 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 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 TridentGame is ERC20, Ownable {

    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;

    IDexRouter public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address public TreasuryAddress;

    uint256 public tradingActiveBlock = 0; // 0 means trading is not active
    uint256 public deadBlocks = 2;

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

    uint256 public buyTotalFees;
    uint256 public buyTreasuryFee;
    uint256 public buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 public sellTreasuryFee;
    uint256 public sellLiquidityFee;

    uint256 public tokensForTreasury;
    uint256 public tokensForLiquidity;


    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;
    mapping (address => bool) private _isSniper;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event EnabledTrading(bool tradingActive, uint256 deadBlocks);
    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedTreasuryAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event TransferForeignToken(address token, uint256 amount);


    constructor() ERC20("The Trident Game", "TTG") {

        address newOwner = msg.sender; 

        IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        _excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IDexFactory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 totalSupply = 6666666666666 * 1e18;

        maxBuyAmount = totalSupply *  5 / 100;
        maxSellAmount = totalSupply *  5 / 100;
        maxWalletAmount = totalSupply * 5 / 100;
        swapTokensAtAmount = totalSupply * 5 / 10000; 

        buyTreasuryFee = 0;
        buyLiquidityFee = 0;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee;

        sellTreasuryFee = 0;
        sellLiquidityFee = 0;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee;

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);

        TreasuryAddress = address(0xdc2AFf253C5a21b863686228a0d5b5e6e77C699e);

        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max buy amount lower than 0.1%");
        maxBuyAmount = newNum * (10**18);
        emit UpdatedMaxBuyAmount(maxBuyAmount);
    }

    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max sell amount lower than 0.1%");
        maxSellAmount = newNum * (10**18);
        emit UpdatedMaxSellAmount(maxSellAmount);
    }

    
    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        emit RemovedLimits();
    }


    function _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner {
        if(!isEx){
            require(updAds != uniswapV2Pair, "Cannot remove uniswap pair from max txn");
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 3 / 1000)/1e18, "Cannot set max wallet amount lower than 0.3%");
        maxWalletAmount = newNum * (10**18);
        emit UpdatedMaxWalletAmount(maxWalletAmount);
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
        require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= totalSupply() * 1 / 1000, "Swap amount cannot be higher than 0.1% total supply.");
        swapTokensAtAmount = newAmount;
    }

    

    function updateBuyFees(uint256 _treasuryFee, uint256 _liquidityFee) external onlyOwner {
        buyTreasuryFee = _treasuryFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee;
        require(buyTotalFees <= 15, "Must keep fees at 15% or less");
    }

    function updateSellFees(uint256 _treasuryFee, uint256 _liquidityFee) external onlyOwner {
        sellTreasuryFee = _treasuryFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee;
        require(sellTotalFees <= 30, "Must keep fees at 30% or less");
    }

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


    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(amount > 0, "amount must be greater than 0");
        require(!_isSniper[from], "You are a sniper, get life!");
        require(!_isSniper[to], "You are a sniper, get life!");


        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead)){
                if(!tradingActive){
                    require(_isExcludedMaxTransactionAmount[from] || _isExcludedMaxTransactionAmount[to], "Trading is not active.");
                }

                if (tradingActiveBlock > 0 && block.number < (tradingActiveBlock + deadBlocks) ) {
                    _isSniper[to] = true;
                }

                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                }
                else if (!_isExcludedMaxTransactionAmount[to] && !_isExcludedMaxTransactionAmount[from]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
            }
        }

        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 = true;
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        uint256 penaltyAmount = 0;
        // only take fees on Trades, not on wallet transfers

        if(takeFee){
            // bot/sniper penalty.  Tokens get transferred to Treasury wallet and ETH to liquidity.
            if(tradingActiveBlock>0 && (tradingActiveBlock + 6) > block.number){
                penaltyAmount = amount * 98 / 100;
                super._transfer(from, TreasuryAddress, penaltyAmount);
            }
            // on sell
            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees /100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForTreasury += fees * sellTreasuryFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForTreasury += fees * buyTreasuryFee / buyTotalFees;
            }

            if(fees > 0){
                super._transfer(from, address(this), fees);
            }

            amount -= fees + penaltyAmount;
        }

        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {

        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }


    // once enabled, can never be turned off
    function enableTrading(bool _status, uint256 _deadBlocks) external onlyOwner {
        require(!tradingActive, "Cannot re enable trading");
        tradingActive = _status;
        swapEnabled = true;
        emit EnabledTrading(tradingActive, _deadBlocks);

        if (tradingActive && tradingActiveBlock == 0) {
            tradingActiveBlock = block.number;
            deadBlocks = _deadBlocks;
        }
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(owner()),
            block.timestamp
        );
    }

     
    function multiSend(address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {

        require(addresses.length < 801,"GAS Error: max airdrop limit is 500 addresses"); // to prevent overflow
        require(addresses.length == tokens.length,"Mismatch between Address and token count");

        uint256 SCCC = 0;

        for(uint i=0; i < addresses.length; i++){
            SCCC = SCCC + (tokens[i] * 10**decimals());
        }

        require(balanceOf(msg.sender) >= SCCC, "Not enough tokens in wallet");

        for(uint i=0; i < addresses.length; i++){
            _transfer(msg.sender,addresses[i],(tokens[i] * 10**decimals()));
        }
    }


    function setTreasuryAddress(address _TreasuryAddress) external onlyOwner {
        require(_TreasuryAddress != address(0), "_TreasuryAddress address cannot be 0");
        TreasuryAddress = payable(_TreasuryAddress);
        emit UpdatedTreasuryAddress(_TreasuryAddress);
    }

    function manage_Sniper(address sniper_address, bool status) external onlyOwner {
        require(_isSniper[sniper_address] != status, "Account is already in the said state");
        _isSniper[sniper_address] = status;
    }

    function manage_Snipers(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
                _isSniper[addresses[i]] = status;
        }
    }

    function isSniper(address account) public view returns (bool) {
        return _isSniper[account];
    }

   
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForTreasury;

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

        if(contractBalance > swapTokensAtAmount * 10){
            contractBalance = swapTokensAtAmount * 10;
        }

        bool success;

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;

        swapTokensForEth(contractBalance - liquidityTokens);

        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForTreasury = ethBalance * tokensForTreasury / (totalTokensToSwap - (tokensForLiquidity/2));
       
        ethForLiquidity -= ethForTreasury;

        tokensForLiquidity = 0;
        tokensForTreasury = 0;

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

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

    function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"tradingActive","type":"bool"},{"indexed":false,"internalType":"uint256","name":"deadBlocks","type":"uint256"}],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedTreasuryAddress","type":"event"},{"inputs":[],"name":"TreasuryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","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":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","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":[{"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":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sniper_address","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_Sniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_Snipers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTreasuryFee","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":"address","name":"_TreasuryAddress","type":"address"}],"name":"setTreasuryAddress","outputs":[],"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":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTreasury","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":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600c556002600d55600e805462ffffff191660011790553480156200002a57600080fd5b506040518060400160405280601081526020016f5468652054726964656e742047616d6560801b8152506040518060400160405280600381526020016254544760e81b8152508160039080519060200190620000889291906200073f565b5080516200009e9060049060208401906200073f565b5050506000620000b3620003dc60201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062003d41833981519152908290a35033737a250d5630b4cf539739df2c5dacb4c659f2488d62000113816001620003e0565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200015e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001849190620007e5565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f89190620007e5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000246573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026c9190620007e5565b6001600160a01b031660a08190526200028790600162000443565b6c5425296ac1cc75b84c906800006064620002a48260056200082d565b620002b091906200084f565b6006556064620002c28260056200082d565b620002ce91906200084f565b6007556064620002e08260056200082d565b620002ec91906200084f565b600855612710620002ff8260056200082d565b6200030b91906200084f565b600a5560006010819055601181905562000326908062000872565b600f5560006013819055601481905562000341908062000872565b60125562000351836001620003e0565b6200035e306001620003e0565b6200036d61dead6001620003e0565b600b80546001600160a01b03191673dc2aff253c5a21b863686228a0d5b5e6e77c699e179055620003a0836001620004af565b620003ad306001620004af565b620003bc61dead6001620004af565b620003c883826200055d565b620003d38362000642565b505050620008ca565b3390565b6001600160a01b038216600081815260186020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382166000908152601960205260409020805460ff1916821515179055620004738282620003e0565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03163314620004fe5760405162461bcd60e51b8152602060048201819052602482015260008051602062003d2183398151915260448201526064015b60405180910390fd5b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005b55760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004f5565b8060026000828254620005c9919062000872565b90915550506001600160a01b03821660009081526020819052604081208054839290620005f890849062000872565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b031633146200068d5760405162461bcd60e51b8152602060048201819052602482015260008051602062003d218339815191526044820152606401620004f5565b6001600160a01b038116620006f45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620004f5565b6005546040516001600160a01b0380841692169060008051602062003d4183398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b8280546200074d906200088d565b90600052602060002090601f016020900481019282620007715760008555620007bc565b82601f106200078c57805160ff1916838001178555620007bc565b82800160010185558215620007bc579182015b82811115620007bc5782518255916020019190600101906200079f565b50620007ca929150620007ce565b5090565b5b80821115620007ca5760008155600101620007cf565b600060208284031215620007f857600080fd5b81516001600160a01b03811681146200081057600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156200084a576200084a62000817565b500290565b6000826200086d57634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111562000888576200088862000817565b500190565b600181811c90821680620008a257607f821691505b60208210811415620008c457634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a051613400620009216000396000818161055a0152818161124301526114ea01526000818161045d01528181612af401528181612bad01528181612be901528181612c5b0152612c8201526134006000f3fe6080604052600436106103395760003560e01c8063751039fc116101ab578063c0246668116100f7578063e2f4560511610095578063f2fde38b1161006f578063f2fde38b146109b0578063f5648a4f146109d0578063f6374342146109e5578063fabb0b4f146109fb57600080fd5b8063e2f456051461096e578063ee40166e14610984578063f11a24d31461099a57600080fd5b8063d257b34f116100d1578063d257b34f146108d2578063d85ba063146108f2578063dc3f0d0f14610908578063dd62ed3e1461092857600080fd5b8063c02466681461087c578063c18bc1951461089c578063cc2ffe7c146108bc57600080fd5b80639a7a23d611610164578063aa4bde281161013e578063aa4bde28146107f7578063b62496f51461080d578063bb4c9f0b1461083d578063bbc0c7421461085d57600080fd5b80639a7a23d614610797578063a457c2d7146107b7578063a9059cbb146107d757600080fd5b8063751039fc146106f95780637571336a1461070e5780638366e79a1461072e57806388e765ff1461074e5780638da5cb5b1461076457806395d89b411461078257600080fd5b806349bd5a5e1161028557806366ca9b83116102235780636b2fb124116101fd5780636b2fb124146106785780636ddd17131461068e57806370a08231146106ae578063715018a6146106e457600080fd5b806366ca9b831461062c57806366d602ae1461064c5780636a486a8e1461066257600080fd5b80635c068a8c1161025f5780635c068a8c146105b65780635d54c0af146105cc5780635e83ae76146105ec5780636605bfda1461060c57600080fd5b806349bd5a5e146105485780634a62bb651461057c5780635b5c251f1461059657600080fd5b80631694505e116102f257806323b872dd116102cc57806323b872dd146104cc5780632be32b61146104ec578063313ce5671461050c578063395093511461052857600080fd5b80631694505e1461044b57806318160ddd146104975780631a8145bb146104b657600080fd5b8063013afc561461034557806302dbd8f81461036757806306fdde0314610387578063095ea7b3146103b25780630f3a325f146103e257806310d5de531461041b57600080fd5b3661034057005b600080fd5b34801561035157600080fd5b50610365610360366004612d81565b610a11565b005b34801561037357600080fd5b50610365610382366004612dba565b610aea565b34801561039357600080fd5b5061039c610b81565b6040516103a99190612ddc565b60405180910390f35b3480156103be57600080fd5b506103d26103cd366004612e31565b610c13565b60405190151581526020016103a9565b3480156103ee57600080fd5b506103d26103fd366004612e5d565b6001600160a01b03166000908152601a602052604090205460ff1690565b34801561042757600080fd5b506103d2610436366004612e5d565b60186020526000908152604090205460ff1681565b34801561045757600080fd5b5061047f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103a9565b3480156104a357600080fd5b506002545b6040519081526020016103a9565b3480156104c257600080fd5b506104a860165481565b3480156104d857600080fd5b506103d26104e7366004612e81565b610c2a565b3480156104f857600080fd5b50610365610507366004612ec2565b610cd4565b34801561051857600080fd5b50604051601281526020016103a9565b34801561053457600080fd5b506103d2610543366004612e31565b610de1565b34801561055457600080fd5b5061047f7f000000000000000000000000000000000000000000000000000000000000000081565b34801561058857600080fd5b50600e546103d29060ff1681565b3480156105a257600080fd5b50600b5461047f906001600160a01b031681565b3480156105c257600080fd5b506104a860105481565b3480156105d857600080fd5b506103656105e7366004612f27565b610e1d565b3480156105f857600080fd5b50610365610607366004612f7e565b610ebc565b34801561061857600080fd5b50610365610627366004612e5d565b610fd8565b34801561063857600080fd5b50610365610647366004612dba565b6110ae565b34801561065857600080fd5b506104a860075481565b34801561066e57600080fd5b506104a860125481565b34801561068457600080fd5b506104a860135481565b34801561069a57600080fd5b50600e546103d29062010000900460ff1681565b3480156106ba57600080fd5b506104a86106c9366004612e5d565b6001600160a01b031660009081526020819052604090205490565b3480156106f057600080fd5b5061036561113f565b34801561070557600080fd5b506103656111b3565b34801561071a57600080fd5b50610365610729366004612d81565b611212565b34801561073a57600080fd5b506103d2610749366004612f9c565b6112fe565b34801561075a57600080fd5b506104a860065481565b34801561077057600080fd5b506005546001600160a01b031661047f565b34801561078e57600080fd5b5061039c6114af565b3480156107a357600080fd5b506103656107b2366004612d81565b6114be565b3480156107c357600080fd5b506103d26107d2366004612e31565b61159a565b3480156107e357600080fd5b506103d26107f2366004612e31565b611633565b34801561080357600080fd5b506104a860085481565b34801561081957600080fd5b506103d2610828366004612e5d565b60196020526000908152604090205460ff1681565b34801561084957600080fd5b50610365610858366004612fca565b611640565b34801561086957600080fd5b50600e546103d290610100900460ff1681565b34801561088857600080fd5b50610365610897366004612d81565b61186e565b3480156108a857600080fd5b506103656108b7366004612ec2565b6118f7565b3480156108c857600080fd5b506104a860155481565b3480156108de57600080fd5b506103656108ed366004612ec2565b611a00565b3480156108fe57600080fd5b506104a8600f5481565b34801561091457600080fd5b50610365610923366004612ec2565b611b4b565b34801561093457600080fd5b506104a8610943366004612f9c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561097a57600080fd5b506104a8600a5481565b34801561099057600080fd5b506104a8600c5481565b3480156109a657600080fd5b506104a860115481565b3480156109bc57600080fd5b506103656109cb366004612e5d565b611c52565b3480156109dc57600080fd5b50610365611d3d565b3480156109f157600080fd5b506104a860145481565b348015610a0757600080fd5b506104a8600d5481565b6005546001600160a01b03163314610a445760405162461bcd60e51b8152600401610a3b90613036565b60405180910390fd5b6001600160a01b0382166000908152601a602052604090205460ff1615158115151415610abf5760405162461bcd60e51b8152602060048201526024808201527f4163636f756e7420697320616c726561647920696e20746865207361696420736044820152637461746560e01b6064820152608401610a3b565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610b145760405162461bcd60e51b8152600401610a3b90613036565b60138290556014819055610b288183613081565b6012819055601e1015610b7d5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420333025206f72206c6573730000006044820152606401610a3b565b5050565b606060038054610b9090613099565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbc90613099565b8015610c095780601f10610bde57610100808354040283529160200191610c09565b820191906000526020600020905b815481529060010190602001808311610bec57829003601f168201915b5050505050905090565b6000610c20338484611da9565b5060015b92915050565b6000610c37848484611ecd565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610cbc5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a3b565b610cc98533858403611da9565b506001949350505050565b6005546001600160a01b03163314610cfe5760405162461bcd60e51b8152600401610a3b90613036565b670de0b6b3a76400006103e8610d1360025490565b610d1e9060016130d4565b610d2891906130f3565b610d3291906130f3565b811015610d935760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b6064820152608401610a3b565b610da581670de0b6b3a76400006130d4565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610c20918590610e18908690613081565b611da9565b6005546001600160a01b03163314610e475760405162461bcd60e51b8152600401610a3b90613036565b60005b82811015610eb65781601a6000868685818110610e6957610e69613115565b9050602002016020810190610e7e9190612e5d565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610eaf8161312b565b9050610e4a565b50505050565b6005546001600160a01b03163314610ee65760405162461bcd60e51b8152600401610a3b90613036565b600e54610100900460ff1615610f3e5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420726520656e61626c652074726164696e6700000000000000006044820152606401610a3b565b600e805462ff0000198415156101009081029190911662ffff0019909216919091176201000017918290556040517fe185248899f361d51a48833938ab33493ebd7272d195abf7f51a833ea813881292610faa92900460ff169084909115158252602082015260400190565b60405180910390a1600e54610100900460ff168015610fc95750600c54155b15610b7d5743600c55600d5550565b6005546001600160a01b031633146110025760405162461bcd60e51b8152600401610a3b90613036565b6001600160a01b0381166110645760405162461bcd60e51b8152602060048201526024808201527f5f54726561737572794164647265737320616464726573732063616e6e6f74206044820152630626520360e41b6064820152608401610a3b565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f90600090a250565b6005546001600160a01b031633146110d85760405162461bcd60e51b8152600401610a3b90613036565b601082905560118190556110ec8183613081565b600f8181551015610b7d5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313525206f72206c6573730000006044820152606401610a3b565b6005546001600160a01b031633146111695760405162461bcd60e51b8152600401610a3b90613036565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146111dd5760405162461bcd60e51b8152600401610a3b90613036565b600e805460ff191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b0316331461123c5760405162461bcd60e51b8152600401610a3b90613036565b806112d3577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156112d35760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610a3b565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6005546000906001600160a01b0316331461132b5760405162461bcd60e51b8152600401610a3b90613036565b6001600160a01b0383166113815760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610a3b565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa1580156113c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ec9190613146565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af115801561143f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611463919061315f565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b606060048054610b9090613099565b6005546001600160a01b031633146114e85760405162461bcd60e51b8152600401610a3b90613036565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156115905760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a3b565b610b7d8282612716565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561161c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a3b565b6116293385858403611da9565b5060019392505050565b6000610c20338484611ecd565b6005546001600160a01b0316331461166a5760405162461bcd60e51b8152600401610a3b90613036565b61032183106116d15760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610a3b565b8281146117315760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610a3b565b6000805b8481101561178a576117496012600a613260565b84848381811061175b5761175b613115565b9050602002013561176c91906130d4565b6117769083613081565b9150806117828161312b565b915050611735565b50336000908152602081905260409020548111156117ea5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610a3b565b60005b84811015611866576118543387878481811061180b5761180b613115565b90506020020160208101906118209190612e5d565b61182c6012600a613260565b87878681811061183e5761183e613115565b9050602002013561184f91906130d4565b611ecd565b8061185e8161312b565b9150506117ed565b505050505050565b6005546001600160a01b031633146118985760405162461bcd60e51b8152600401610a3b90613036565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146119215760405162461bcd60e51b8152600401610a3b90613036565b670de0b6b3a76400006103e861193660025490565b6119419060036130d4565b61194b91906130f3565b61195591906130f3565b8110156119b95760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610a3b565b6119cb81670de0b6b3a76400006130d4565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610dd6565b6005546001600160a01b03163314611a2a5760405162461bcd60e51b8152600401610a3b90613036565b620186a0611a3760025490565b611a429060016130d4565b611a4c91906130f3565b811015611ab95760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610a3b565b6103e8611ac560025490565b611ad09060016130d4565b611ada91906130f3565b811115611b465760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610a3b565b600a55565b6005546001600160a01b03163314611b755760405162461bcd60e51b8152600401610a3b90613036565b670de0b6b3a76400006103e8611b8a60025490565b611b959060016130d4565b611b9f91906130f3565b611ba991906130f3565b811015611c0b5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b6064820152608401610a3b565b611c1d81670de0b6b3a76400006130d4565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610dd6565b6005546001600160a01b03163314611c7c5760405162461bcd60e51b8152600401610a3b90613036565b6001600160a01b038116611ce15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a3b565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611d675760405162461bcd60e51b8152600401610a3b90613036565b604051600090339047908381818185875af1925050503d8060008114610eb6576040519150601f19603f3d011682016040523d82523d6000602084013e610eb6565b6001600160a01b038316611e0b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a3b565b6001600160a01b038216611e6c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a3b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611ef35760405162461bcd60e51b8152600401610a3b9061326f565b6001600160a01b038216611f195760405162461bcd60e51b8152600401610a3b906132b4565b60008111611f695760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610a3b565b6001600160a01b0383166000908152601a602052604090205460ff1615611fd25760405162461bcd60e51b815260206004820152601b60248201527f596f7520617265206120736e697065722c20676574206c6966652100000000006044820152606401610a3b565b6001600160a01b0382166000908152601a602052604090205460ff161561203b5760405162461bcd60e51b815260206004820152601b60248201527f596f7520617265206120736e697065722c20676574206c6966652100000000006044820152606401610a3b565b600e5460ff16156123fc576005546001600160a01b0384811691161480159061207257506005546001600160a01b03838116911614155b801561208657506001600160a01b03821615155b801561209d57506001600160a01b03821661dead14155b156123fc57600e54610100900460ff16612135576001600160a01b03831660009081526018602052604090205460ff16806120f057506001600160a01b03821660009081526018602052604090205460ff165b6121355760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a3b565b6000600c541180156121555750600d54600c546121529190613081565b43105b1561217e576001600160a01b0382166000908152601a60205260409020805460ff191660011790555b6001600160a01b03831660009081526019602052604090205460ff1680156121bf57506001600160a01b03821660009081526018602052604090205460ff16155b1561229b576006548111156122275760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610a3b565b6008546001600160a01b03831660009081526020819052604090205461224d9083613081565b11156122965760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610a3b565b6123fc565b6001600160a01b03821660009081526019602052604090205460ff1680156122dc57506001600160a01b03831660009081526018602052604090205460ff16155b15612346576007548111156122965760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610a3b565b6001600160a01b03821660009081526018602052604090205460ff1615801561238857506001600160a01b03831660009081526018602052604090205460ff16155b156123fc576008546001600160a01b0383166000908152602081905260409020546123b39083613081565b11156123fc5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610a3b565b30600090815260208190526040902054600a54811080159081906124285750600e5462010000900460ff165b8015612437575060095460ff16155b801561245c57506001600160a01b03851660009081526019602052604090205460ff16155b801561248157506001600160a01b03851660009081526017602052604090205460ff16155b80156124a657506001600160a01b03841660009081526017602052604090205460ff16155b156124cb576009805460ff191660011790556124c0612780565b6009805460ff191690555b6001600160a01b03851660009081526017602052604090205460019060ff168061250d57506001600160a01b03851660009081526017602052604090205460ff165b15612516575060005b6000808215612701576000600c5411801561253e575043600c54600661253c9190613081565b115b1561257a5760646125508760626130d4565b61255a91906130f3565b600b549091506125759089906001600160a01b0316836128e5565b6126d9565b6001600160a01b03871660009081526019602052604090205460ff1680156125a457506000601254115b1561262c576064601254876125b991906130d4565b6125c391906130f3565b9150601254601454836125d691906130d4565b6125e091906130f3565b601660008282546125f19190613081565b909155505060125460135461260690846130d4565b61261091906130f3565b601560008282546126219190613081565b909155506126d99050565b6001600160a01b03881660009081526019602052604090205460ff16801561265657506000600f54115b156126d9576064600f548761266b91906130d4565b61267591906130f3565b9150600f546011548361268891906130d4565b61269291906130f3565b601660008282546126a39190613081565b9091555050600f546010546126b890846130d4565b6126c291906130f3565b601560008282546126d39190613081565b90915550505b81156126ea576126ea8830846128e5565b6126f48183613081565b6126fe90876132f7565b95505b61270c8888886128e5565b5050505050505050565b6001600160a01b0382166000908152601960205260409020805460ff19168215151790556127448282612a3a565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b30600090815260208190526040812054905060006015546016546127a49190613081565b90508115806127b1575080155b156127ba575050565b600a80546127c7916130d4565b8211156127de57600a80546127db916130d4565b91505b600080600283601654866127f291906130d4565b6127fc91906130f3565b61280691906130f3565b905061281a61281582866132f7565b612a9d565b60165447908190600090612830906002906130f3565b61283a90876132f7565b60155461284790856130d4565b61285191906130f3565b905061285d81836132f7565b60006016819055601555915083158015906128785750600082115b15612887576128878483612c55565b600b546040516001600160a01b03909116904790600081818185875af1925050503d80600081146128d4576040519150601f19603f3d011682016040523d82523d6000602084013e6128d9565b606091505b50505050505050505050565b6001600160a01b03831661290b5760405162461bcd60e51b8152600401610a3b9061326f565b6001600160a01b0382166129315760405162461bcd60e51b8152600401610a3b906132b4565b6001600160a01b038316600090815260208190526040902054818110156129a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a3b565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906129e0908490613081565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a2c91815260200190565b60405180910390a350505050565b6001600160a01b038216600081815260186020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612ad257612ad2613115565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b74919061330e565b81600181518110612b8757612b87613115565b60200260200101906001600160a01b031690816001600160a01b031681525050612bd2307f000000000000000000000000000000000000000000000000000000000000000084611da9565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612c2790859060009086903090429060040161332b565b600060405180830381600087803b158015612c4157600080fd5b505af1158015611866573d6000803e3d6000fd5b612c80307f000000000000000000000000000000000000000000000000000000000000000084611da9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d719823085600080612cc76005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612d2f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d54919061339c565b5050505050565b6001600160a01b0381168114612d7057600080fd5b50565b8015158114612d7057600080fd5b60008060408385031215612d9457600080fd5b8235612d9f81612d5b565b91506020830135612daf81612d73565b809150509250929050565b60008060408385031215612dcd57600080fd5b50508035926020909101359150565b600060208083528351808285015260005b81811015612e0957858101830151858201604001528201612ded565b81811115612e1b576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215612e4457600080fd5b8235612e4f81612d5b565b946020939093013593505050565b600060208284031215612e6f57600080fd5b8135612e7a81612d5b565b9392505050565b600080600060608486031215612e9657600080fd5b8335612ea181612d5b565b92506020840135612eb181612d5b565b929592945050506040919091013590565b600060208284031215612ed457600080fd5b5035919050565b60008083601f840112612eed57600080fd5b50813567ffffffffffffffff811115612f0557600080fd5b6020830191508360208260051b8501011115612f2057600080fd5b9250929050565b600080600060408486031215612f3c57600080fd5b833567ffffffffffffffff811115612f5357600080fd5b612f5f86828701612edb565b9094509250506020840135612f7381612d73565b809150509250925092565b60008060408385031215612f9157600080fd5b8235612e4f81612d73565b60008060408385031215612faf57600080fd5b8235612fba81612d5b565b91506020830135612daf81612d5b565b60008060008060408587031215612fe057600080fd5b843567ffffffffffffffff80821115612ff857600080fd5b61300488838901612edb565b9096509450602087013591508082111561301d57600080fd5b5061302a87828801612edb565b95989497509550505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156130945761309461306b565b500190565b600181811c908216806130ad57607f821691505b602082108114156130ce57634e487b7160e01b600052602260045260246000fd5b50919050565b60008160001904831182151516156130ee576130ee61306b565b500290565b60008261311057634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060001982141561313f5761313f61306b565b5060010190565b60006020828403121561315857600080fd5b5051919050565b60006020828403121561317157600080fd5b8151612e7a81612d73565b600181815b808511156131b757816000190482111561319d5761319d61306b565b808516156131aa57918102915b93841c9390800290613181565b509250929050565b6000826131ce57506001610c24565b816131db57506000610c24565b81600181146131f157600281146131fb57613217565b6001915050610c24565b60ff84111561320c5761320c61306b565b50506001821b610c24565b5060208310610133831016604e8410600b841016171561323a575081810a610c24565b613244838361317c565b80600019048211156132585761325861306b565b029392505050565b6000612e7a60ff8416836131bf565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000828210156133095761330961306b565b500390565b60006020828403121561332057600080fd5b8151612e7a81612d5b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561337b5784516001600160a01b031683529383019391830191600101613356565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156133b157600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220b49426dc79d002a53757820d0c3c0e70ef9cde710e43fcd968a79d82b6958ecc64736f6c634300080c00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x6080604052600436106103395760003560e01c8063751039fc116101ab578063c0246668116100f7578063e2f4560511610095578063f2fde38b1161006f578063f2fde38b146109b0578063f5648a4f146109d0578063f6374342146109e5578063fabb0b4f146109fb57600080fd5b8063e2f456051461096e578063ee40166e14610984578063f11a24d31461099a57600080fd5b8063d257b34f116100d1578063d257b34f146108d2578063d85ba063146108f2578063dc3f0d0f14610908578063dd62ed3e1461092857600080fd5b8063c02466681461087c578063c18bc1951461089c578063cc2ffe7c146108bc57600080fd5b80639a7a23d611610164578063aa4bde281161013e578063aa4bde28146107f7578063b62496f51461080d578063bb4c9f0b1461083d578063bbc0c7421461085d57600080fd5b80639a7a23d614610797578063a457c2d7146107b7578063a9059cbb146107d757600080fd5b8063751039fc146106f95780637571336a1461070e5780638366e79a1461072e57806388e765ff1461074e5780638da5cb5b1461076457806395d89b411461078257600080fd5b806349bd5a5e1161028557806366ca9b83116102235780636b2fb124116101fd5780636b2fb124146106785780636ddd17131461068e57806370a08231146106ae578063715018a6146106e457600080fd5b806366ca9b831461062c57806366d602ae1461064c5780636a486a8e1461066257600080fd5b80635c068a8c1161025f5780635c068a8c146105b65780635d54c0af146105cc5780635e83ae76146105ec5780636605bfda1461060c57600080fd5b806349bd5a5e146105485780634a62bb651461057c5780635b5c251f1461059657600080fd5b80631694505e116102f257806323b872dd116102cc57806323b872dd146104cc5780632be32b61146104ec578063313ce5671461050c578063395093511461052857600080fd5b80631694505e1461044b57806318160ddd146104975780631a8145bb146104b657600080fd5b8063013afc561461034557806302dbd8f81461036757806306fdde0314610387578063095ea7b3146103b25780630f3a325f146103e257806310d5de531461041b57600080fd5b3661034057005b600080fd5b34801561035157600080fd5b50610365610360366004612d81565b610a11565b005b34801561037357600080fd5b50610365610382366004612dba565b610aea565b34801561039357600080fd5b5061039c610b81565b6040516103a99190612ddc565b60405180910390f35b3480156103be57600080fd5b506103d26103cd366004612e31565b610c13565b60405190151581526020016103a9565b3480156103ee57600080fd5b506103d26103fd366004612e5d565b6001600160a01b03166000908152601a602052604090205460ff1690565b34801561042757600080fd5b506103d2610436366004612e5d565b60186020526000908152604090205460ff1681565b34801561045757600080fd5b5061047f7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016103a9565b3480156104a357600080fd5b506002545b6040519081526020016103a9565b3480156104c257600080fd5b506104a860165481565b3480156104d857600080fd5b506103d26104e7366004612e81565b610c2a565b3480156104f857600080fd5b50610365610507366004612ec2565b610cd4565b34801561051857600080fd5b50604051601281526020016103a9565b34801561053457600080fd5b506103d2610543366004612e31565b610de1565b34801561055457600080fd5b5061047f7f000000000000000000000000e312168dead67f13fb25cfa49a7a47142d21900a81565b34801561058857600080fd5b50600e546103d29060ff1681565b3480156105a257600080fd5b50600b5461047f906001600160a01b031681565b3480156105c257600080fd5b506104a860105481565b3480156105d857600080fd5b506103656105e7366004612f27565b610e1d565b3480156105f857600080fd5b50610365610607366004612f7e565b610ebc565b34801561061857600080fd5b50610365610627366004612e5d565b610fd8565b34801561063857600080fd5b50610365610647366004612dba565b6110ae565b34801561065857600080fd5b506104a860075481565b34801561066e57600080fd5b506104a860125481565b34801561068457600080fd5b506104a860135481565b34801561069a57600080fd5b50600e546103d29062010000900460ff1681565b3480156106ba57600080fd5b506104a86106c9366004612e5d565b6001600160a01b031660009081526020819052604090205490565b3480156106f057600080fd5b5061036561113f565b34801561070557600080fd5b506103656111b3565b34801561071a57600080fd5b50610365610729366004612d81565b611212565b34801561073a57600080fd5b506103d2610749366004612f9c565b6112fe565b34801561075a57600080fd5b506104a860065481565b34801561077057600080fd5b506005546001600160a01b031661047f565b34801561078e57600080fd5b5061039c6114af565b3480156107a357600080fd5b506103656107b2366004612d81565b6114be565b3480156107c357600080fd5b506103d26107d2366004612e31565b61159a565b3480156107e357600080fd5b506103d26107f2366004612e31565b611633565b34801561080357600080fd5b506104a860085481565b34801561081957600080fd5b506103d2610828366004612e5d565b60196020526000908152604090205460ff1681565b34801561084957600080fd5b50610365610858366004612fca565b611640565b34801561086957600080fd5b50600e546103d290610100900460ff1681565b34801561088857600080fd5b50610365610897366004612d81565b61186e565b3480156108a857600080fd5b506103656108b7366004612ec2565b6118f7565b3480156108c857600080fd5b506104a860155481565b3480156108de57600080fd5b506103656108ed366004612ec2565b611a00565b3480156108fe57600080fd5b506104a8600f5481565b34801561091457600080fd5b50610365610923366004612ec2565b611b4b565b34801561093457600080fd5b506104a8610943366004612f9c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561097a57600080fd5b506104a8600a5481565b34801561099057600080fd5b506104a8600c5481565b3480156109a657600080fd5b506104a860115481565b3480156109bc57600080fd5b506103656109cb366004612e5d565b611c52565b3480156109dc57600080fd5b50610365611d3d565b3480156109f157600080fd5b506104a860145481565b348015610a0757600080fd5b506104a8600d5481565b6005546001600160a01b03163314610a445760405162461bcd60e51b8152600401610a3b90613036565b60405180910390fd5b6001600160a01b0382166000908152601a602052604090205460ff1615158115151415610abf5760405162461bcd60e51b8152602060048201526024808201527f4163636f756e7420697320616c726561647920696e20746865207361696420736044820152637461746560e01b6064820152608401610a3b565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610b145760405162461bcd60e51b8152600401610a3b90613036565b60138290556014819055610b288183613081565b6012819055601e1015610b7d5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420333025206f72206c6573730000006044820152606401610a3b565b5050565b606060038054610b9090613099565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbc90613099565b8015610c095780601f10610bde57610100808354040283529160200191610c09565b820191906000526020600020905b815481529060010190602001808311610bec57829003601f168201915b5050505050905090565b6000610c20338484611da9565b5060015b92915050565b6000610c37848484611ecd565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610cbc5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a3b565b610cc98533858403611da9565b506001949350505050565b6005546001600160a01b03163314610cfe5760405162461bcd60e51b8152600401610a3b90613036565b670de0b6b3a76400006103e8610d1360025490565b610d1e9060016130d4565b610d2891906130f3565b610d3291906130f3565b811015610d935760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b6064820152608401610a3b565b610da581670de0b6b3a76400006130d4565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610c20918590610e18908690613081565b611da9565b6005546001600160a01b03163314610e475760405162461bcd60e51b8152600401610a3b90613036565b60005b82811015610eb65781601a6000868685818110610e6957610e69613115565b9050602002016020810190610e7e9190612e5d565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610eaf8161312b565b9050610e4a565b50505050565b6005546001600160a01b03163314610ee65760405162461bcd60e51b8152600401610a3b90613036565b600e54610100900460ff1615610f3e5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420726520656e61626c652074726164696e6700000000000000006044820152606401610a3b565b600e805462ff0000198415156101009081029190911662ffff0019909216919091176201000017918290556040517fe185248899f361d51a48833938ab33493ebd7272d195abf7f51a833ea813881292610faa92900460ff169084909115158252602082015260400190565b60405180910390a1600e54610100900460ff168015610fc95750600c54155b15610b7d5743600c55600d5550565b6005546001600160a01b031633146110025760405162461bcd60e51b8152600401610a3b90613036565b6001600160a01b0381166110645760405162461bcd60e51b8152602060048201526024808201527f5f54726561737572794164647265737320616464726573732063616e6e6f74206044820152630626520360e41b6064820152608401610a3b565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f90600090a250565b6005546001600160a01b031633146110d85760405162461bcd60e51b8152600401610a3b90613036565b601082905560118190556110ec8183613081565b600f8181551015610b7d5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313525206f72206c6573730000006044820152606401610a3b565b6005546001600160a01b031633146111695760405162461bcd60e51b8152600401610a3b90613036565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146111dd5760405162461bcd60e51b8152600401610a3b90613036565b600e805460ff191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b0316331461123c5760405162461bcd60e51b8152600401610a3b90613036565b806112d3577f000000000000000000000000e312168dead67f13fb25cfa49a7a47142d21900a6001600160a01b0316826001600160a01b031614156112d35760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610a3b565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6005546000906001600160a01b0316331461132b5760405162461bcd60e51b8152600401610a3b90613036565b6001600160a01b0383166113815760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610a3b565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa1580156113c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ec9190613146565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af115801561143f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611463919061315f565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b606060048054610b9090613099565b6005546001600160a01b031633146114e85760405162461bcd60e51b8152600401610a3b90613036565b7f000000000000000000000000e312168dead67f13fb25cfa49a7a47142d21900a6001600160a01b0316826001600160a01b031614156115905760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a3b565b610b7d8282612716565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561161c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a3b565b6116293385858403611da9565b5060019392505050565b6000610c20338484611ecd565b6005546001600160a01b0316331461166a5760405162461bcd60e51b8152600401610a3b90613036565b61032183106116d15760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610a3b565b8281146117315760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610a3b565b6000805b8481101561178a576117496012600a613260565b84848381811061175b5761175b613115565b9050602002013561176c91906130d4565b6117769083613081565b9150806117828161312b565b915050611735565b50336000908152602081905260409020548111156117ea5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610a3b565b60005b84811015611866576118543387878481811061180b5761180b613115565b90506020020160208101906118209190612e5d565b61182c6012600a613260565b87878681811061183e5761183e613115565b9050602002013561184f91906130d4565b611ecd565b8061185e8161312b565b9150506117ed565b505050505050565b6005546001600160a01b031633146118985760405162461bcd60e51b8152600401610a3b90613036565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146119215760405162461bcd60e51b8152600401610a3b90613036565b670de0b6b3a76400006103e861193660025490565b6119419060036130d4565b61194b91906130f3565b61195591906130f3565b8110156119b95760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610a3b565b6119cb81670de0b6b3a76400006130d4565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610dd6565b6005546001600160a01b03163314611a2a5760405162461bcd60e51b8152600401610a3b90613036565b620186a0611a3760025490565b611a429060016130d4565b611a4c91906130f3565b811015611ab95760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610a3b565b6103e8611ac560025490565b611ad09060016130d4565b611ada91906130f3565b811115611b465760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610a3b565b600a55565b6005546001600160a01b03163314611b755760405162461bcd60e51b8152600401610a3b90613036565b670de0b6b3a76400006103e8611b8a60025490565b611b959060016130d4565b611b9f91906130f3565b611ba991906130f3565b811015611c0b5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b6064820152608401610a3b565b611c1d81670de0b6b3a76400006130d4565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610dd6565b6005546001600160a01b03163314611c7c5760405162461bcd60e51b8152600401610a3b90613036565b6001600160a01b038116611ce15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a3b565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611d675760405162461bcd60e51b8152600401610a3b90613036565b604051600090339047908381818185875af1925050503d8060008114610eb6576040519150601f19603f3d011682016040523d82523d6000602084013e610eb6565b6001600160a01b038316611e0b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a3b565b6001600160a01b038216611e6c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a3b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611ef35760405162461bcd60e51b8152600401610a3b9061326f565b6001600160a01b038216611f195760405162461bcd60e51b8152600401610a3b906132b4565b60008111611f695760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610a3b565b6001600160a01b0383166000908152601a602052604090205460ff1615611fd25760405162461bcd60e51b815260206004820152601b60248201527f596f7520617265206120736e697065722c20676574206c6966652100000000006044820152606401610a3b565b6001600160a01b0382166000908152601a602052604090205460ff161561203b5760405162461bcd60e51b815260206004820152601b60248201527f596f7520617265206120736e697065722c20676574206c6966652100000000006044820152606401610a3b565b600e5460ff16156123fc576005546001600160a01b0384811691161480159061207257506005546001600160a01b03838116911614155b801561208657506001600160a01b03821615155b801561209d57506001600160a01b03821661dead14155b156123fc57600e54610100900460ff16612135576001600160a01b03831660009081526018602052604090205460ff16806120f057506001600160a01b03821660009081526018602052604090205460ff165b6121355760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a3b565b6000600c541180156121555750600d54600c546121529190613081565b43105b1561217e576001600160a01b0382166000908152601a60205260409020805460ff191660011790555b6001600160a01b03831660009081526019602052604090205460ff1680156121bf57506001600160a01b03821660009081526018602052604090205460ff16155b1561229b576006548111156122275760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610a3b565b6008546001600160a01b03831660009081526020819052604090205461224d9083613081565b11156122965760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610a3b565b6123fc565b6001600160a01b03821660009081526019602052604090205460ff1680156122dc57506001600160a01b03831660009081526018602052604090205460ff16155b15612346576007548111156122965760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610a3b565b6001600160a01b03821660009081526018602052604090205460ff1615801561238857506001600160a01b03831660009081526018602052604090205460ff16155b156123fc576008546001600160a01b0383166000908152602081905260409020546123b39083613081565b11156123fc5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610a3b565b30600090815260208190526040902054600a54811080159081906124285750600e5462010000900460ff165b8015612437575060095460ff16155b801561245c57506001600160a01b03851660009081526019602052604090205460ff16155b801561248157506001600160a01b03851660009081526017602052604090205460ff16155b80156124a657506001600160a01b03841660009081526017602052604090205460ff16155b156124cb576009805460ff191660011790556124c0612780565b6009805460ff191690555b6001600160a01b03851660009081526017602052604090205460019060ff168061250d57506001600160a01b03851660009081526017602052604090205460ff165b15612516575060005b6000808215612701576000600c5411801561253e575043600c54600661253c9190613081565b115b1561257a5760646125508760626130d4565b61255a91906130f3565b600b549091506125759089906001600160a01b0316836128e5565b6126d9565b6001600160a01b03871660009081526019602052604090205460ff1680156125a457506000601254115b1561262c576064601254876125b991906130d4565b6125c391906130f3565b9150601254601454836125d691906130d4565b6125e091906130f3565b601660008282546125f19190613081565b909155505060125460135461260690846130d4565b61261091906130f3565b601560008282546126219190613081565b909155506126d99050565b6001600160a01b03881660009081526019602052604090205460ff16801561265657506000600f54115b156126d9576064600f548761266b91906130d4565b61267591906130f3565b9150600f546011548361268891906130d4565b61269291906130f3565b601660008282546126a39190613081565b9091555050600f546010546126b890846130d4565b6126c291906130f3565b601560008282546126d39190613081565b90915550505b81156126ea576126ea8830846128e5565b6126f48183613081565b6126fe90876132f7565b95505b61270c8888886128e5565b5050505050505050565b6001600160a01b0382166000908152601960205260409020805460ff19168215151790556127448282612a3a565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b30600090815260208190526040812054905060006015546016546127a49190613081565b90508115806127b1575080155b156127ba575050565b600a80546127c7916130d4565b8211156127de57600a80546127db916130d4565b91505b600080600283601654866127f291906130d4565b6127fc91906130f3565b61280691906130f3565b905061281a61281582866132f7565b612a9d565b60165447908190600090612830906002906130f3565b61283a90876132f7565b60155461284790856130d4565b61285191906130f3565b905061285d81836132f7565b60006016819055601555915083158015906128785750600082115b15612887576128878483612c55565b600b546040516001600160a01b03909116904790600081818185875af1925050503d80600081146128d4576040519150601f19603f3d011682016040523d82523d6000602084013e6128d9565b606091505b50505050505050505050565b6001600160a01b03831661290b5760405162461bcd60e51b8152600401610a3b9061326f565b6001600160a01b0382166129315760405162461bcd60e51b8152600401610a3b906132b4565b6001600160a01b038316600090815260208190526040902054818110156129a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a3b565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906129e0908490613081565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a2c91815260200190565b60405180910390a350505050565b6001600160a01b038216600081815260186020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612ad257612ad2613115565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b74919061330e565b81600181518110612b8757612b87613115565b60200260200101906001600160a01b031690816001600160a01b031681525050612bd2307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611da9565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612c2790859060009086903090429060040161332b565b600060405180830381600087803b158015612c4157600080fd5b505af1158015611866573d6000803e3d6000fd5b612c80307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611da9565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d719823085600080612cc76005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612d2f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d54919061339c565b5050505050565b6001600160a01b0381168114612d7057600080fd5b50565b8015158114612d7057600080fd5b60008060408385031215612d9457600080fd5b8235612d9f81612d5b565b91506020830135612daf81612d73565b809150509250929050565b60008060408385031215612dcd57600080fd5b50508035926020909101359150565b600060208083528351808285015260005b81811015612e0957858101830151858201604001528201612ded565b81811115612e1b576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215612e4457600080fd5b8235612e4f81612d5b565b946020939093013593505050565b600060208284031215612e6f57600080fd5b8135612e7a81612d5b565b9392505050565b600080600060608486031215612e9657600080fd5b8335612ea181612d5b565b92506020840135612eb181612d5b565b929592945050506040919091013590565b600060208284031215612ed457600080fd5b5035919050565b60008083601f840112612eed57600080fd5b50813567ffffffffffffffff811115612f0557600080fd5b6020830191508360208260051b8501011115612f2057600080fd5b9250929050565b600080600060408486031215612f3c57600080fd5b833567ffffffffffffffff811115612f5357600080fd5b612f5f86828701612edb565b9094509250506020840135612f7381612d73565b809150509250925092565b60008060408385031215612f9157600080fd5b8235612e4f81612d73565b60008060408385031215612faf57600080fd5b8235612fba81612d5b565b91506020830135612daf81612d5b565b60008060008060408587031215612fe057600080fd5b843567ffffffffffffffff80821115612ff857600080fd5b61300488838901612edb565b9096509450602087013591508082111561301d57600080fd5b5061302a87828801612edb565b95989497509550505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156130945761309461306b565b500190565b600181811c908216806130ad57607f821691505b602082108114156130ce57634e487b7160e01b600052602260045260246000fd5b50919050565b60008160001904831182151516156130ee576130ee61306b565b500290565b60008261311057634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060001982141561313f5761313f61306b565b5060010190565b60006020828403121561315857600080fd5b5051919050565b60006020828403121561317157600080fd5b8151612e7a81612d73565b600181815b808511156131b757816000190482111561319d5761319d61306b565b808516156131aa57918102915b93841c9390800290613181565b509250929050565b6000826131ce57506001610c24565b816131db57506000610c24565b81600181146131f157600281146131fb57613217565b6001915050610c24565b60ff84111561320c5761320c61306b565b50506001821b610c24565b5060208310610133831016604e8410600b841016171561323a575081810a610c24565b613244838361317c565b80600019048211156132585761325861306b565b029392505050565b6000612e7a60ff8416836131bf565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000828210156133095761330961306b565b500390565b60006020828403121561332057600080fd5b8151612e7a81612d5b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561337b5784516001600160a01b031683529383019391830191600101613356565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156133b157600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220b49426dc79d002a53757820d0c3c0e70ef9cde710e43fcd968a79d82b6958ecc64736f6c634300080c0033

Deployed Bytecode Sourcemap

10308:15598:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23547:227;;;;;;;;;;-1:-1:-1;23547:227:0;;;;;:::i;:::-;;:::i;:::-;;16211:313;;;;;;;;;;-1:-1:-1;16211:313:0;;;;;:::i;:::-;;:::i;5026:100::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5940:169;;;;;;;;;;-1:-1:-1;5940:169:0;;;;;:::i;:::-;;:::i;:::-;;;2000:14:1;;1993:22;1975:41;;1963:2;1948:18;5940:169:0;1835:187:1;23998:106:0;;;;;;;;;;-1:-1:-1;23998:106:0;;;;;:::i;:::-;-1:-1:-1;;;;;24078:18:0;24054:4;24078:18;;;:9;:18;;;;;;;;;23998:106;11322:64;;;;;;;;;;-1:-1:-1;11322:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10464:43;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2461:32:1;;;2443:51;;2431:2;2416:18;10464:43:0;2279:221:1;5347:108:0;;;;;;;;;;-1:-1:-1;5435:12:0;;5347:108;;;2651:25:1;;;2639:2;2624:18;5347:108:0;2505:177:1;11165:33:0;;;;;;;;;;;;;;;;6117:480;;;;;;;;;;-1:-1:-1;6117:480:0;;;;;:::i;:::-;;:::i;13953:269::-;;;;;;;;;;-1:-1:-1;13953:269:0;;;;;:::i;:::-;;:::i;5246:93::-;;;;;;;;;;-1:-1:-1;5246:93:0;;5329:2;3475:36:1;;3463:2;3448:18;5246:93:0;3333:184:1;6605:215:0;;;;;;;;;;-1:-1:-1;6605:215:0;;;;;:::i;:::-;;:::i;10514:38::-;;;;;;;;;;;;;;;10785:33;;;;;;;;;;-1:-1:-1;10785:33:0;;;;;;;;10631:30;;;;;;;;;;-1:-1:-1;10631:30:0;;;;-1:-1:-1;;;;;10631:30:0;;;10939:29;;;;;;;;;;;;;;;;23782:208;;;;;;;;;;-1:-1:-1;23782:208:0;;;;;:::i;:::-;;:::i;21590:425::-;;;;;;;;;;-1:-1:-1;21590:425:0;;;;;:::i;:::-;;:::i;23258:281::-;;;;;;;;;;-1:-1:-1;23258:281:0;;;;;:::i;:::-;;:::i;15897:306::-;;;;;;;;;;-1:-1:-1;15897:306:0;;;;;:::i;:::-;;:::i;10390:28::-;;;;;;;;;;;;;;;;11014;;;;;;;;;;;;;;;;11049:30;;;;;;;;;;;;;;;;10865:31;;;;;;;;;;-1:-1:-1;10865:31:0;;;;;;;;;;;5463:127;;;;;;;;;;-1:-1:-1;5463:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;5564:18:0;5537:7;5564:18;;;;;;;;;;;;5463:127;9067:150;;;;;;;;;;;;;:::i;14562:115::-;;;;;;;;;;;;;:::i;14902:267::-;;;;;;;;;;-1:-1:-1;14902:267:0;;;;;:::i;:::-;;:::i;25290:381::-;;;;;;;;;;-1:-1:-1;25290:381:0;;;;;:::i;:::-;;:::i;10356:27::-;;;;;;;;;;;;;;;;8853:79;;;;;;;;;;-1:-1:-1;8918:6:0;;-1:-1:-1;;;;;8918:6:0;8853:79;;5134:104;;;;;;;;;;;;;:::i;21040:246::-;;;;;;;;;;-1:-1:-1;21040:246:0;;;;;:::i;:::-;;:::i;6828:401::-;;;;;;;;;;-1:-1:-1;6828:401:0;;;;;:::i;:::-;;:::i;5598:175::-;;;;;;;;;;-1:-1:-1;5598:175:0;;;;;:::i;:::-;;:::i;10425:30::-;;;;;;;;;;;;;;;;11544:58;;;;;;;;;;-1:-1:-1;11544:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22560:688;;;;;;;;;;-1:-1:-1;22560:688:0;;;;;:::i;:::-;;:::i;10825:33::-;;;;;;;;;;-1:-1:-1;10825:33:0;;;;;;;;;;;16532:182;;;;;;;;;;-1:-1:-1;16532:182:0;;;;;:::i;:::-;;:::i;15177:284::-;;;;;;;;;;-1:-1:-1;15177:284:0;;;;;:::i;:::-;;:::i;11126:32::-;;;;;;;;;;;;;;;;15531:350;;;;;;;;;;-1:-1:-1;15531:350:0;;;;;:::i;:::-;;:::i;10905:27::-;;;;;;;;;;;;;;;;14230:274;;;;;;;;;;-1:-1:-1;14230:274:0;;;;;:::i;:::-;;:::i;5781:151::-;;;;;;;;;;-1:-1:-1;5781:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;5897:18:0;;;5870:7;5897:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5781:151;10589:33;;;;;;;;;;;;;;;;10670:37;;;;;;;;;;;;;;;;10975:30;;;;;;;;;;;;;;;;9225:244;;;;;;;;;;-1:-1:-1;9225:244:0;;;;;:::i;:::-;;:::i;25741:160::-;;;;;;;;;;;;;:::i;11086:31::-;;;;;;;;;;;;;;;;10747:29;;;;;;;;;;;;;;;;23547:227;8980:6;;-1:-1:-1;;;;;8980:6:0;3545:10;8980:22;8972:67;;;;-1:-1:-1;;;8972:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;23645:25:0;::::1;;::::0;;;:9:::1;:25;::::0;;;;;::::1;;:35;;::::0;::::1;;;;23637:84;;;::::0;-1:-1:-1;;;23637:84:0;;6721:2:1;23637:84:0::1;::::0;::::1;6703:21:1::0;6760:2;6740:18;;;6733:30;6799:34;6779:18;;;6772:62;-1:-1:-1;;;6850:18:1;;;6843:34;6894:19;;23637:84:0::1;6519:400:1::0;23637:84:0::1;-1:-1:-1::0;;;;;23732:25:0;;;::::1;;::::0;;;:9:::1;:25;::::0;;;;:34;;-1:-1:-1;;23732:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23547:227::o;16211:313::-;8980:6;;-1:-1:-1;;;;;8980:6:0;3545:10;8980:22;8972:67;;;;-1:-1:-1;;;8972:67:0;;;;;;;:::i;:::-;16310:15:::1;:30:::0;;;16351:16:::1;:32:::0;;;16410:34:::1;16370:13:::0;16328:12;16410:34:::1;:::i;:::-;16394:13;:50:::0;;;16480:2:::1;-1:-1:-1::0;16463:19:0::1;16455:61;;;::::0;-1:-1:-1;;;16455:61:0;;7391:2:1;16455:61:0::1;::::0;::::1;7373:21:1::0;7430:2;7410:18;;;7403:30;7469:31;7449:18;;;7442:59;7518:18;;16455:61:0::1;7189:353:1::0;16455:61:0::1;16211:313:::0;;:::o;5026:100::-;5080:13;5113:5;5106:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5026:100;:::o;5940:169::-;6023:4;6040:39;3545:10;6063:7;6072:6;6040:8;:39::i;:::-;-1:-1:-1;6097:4:0;5940:169;;;;;:::o;6117:480::-;6257:4;6274:36;6284:6;6292:9;6303:6;6274:9;:36::i;:::-;-1:-1:-1;;;;;6350:19:0;;6323:24;6350:19;;;:11;:19;;;;;;;;3545:10;6350:33;;;;;;;;6402:26;;;;6394:79;;;;-1:-1:-1;;;6394:79:0;;8134:2:1;6394:79:0;;;8116:21:1;8173:2;8153:18;;;8146:30;8212:34;8192:18;;;8185:62;-1:-1:-1;;;8263:18:1;;;8256:38;8311:19;;6394:79:0;7932:404:1;6394:79:0;6501:57;6510:6;3545:10;6551:6;6532:16;:25;6501:8;:57::i;:::-;-1:-1:-1;6585:4:0;;6117:480;-1:-1:-1;;;;6117:480:0:o;13953:269::-;8980:6;;-1:-1:-1;;;;;8980:6:0;3545:10;8980:22;8972:67;;;;-1:-1:-1;;;8972:67:0;;;;;;;:::i;:::-;14072:4:::1;14066;14046:13;5435:12:::0;;;5347:108;14046:13:::1;:17;::::0;14062:1:::1;14046:17;:::i;:::-;:24;;;;:::i;:::-;14045:31;;;;:::i;:::-;14035:6;:41;;14027:95;;;::::0;-1:-1:-1;;;14027:95:0;;8938:2:1;14027:95:0::1;::::0;::::1;8920:21:1::0;8977:2;8957:18;;;8950:30;9016:34;8996:18;;;8989:62;-1:-1:-1;;;9067:18:1;;;9060:39;9116:19;;14027:95:0::1;8736:405:1::0;14027:95:0::1;14148:17;:6:::0;14158::::1;14148:17;:::i;:::-;14133:12;:32:::0;;;14181:33:::1;::::0;2651:25:1;;;14181:33:0::1;::::0;2639:2:1;2624:18;14181:33:0::1;;;;;;;;13953:269:::0;:::o;6605:215::-;3545:10;6693:4;6742:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6742:34:0;;;;;;;;;;6693:4;;6710:80;;6733:7;;6742:47;;6779:10;;6742:47;:::i;:::-;6710:8;:80::i;23782:208::-;8980:6;;-1:-1:-1;;;;;8980:6:0;3545:10;8980:22;8972:67;;;;-1:-1:-1;;;8972:67:0;;;;;;;:::i;:::-;23882:9:::1;23877:106;23893:20:::0;;::::1;23877:106;;;23965:6;23939:9;:23;23949:9;;23959:1;23949:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23939:23:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;23939:23:0;:32;;-1:-1:-1;;23939:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23915:3:::1;::::0;::::1;:::i;:::-;;;23877:106;;;;23782:208:::0;;;:::o;21590:425::-;8980:6;;-1:-1:-1;;;;;8980:6:0;3545:10;8980:22;8972:67;;;;-1:-1:-1;;;8972:67:0;;;;;;;:::i;:::-;21687:13:::1;::::0;::::1;::::0;::::1;;;21686:14;21678:51;;;::::0;-1:-1:-1;;;21678:51:0;;9620:2:1;21678:51:0::1;::::0;::::1;9602:21:1::0;9659:2;9639:18;;;9632:30;9698:26;9678:18;;;9671:54;9742:18;;21678:51:0::1;9418:348:1::0;21678:51:0::1;21740:13;:23:::0;;-1:-1:-1;;21740:23:0;::::1;;;::::0;;::::1;21774:18:::0;;;;-1:-1:-1;;21774:18:0;;;;;;;;::::1;::::0;;;;21808:42:::1;::::0;::::1;::::0;::::1;::::0;21823:13;::::1;21740:23;21823:13;::::0;21838:11;;9964:14:1;;9957:22;9939:41;;10011:2;9996:18;;9989:34;9927:2;9912:18;;9771:258;21808:42:0::1;;;;;;;;21867:13;::::0;::::1;::::0;::::1;;;:40:::0;::::1;;;-1:-1:-1::0;21884:18:0::1;::::0;:23;21867:40:::1;21863:145;;;21945:12;21924:18;:33:::0;21972:10:::1;:24:::0;-1:-1:-1;21590:425:0:o;23258:281::-;8980:6;;-1:-1:-1;;;;;8980:6:0;3545:10;8980:22;8972:67;;;;-1:-1:-1;;;8972:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23350:30:0;::::1;23342:79;;;::::0;-1:-1:-1;;;23342:79:0;;10236:2:1;23342:79:0::1;::::0;::::1;10218:21:1::0;10275:2;10255:18;;;10248:30;10314:34;10294:18;;;10287:62;-1:-1:-1;;;10365:18:1;;;10358:34;10409:19;;23342:79:0::1;10034:400:1::0;23342:79:0::1;23432:15;:43:::0;;-1:-1:-1;;;;;;23432:43:0::1;-1:-1:-1::0;;;;;23432:43:0;::::1;::::0;;::::1;::::0;;;23491:40:::1;::::0;::::1;::::0;-1:-1:-1;;23491:40:0::1;23258:281:::0;:::o;15897:306::-;8980:6;;-1:-1:-1;;;;;8980:6:0;3545:10;8980:22;8972:67;;;;-1:-1:-1;;;8972:67:0;;;;;;;:::i;:::-;15995:14:::1;:29:::0;;;16035:15:::1;:31:::0;;;16092:32:::1;16053:13:::0;16012:12;16092:32:::1;:::i;:::-;16077:12;:47:::0;;;-1:-1:-1;16143:18:0::1;16135:60;;;::::0;-1:-1:-1;;;16135:60:0;;10641:2:1;16135:60:0::1;::::0;::::1;10623:21:1::0;10680:2;10660:18;;;10653:30;10719:31;10699:18;;;10692:59;10768:18;;16135:60:0::1;10439:353:1::0;9067:150:0;8980:6;;-1:-1:-1;;;;;8980:6:0;3545:10;8980:22;8972:67;;;;-1:-1:-1;;;8972:67:0;;;;;;;:::i;:::-;9160:6:::1;::::0;9139:40:::1;::::0;9176:1:::1;::::0;-1:-1:-1;;;;;9160:6:0::1;::::0;9139:40:::1;::::0;9176:1;;9139:40:::1;9190:6;:19:::0;;-1:-1:-1;;;;;;9190:19:0::1;::::0;;9067:150::o;14562:115::-;8980:6;;-1:-1:-1;;;;;8980:6:0;3545:10;8980:22;8972:67;;;;-1:-1:-1;;;8972:67:0;;;;;;;:::i;:::-;14616:14:::1;:22:::0;;-1:-1:-1;;14616:22:0::1;::::0;;14654:15:::1;::::0;::::1;::::0;14633:5:::1;::::0;14654:15:::1;14562:115::o:0;14902:267::-;8980:6;;-1:-1:-1;;;;;8980:6:0;3545:10;8980:22;8972:67;;;;-1:-1:-1;;;8972:67:0;;;;;;;:::i;:::-;14998:4:::1;14994:111;;15036:13;-1:-1:-1::0;;;;;15026:23:0::1;:6;-1:-1:-1::0;;;;;15026:23:0::1;;;15018:75;;;::::0;-1:-1:-1;;;15018:75:0;;10999:2:1;15018:75:0::1;::::0;::::1;10981:21:1::0;11038:2;11018:18;;;11011:30;11077:34;11057:18;;;11050:62;-1:-1:-1;;;11128:18:1;;;11121:37;11175:19;;15018:75:0::1;10797:403:1::0;15018:75:0::1;-1:-1:-1::0;;;;;15115:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;15115:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14902:267::o;25290:381::-;8980:6;;25377:10;;-1:-1:-1;;;;;8980:6:0;3545:10;8980:22;8972:67;;;;-1:-1:-1;;;8972:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25408:20:0;::::1;25400:59;;;::::0;-1:-1:-1;;;25400:59:0;;11407:2:1;25400:59:0::1;::::0;::::1;11389:21:1::0;11446:2;11426:18;;;11419:30;11485:28;11465:18;;;11458:56;11531:18;;25400:59:0::1;11205:350:1::0;25400:59:0::1;25497:39;::::0;-1:-1:-1;;;25497:39:0;;25530:4:::1;25497:39;::::0;::::1;2443:51:1::0;25470:24:0::1;::::0;-1:-1:-1;;;;;25497:24:0;::::1;::::0;::::1;::::0;2416:18:1;;25497:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25555:46;::::0;-1:-1:-1;;;25555:46:0;;-1:-1:-1;;;;;11941:32:1;;;25555:46:0::1;::::0;::::1;11923:51:1::0;11990:18;;;11983:34;;;25470:66:0;;-1:-1:-1;25555:23:0;;::::1;::::0;::::1;::::0;11896:18:1;;25555:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25617;::::0;;-1:-1:-1;;;;;11941:32:1;;11923:51;;12005:2;11990:18;;11983:34;;;25547:54:0;;-1:-1:-1;25617:46:0::1;::::0;11896:18:1;25617:46:0::1;;;;;;;25389:282;25290:381:::0;;;;:::o;5134:104::-;5190:13;5223:7;5216:14;;;;;:::i;21040:246::-;8980:6;;-1:-1:-1;;;;;8980:6:0;3545:10;8980:22;8972:67;;;;-1:-1:-1;;;8972:67:0;;;;;;;:::i;:::-;21149:13:::1;-1:-1:-1::0;;;;;21141:21:0::1;:4;-1:-1:-1::0;;;;;21141:21:0::1;;;21133:91;;;::::0;-1:-1:-1;;;21133:91:0;;12480:2:1;21133:91:0::1;::::0;::::1;12462:21:1::0;12519:2;12499:18;;;12492:30;12558:34;12538:18;;;12531:62;12629:27;12609:18;;;12602:55;12674:19;;21133:91:0::1;12278:421:1::0;21133:91:0::1;21237:41;21266:4;21272:5;21237:28;:41::i;6828:401::-:0;3545:10;6921:4;6965:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6965:34:0;;;;;;;;;;7018:35;;;;7010:85;;;;-1:-1:-1;;;7010:85:0;;12906:2:1;7010:85:0;;;12888:21:1;12945:2;12925:18;;;12918:30;12984:34;12964:18;;;12957:62;-1:-1:-1;;;13035:18:1;;;13028:35;13080:19;;7010:85:0;12704:401:1;7010:85:0;7123:67;3545:10;7146:7;7174:15;7155:16;:34;7123:8;:67::i;:::-;-1:-1:-1;7217:4:0;;6828:401;-1:-1:-1;;;6828:401:0:o;5598:175::-;5684:4;5701:42;3545:10;5725:9;5736:6;5701:9;:42::i;22560:688::-;8980:6;;-1:-1:-1;;;;;8980:6:0;3545:10;8980:22;8972:67;;;;-1:-1:-1;;;8972:67:0;;;;;;;:::i;:::-;22695:3:::1;22676:22:::0;::::1;22668:79;;;::::0;-1:-1:-1;;;22668:79:0;;13312:2:1;22668:79:0::1;::::0;::::1;13294:21:1::0;13351:2;13331:18;;;13324:30;13390:34;13370:18;;;13363:62;-1:-1:-1;;;13441:18:1;;;13434:43;13494:19;;22668:79:0::1;13110:409:1::0;22668:79:0::1;22789:33:::0;;::::1;22781:85;;;::::0;-1:-1:-1;;;22781:85:0;;13726:2:1;22781:85:0::1;::::0;::::1;13708:21:1::0;13765:2;13745:18;;;13738:30;13804:34;13784:18;;;13777:62;-1:-1:-1;;;13855:18:1;;;13848:38;13903:19;;22781:85:0::1;13524:404:1::0;22781:85:0::1;22879:12;22912:6:::0;22908:109:::1;22922:20:::0;;::::1;22908:109;;;22990:14;5329:2:::0;22990::::1;:14;:::i;:::-;22978:6;;22985:1;22978:9;;;;;;;:::i;:::-;;;;;;;:26;;;;:::i;:::-;22970:35;::::0;:4;:35:::1;:::i;:::-;22963:42:::0;-1:-1:-1;22944:3:0;::::1;::::0;::::1;:::i;:::-;;;;22908:109;;;-1:-1:-1::0;23047:10:0::1;5537:7:::0;5564:18;;;;;;;;;;;23062:4;-1:-1:-1;23037:29:0::1;23029:69;;;::::0;-1:-1:-1;;;23029:69:0;;15518:2:1;23029:69:0::1;::::0;::::1;15500:21:1::0;15557:2;15537:18;;;15530:30;15596:29;15576:18;;;15569:57;15643:18;;23029:69:0::1;15316:351:1::0;23029:69:0::1;23115:6;23111:130;23125:20:::0;;::::1;23111:130;;;23166:63;23176:10;23187:9;;23197:1;23187:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;23213:14;5329:2:::0;23213::::1;:14;:::i;:::-;23201:6;;23208:1;23201:9;;;;;;;:::i;:::-;;;;;;;:26;;;;:::i;:::-;23166:9;:63::i;:::-;23147:3:::0;::::1;::::0;::::1;:::i;:::-;;;;23111:130;;;;22655:593;22560:688:::0;;;;:::o;16532:182::-;8980:6;;-1:-1:-1;;;;;8980:6:0;3545:10;8980:22;8972:67;;;;-1:-1:-1;;;8972:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16617:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;16617:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;16672:34;;1975:41:1;;;16672:34:0::1;::::0;1948:18:1;16672:34:0::1;;;;;;;16532:182:::0;;:::o;15177:284::-;8980:6;;-1:-1:-1;;;;;8980:6:0;3545:10;8980:22;8972:67;;;;-1:-1:-1;;;8972:67:0;;;;;;;:::i;:::-;15299:4:::1;15293;15273:13;5435:12:::0;;;5347:108;15273:13:::1;:17;::::0;15289:1:::1;15273:17;:::i;:::-;:24;;;;:::i;:::-;15272:31;;;;:::i;:::-;15262:6;:41;;15254:98;;;::::0;-1:-1:-1;;;15254:98:0;;15874:2:1;15254:98:0::1;::::0;::::1;15856:21:1::0;15913:2;15893:18;;;15886:30;15952:34;15932:18;;;15925:62;-1:-1:-1;;;16003:18:1;;;15996:42;16055:19;;15254:98:0::1;15672:408:1::0;15254:98:0::1;15381:17;:6:::0;15391::::1;15381:17;:::i;:::-;15363:15;:35:::0;;;15414:39:::1;::::0;2651:25:1;;;15414:39:0::1;::::0;2639:2:1;2624:18;15414:39:0::1;2505:177:1::0;15531:350:0;8980:6;;-1:-1:-1;;;;;8980:6:0;3545:10;8980:22;8972:67;;;;-1:-1:-1;;;8972:67:0;;;;;;;:::i;:::-;15655:6:::1;15635:13;5435:12:::0;;;5347:108;15635:13:::1;:17;::::0;15651:1:::1;15635:17;:::i;:::-;:26;;;;:::i;:::-;15622:9;:39;;15614:105;;;::::0;-1:-1:-1;;;15614:105:0;;16287:2:1;15614:105:0::1;::::0;::::1;16269:21:1::0;16326:2;16306:18;;;16299:30;16365:34;16345:18;;;16338:62;-1:-1:-1;;;16416:18:1;;;16409:51;16477:19;;15614:105:0::1;16085:417:1::0;15614:105:0::1;15771:4;15751:13;5435:12:::0;;;5347:108;15751:13:::1;:17;::::0;15767:1:::1;15751:17;:::i;:::-;:24;;;;:::i;:::-;15738:9;:37;;15730:102;;;::::0;-1:-1:-1;;;15730:102:0;;16709:2:1;15730:102:0::1;::::0;::::1;16691:21:1::0;16748:2;16728:18;;;16721:30;16787:34;16767:18;;;16760:62;-1:-1:-1;;;16838:18:1;;;16831:50;16898:19;;15730:102:0::1;16507:416:1::0;15730:102:0::1;15843:18;:30:::0;15531:350::o;14230:274::-;8980:6;;-1:-1:-1;;;;;8980:6:0;3545:10;8980:22;8972:67;;;;-1:-1:-1;;;8972:67:0;;;;;;;:::i;:::-;14350:4:::1;14344;14324:13;5435:12:::0;;;5347:108;14324:13:::1;:17;::::0;14340:1:::1;14324:17;:::i;:::-;:24;;;;:::i;:::-;14323:31;;;;:::i;:::-;14313:6;:41;;14305:96;;;::::0;-1:-1:-1;;;14305:96:0;;17130:2:1;14305:96:0::1;::::0;::::1;17112:21:1::0;17169:2;17149:18;;;17142:30;17208:34;17188:18;;;17181:62;-1:-1:-1;;;17259:18:1;;;17252:40;17309:19;;14305:96:0::1;16928:406:1::0;14305:96:0::1;14428:17;:6:::0;14438::::1;14428:17;:::i;:::-;14412:13;:33:::0;;;14461:35:::1;::::0;2651:25:1;;;14461:35:0::1;::::0;2639:2:1;2624:18;14461:35:0::1;2505:177:1::0;9225:244:0;8980:6;;-1:-1:-1;;;;;8980:6:0;3545:10;8980:22;8972:67;;;;-1:-1:-1;;;8972:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9314:22:0;::::1;9306:73;;;::::0;-1:-1:-1;;;9306:73:0;;17541:2:1;9306:73:0::1;::::0;::::1;17523:21:1::0;17580:2;17560:18;;;17553:30;17619:34;17599:18;;;17592:62;-1:-1:-1;;;17670:18:1;;;17663:36;17716:19;;9306:73:0::1;17339:402:1::0;9306:73:0::1;9416:6;::::0;9395:38:::1;::::0;-1:-1:-1;;;;;9395:38:0;;::::1;::::0;9416:6:::1;::::0;9395:38:::1;::::0;9416:6:::1;::::0;9395:38:::1;9444:6;:17:::0;;-1:-1:-1;;;;;;9444:17:0::1;-1:-1:-1::0;;;;;9444:17:0;;;::::1;::::0;;;::::1;::::0;;9225:244::o;25741:160::-;8980:6;;-1:-1:-1;;;;;8980:6:0;3545:10;8980:22;8972:67;;;;-1:-1:-1;;;8972:67:0;;;;;;;:::i;:::-;25835:58:::1;::::0;25799:12:::1;::::0;25843:10:::1;::::0;25867:21:::1;::::0;25799:12;25835:58;25799:12;25835:58;25867:21;25843:10;25835:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8146:380:::0;-1:-1:-1;;;;;8282:19:0;;8274:68;;;;-1:-1:-1;;;8274:68:0;;18158:2:1;8274:68:0;;;18140:21:1;18197:2;18177:18;;;18170:30;18236:34;18216:18;;;18209:62;-1:-1:-1;;;18287:18:1;;;18280:34;18331:19;;8274:68:0;17956:400:1;8274:68:0;-1:-1:-1;;;;;8361:21:0;;8353:68;;;;-1:-1:-1;;;8353:68:0;;18563:2:1;8353:68:0;;;18545:21:1;18602:2;18582:18;;;18575:30;18641:34;18621:18;;;18614:62;-1:-1:-1;;;18692:18:1;;;18685:32;18734:19;;8353:68:0;18361:398:1;8353:68:0;-1:-1:-1;;;;;8434:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8486:32;;2651:25:1;;;8486:32:0;;2624:18:1;8486:32:0;;;;;;;8146:380;;;:::o;16724:3709::-;-1:-1:-1;;;;;16824:18:0;;16816:68;;;;-1:-1:-1;;;16816:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16903:16:0;;16895:64;;;;-1:-1:-1;;;16895:64:0;;;;;;;:::i;:::-;16987:1;16978:6;:10;16970:52;;;;-1:-1:-1;;;16970:52:0;;19776:2:1;16970:52:0;;;19758:21:1;19815:2;19795:18;;;19788:30;19854:31;19834:18;;;19827:59;19903:18;;16970:52:0;19574:353:1;16970:52:0;-1:-1:-1;;;;;17042:15:0;;;;;;:9;:15;;;;;;;;17041:16;17033:56;;;;-1:-1:-1;;;17033:56:0;;20134:2:1;17033:56:0;;;20116:21:1;20173:2;20153:18;;;20146:30;20212:29;20192:18;;;20185:57;20259:18;;17033:56:0;19932:351:1;17033:56:0;-1:-1:-1;;;;;17109:13:0;;;;;;:9;:13;;;;;;;;17108:14;17100:54;;;;-1:-1:-1;;;17100:54:0;;20134:2:1;17100:54:0;;;20116:21:1;20173:2;20153:18;;;20146:30;20212:29;20192:18;;;20185:57;20259:18;;17100:54:0;19932:351:1;17100:54:0;17172:14;;;;17169:1317;;;8918:6;;-1:-1:-1;;;;;17206:15:0;;;8918:6;;17206:15;;;;:32;;-1:-1:-1;8918:6:0;;-1:-1:-1;;;;;17225:13:0;;;8918:6;;17225:13;;17206:32;:52;;;;-1:-1:-1;;;;;;17242:16:0;;;;17206:52;:77;;;;-1:-1:-1;;;;;;17262:21:0;;17276:6;17262:21;;17206:77;17202:1273;;;17307:13;;;;;;;17303:172;;-1:-1:-1;;;;;17352:37:0;;;;;;:31;:37;;;;;;;;;:76;;-1:-1:-1;;;;;;17393:35:0;;;;;;:31;:35;;;;;;;;17352:76;17344:111;;;;-1:-1:-1;;;17344:111:0;;20490:2:1;17344:111:0;;;20472:21:1;20529:2;20509:18;;;20502:30;-1:-1:-1;;;20548:18:1;;;20541:52;20610:18;;17344:111:0;20288:346:1;17344:111:0;17520:1;17499:18;;:22;:74;;;;;17562:10;;17541:18;;:31;;;;:::i;:::-;17525:12;:48;17499:74;17495:144;;;-1:-1:-1;;;;;17599:13:0;;;;;;:9;:13;;;;;:20;;-1:-1:-1;;17599:20:0;17615:4;17599:20;;;17495:144;-1:-1:-1;;;;;17691:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;17727:35:0;;;;;;:31;:35;;;;;;;;17726:36;17691:71;17687:773;;;17805:12;;17795:6;:22;;17787:75;;;;-1:-1:-1;;;17787:75:0;;20841:2:1;17787:75:0;;;20823:21:1;20880:2;20860:18;;;20853:30;20919:34;20899:18;;;20892:62;-1:-1:-1;;;20970:18:1;;;20963:38;21018:19;;17787:75:0;20639:404:1;17787:75:0;17919:15;;-1:-1:-1;;;;;5564:18:0;;5537:7;5564:18;;;;;;;;;;;17893:22;;:6;:22;:::i;:::-;:41;;17885:78;;;;-1:-1:-1;;;17885:78:0;;21250:2:1;17885:78:0;;;21232:21:1;21289:2;21269:18;;;21262:30;-1:-1:-1;;;21308:18:1;;;21301:54;21372:18;;17885:78:0;21048:348:1;17885:78:0;17687:773;;;-1:-1:-1;;;;;18039:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;18073:37:0;;;;;;:31;:37;;;;;;;;18072:38;18039:71;18035:425;;;18153:13;;18143:6;:23;;18135:78;;;;-1:-1:-1;;;18135:78:0;;21603:2:1;18135:78:0;;;21585:21:1;21642:2;21622:18;;;21615:30;21681:34;21661:18;;;21654:62;-1:-1:-1;;;21732:18:1;;;21725:40;21782:19;;18135:78:0;21401:406:1;18035:425:0;-1:-1:-1;;;;;18261:35:0;;;;;;:31;:35;;;;;;;;18260:36;:78;;;;-1:-1:-1;;;;;;18301:37:0;;;;;;:31;:37;;;;;;;;18300:38;18260:78;18256:204;;;18396:15;;-1:-1:-1;;;;;5564:18:0;;5537:7;5564:18;;;;;;;;;;;18370:22;;:6;:22;:::i;:::-;:41;;18362:78;;;;-1:-1:-1;;;18362:78:0;;21250:2:1;18362:78:0;;;21232:21:1;21289:2;21269:18;;;21262:30;-1:-1:-1;;;21308:18:1;;;21301:54;21372:18;;18362:78:0;21048:348:1;18362:78:0;18547:4;18498:28;5564:18;;;;;;;;;;;18605;;18581:42;;;;;;;18639:22;;-1:-1:-1;18650:11:0;;;;;;;18639:22;:35;;;;-1:-1:-1;18666:8:0;;;;18665:9;18639:35;:71;;;;-1:-1:-1;;;;;;18679:31:0;;;;;;:25;:31;;;;;;;;18678:32;18639:71;:101;;;;-1:-1:-1;;;;;;18715:25:0;;;;;;:19;:25;;;;;;;;18714:26;18639:101;:129;;;;-1:-1:-1;;;;;;18745:23:0;;;;;;:19;:23;;;;;;;;18744:24;18639:129;18636:236;;;18785:8;:15;;-1:-1:-1;;18785:15:0;18796:4;18785:15;;;18817:10;:8;:10::i;:::-;18844:8;:16;;-1:-1:-1;;18844:16:0;;;18636:236;-1:-1:-1;;;;;19002:25:0;;18884:12;19002:25;;;:19;:25;;;;;;18899:4;;19002:25;;;:52;;-1:-1:-1;;;;;;19031:23:0;;;;;;:19;:23;;;;;;;;19002:52;18999:99;;;-1:-1:-1;19081:5:0;18999:99;19110:12;19137:21;19240:7;19237:1143;;;19386:1;19367:18;;:20;:63;;;;;19418:12;19392:18;;19413:1;19392:22;;;;:::i;:::-;19391:39;19367:63;19364:853;;;19480:3;19466:11;:6;19475:2;19466:11;:::i;:::-;:17;;;;:::i;:::-;19524:15;;19450:33;;-1:-1:-1;19502:53:0;;19518:4;;-1:-1:-1;;;;;19524:15:0;19450:33;19502:15;:53::i;:::-;19364:853;;;-1:-1:-1;;;;;19618:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;19667:1;19651:13;;:17;19618:50;19614:603;;;19719:3;19704:13;;19695:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;19688:34;;19789:13;;19770:16;;19763:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;19741:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;19867:13:0;;19849:15;;19842:22;;:4;:22;:::i;:::-;:38;;;;:::i;:::-;19821:17;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;19614:603:0;;-1:-1:-1;19614:603:0;;-1:-1:-1;;;;;19941:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;19991:1;19976:12;;:16;19941:51;19938:279;;;20044:3;20029:12;;20020:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;20013:34;;20113:12;;20095:15;;20088:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;20066:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;20189:12:0;;20172:14;;20165:21;;:4;:21;:::i;:::-;:36;;;;:::i;:::-;20144:17;;:57;;;;;;;:::i;:::-;;;;-1:-1:-1;;19938:279:0;20236:8;;20233:89;;20264:42;20280:4;20294;20301;20264:15;:42::i;:::-;20348:20;20355:13;20348:4;:20;:::i;:::-;20338:30;;;;:::i;:::-;;;19237:1143;20392:33;20408:4;20414:2;20418:6;20392:15;:33::i;:::-;16803:3630;;;;;16724:3709;;;:::o;21294:240::-;-1:-1:-1;;;;;21377:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;21377:39:0;;;;;;;21429;21377:31;:39;21429:26;:39::i;:::-;21486:40;;;;;;-1:-1:-1;;;;;21486:40:0;;;;;;;;21294:240;;:::o;24117:1165::-;24200:4;24156:23;5564:18;;;;;;;;;;;24156:50;;24217:25;24266:17;;24245:18;;:38;;;;:::i;:::-;24217:66;-1:-1:-1;24299:20:0;;;:46;;-1:-1:-1;24323:22:0;;24299:46;24296:60;;;24348:7;;24117:1165::o;24296:60::-;24389:18;;;:23;;;:::i;:::-;24371:15;:41;24368:113;;;24446:18;;;:23;;;:::i;:::-;24428:41;;24368:113;24493:12;24567:23;24652:1;24632:17;24611:18;;24593:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;24567:86;-1:-1:-1;24666:51:0;24683:33;24567:86;24683:15;:33;:::i;:::-;24666:16;:51::i;:::-;24912:18;;24751:21;;;;24730:18;;24912:20;;24931:1;;24912:20;:::i;:::-;24891:42;;:17;:42;:::i;:::-;24870:17;;24857:30;;:10;:30;:::i;:::-;:77;;;;:::i;:::-;24832:102;-1:-1:-1;24954:33:0;24832:102;24954:33;;:::i;:::-;25021:1;25000:18;:22;;;25033:17;:21;24954:33;-1:-1:-1;25070:19:0;;;;;:42;;;25111:1;25093:15;:19;25070:42;25067:119;;;25128:46;25141:15;25158;25128:12;:46::i;:::-;25219:15;;25211:63;;-1:-1:-1;;;;;25219:15:0;;;;25248:21;;25211:63;;;;25248:21;25219:15;25211:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;24117:1165:0:o;7237:602::-;-1:-1:-1;;;;;7377:20:0;;7369:70;;;;-1:-1:-1;;;7369:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7458:23:0;;7450:71;;;;-1:-1:-1;;;7450:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7558:17:0;;7534:21;7558:17;;;;;;;;;;;7594:23;;;;7586:74;;;;-1:-1:-1;;;7586:74:0;;22144:2:1;7586:74:0;;;22126:21:1;22183:2;22163:18;;;22156:30;22222:34;22202:18;;;22195:62;-1:-1:-1;;;22273:18:1;;;22266:36;22319:19;;7586:74:0;21942:402:1;7586:74:0;-1:-1:-1;;;;;7688:17:0;;;:9;:17;;;;;;;;;;;7708:22;;;7688:42;;7748:20;;;;;;;;:30;;7724:6;;7688:9;7748:30;;7724:6;;7748:30;:::i;:::-;;;;;;;;7813:9;-1:-1:-1;;;;;7796:35:0;7805:6;-1:-1:-1;;;;;7796:35:0;;7824:6;7796:35;;;;2651:25:1;;2639:2;2624:18;;2505:177;7796:35:0;;;;;;;;7358:481;7237:602;;;:::o;14687:207::-;-1:-1:-1;;;;;14775:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;14775:52:0;;;;;;;;;;14843:43;;22517:51:1;;;22584:18;;;22577:50;14843:43:0;;22490:18:1;14843:43:0;;;;;;;14687:207;;:::o;20441:591::-;20593:16;;;20607:1;20593:16;;;;;;;;20569:21;;20593:16;;;;;;;;;;-1:-1:-1;20593:16:0;20569:40;;20638:4;20620;20625:1;20620:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;20620:23:0;;;-1:-1:-1;;;;;20620:23:0;;;;;20664:15;-1:-1:-1;;;;;20664:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20654:4;20659:1;20654:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;20654:32:0;;;-1:-1:-1;;;;;20654:32:0;;;;;20699:62;20716:4;20731:15;20749:11;20699:8;:62::i;:::-;20800:224;;-1:-1:-1;;;20800:224:0;;-1:-1:-1;;;;;20800:15:0;:66;;;;:224;;20881:11;;20907:1;;20951:4;;20978;;20998:15;;20800:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22023:522;22171:62;22188:4;22203:15;22221:11;22171:8;:62::i;:::-;22276:15;-1:-1:-1;;;;;22276:31:0;;22315:9;22348:4;22368:11;22394:1;22437;22488:7;8918:6;;-1:-1:-1;;;;;8918:6:0;;8853:79;22488:7;22276:261;;;;;;-1:-1:-1;;;;;;22276:261:0;;;-1:-1:-1;;;;;24370:15:1;;;22276:261:0;;;24352:34:1;24402:18;;;24395:34;;;;24445:18;;;24438:34;;;;24488:18;;;24481:34;24552:15;;;24531:19;;;24524:44;22511:15:0;24584:19:1;;;24577:35;24286:19;;22276:261:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22023:522;;:::o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:118::-;236:5;229:13;222:21;215:5;212:32;202:60;;258:1;255;248:12;273:382;338:6;346;399:2;387:9;378:7;374:23;370:32;367:52;;;415:1;412;405:12;367:52;454:9;441:23;473:31;498:5;473:31;:::i;:::-;523:5;-1:-1:-1;580:2:1;565:18;;552:32;593:30;552:32;593:30;:::i;:::-;642:7;632:17;;;273:382;;;;;:::o;660:248::-;728:6;736;789:2;777:9;768:7;764:23;760:32;757:52;;;805:1;802;795:12;757:52;-1:-1:-1;;828:23:1;;;898:2;883:18;;;870:32;;-1:-1:-1;660:248:1:o;913:597::-;1025:4;1054:2;1083;1072:9;1065:21;1115:6;1109:13;1158:6;1153:2;1142:9;1138:18;1131:34;1183:1;1193:140;1207:6;1204:1;1201:13;1193:140;;;1302:14;;;1298:23;;1292:30;1268:17;;;1287:2;1264:26;1257:66;1222:10;;1193:140;;;1351:6;1348:1;1345:13;1342:91;;;1421:1;1416:2;1407:6;1396:9;1392:22;1388:31;1381:42;1342:91;-1:-1:-1;1494:2:1;1473:15;-1:-1:-1;;1469:29:1;1454:45;;;;1501:2;1450:54;;913:597;-1:-1:-1;;;913:597:1:o;1515:315::-;1583:6;1591;1644:2;1632:9;1623:7;1619:23;1615:32;1612:52;;;1660:1;1657;1650:12;1612:52;1699:9;1686:23;1718:31;1743:5;1718:31;:::i;:::-;1768:5;1820:2;1805:18;;;;1792:32;;-1:-1:-1;;;1515:315:1:o;2027:247::-;2086:6;2139:2;2127:9;2118:7;2114:23;2110:32;2107:52;;;2155:1;2152;2145:12;2107:52;2194:9;2181:23;2213:31;2238:5;2213:31;:::i;:::-;2263:5;2027:247;-1:-1:-1;;;2027:247:1:o;2687:456::-;2764:6;2772;2780;2833:2;2821:9;2812:7;2808:23;2804:32;2801:52;;;2849:1;2846;2839:12;2801:52;2888:9;2875:23;2907:31;2932:5;2907:31;:::i;:::-;2957:5;-1:-1:-1;3014:2:1;2999:18;;2986:32;3027:33;2986:32;3027:33;:::i;:::-;2687:456;;3079:7;;-1:-1:-1;;;3133:2:1;3118:18;;;;3105:32;;2687:456::o;3148:180::-;3207:6;3260:2;3248:9;3239:7;3235:23;3231:32;3228:52;;;3276:1;3273;3266:12;3228:52;-1:-1:-1;3299:23:1;;3148:180;-1:-1:-1;3148:180:1:o;3730:367::-;3793:8;3803:6;3857:3;3850:4;3842:6;3838:17;3834:27;3824:55;;3875:1;3872;3865:12;3824:55;-1:-1:-1;3898:20:1;;3941:18;3930:30;;3927:50;;;3973:1;3970;3963:12;3927:50;4010:4;4002:6;3998:17;3986:29;;4070:3;4063:4;4053:6;4050:1;4046:14;4038:6;4034:27;4030:38;4027:47;4024:67;;;4087:1;4084;4077:12;4024:67;3730:367;;;;;:::o;4102:566::-;4194:6;4202;4210;4263:2;4251:9;4242:7;4238:23;4234:32;4231:52;;;4279:1;4276;4269:12;4231:52;4319:9;4306:23;4352:18;4344:6;4341:30;4338:50;;;4384:1;4381;4374:12;4338:50;4423:70;4485:7;4476:6;4465:9;4461:22;4423:70;:::i;:::-;4512:8;;-1:-1:-1;4397:96:1;-1:-1:-1;;4597:2:1;4582:18;;4569:32;4610:28;4569:32;4610:28;:::i;:::-;4657:5;4647:15;;;4102:566;;;;;:::o;4673:309::-;4738:6;4746;4799:2;4787:9;4778:7;4774:23;4770:32;4767:52;;;4815:1;4812;4805:12;4767:52;4854:9;4841:23;4873:28;4895:5;4873:28;:::i;4987:388::-;5055:6;5063;5116:2;5104:9;5095:7;5091:23;5087:32;5084:52;;;5132:1;5129;5122:12;5084:52;5171:9;5158:23;5190:31;5215:5;5190:31;:::i;:::-;5240:5;-1:-1:-1;5297:2:1;5282:18;;5269:32;5310:33;5269:32;5310:33;:::i;5380:773::-;5502:6;5510;5518;5526;5579:2;5567:9;5558:7;5554:23;5550:32;5547:52;;;5595:1;5592;5585:12;5547:52;5635:9;5622:23;5664:18;5705:2;5697:6;5694:14;5691:34;;;5721:1;5718;5711:12;5691:34;5760:70;5822:7;5813:6;5802:9;5798:22;5760:70;:::i;:::-;5849:8;;-1:-1:-1;5734:96:1;-1:-1:-1;5937:2:1;5922:18;;5909:32;;-1:-1:-1;5953:16:1;;;5950:36;;;5982:1;5979;5972:12;5950:36;;6021:72;6085:7;6074:8;6063:9;6059:24;6021:72;:::i;:::-;5380:773;;;;-1:-1:-1;6112:8:1;-1:-1:-1;;;;5380:773:1:o;6158:356::-;6360:2;6342:21;;;6379:18;;;6372:30;6438:34;6433:2;6418:18;;6411:62;6505:2;6490:18;;6158:356::o;6924:127::-;6985:10;6980:3;6976:20;6973:1;6966:31;7016:4;7013:1;7006:15;7040:4;7037:1;7030:15;7056:128;7096:3;7127:1;7123:6;7120:1;7117:13;7114:39;;;7133:18;;:::i;:::-;-1:-1:-1;7169:9:1;;7056:128::o;7547:380::-;7626:1;7622:12;;;;7669;;;7690:61;;7744:4;7736:6;7732:17;7722:27;;7690:61;7797:2;7789:6;7786:14;7766:18;7763:38;7760:161;;;7843:10;7838:3;7834:20;7831:1;7824:31;7878:4;7875:1;7868:15;7906:4;7903:1;7896:15;7760:161;;7547:380;;;:::o;8341:168::-;8381:7;8447:1;8443;8439:6;8435:14;8432:1;8429:21;8424:1;8417:9;8410:17;8406:45;8403:71;;;8454:18;;:::i;:::-;-1:-1:-1;8494:9:1;;8341:168::o;8514:217::-;8554:1;8580;8570:132;;8624:10;8619:3;8615:20;8612:1;8605:31;8659:4;8656:1;8649:15;8687:4;8684:1;8677:15;8570:132;-1:-1:-1;8716:9:1;;8514:217::o;9146:127::-;9207:10;9202:3;9198:20;9195:1;9188:31;9238:4;9235:1;9228:15;9262:4;9259:1;9252:15;9278:135;9317:3;-1:-1:-1;;9338:17:1;;9335:43;;;9358:18;;:::i;:::-;-1:-1:-1;9405:1:1;9394:13;;9278:135::o;11560:184::-;11630:6;11683:2;11671:9;11662:7;11658:23;11654:32;11651:52;;;11699:1;11696;11689:12;11651:52;-1:-1:-1;11722:16:1;;11560:184;-1:-1:-1;11560:184:1:o;12028:245::-;12095:6;12148:2;12136:9;12127:7;12123:23;12119:32;12116:52;;;12164:1;12161;12154:12;12116:52;12196:9;12190:16;12215:28;12237:5;12215:28;:::i;13933:422::-;14022:1;14065:5;14022:1;14079:270;14100:7;14090:8;14087:21;14079:270;;;14159:4;14155:1;14151:6;14147:17;14141:4;14138:27;14135:53;;;14168:18;;:::i;:::-;14218:7;14208:8;14204:22;14201:55;;;14238:16;;;;14201:55;14317:22;;;;14277:15;;;;14079:270;;;14083:3;13933:422;;;;;:::o;14360:806::-;14409:5;14439:8;14429:80;;-1:-1:-1;14480:1:1;14494:5;;14429:80;14528:4;14518:76;;-1:-1:-1;14565:1:1;14579:5;;14518:76;14610:4;14628:1;14623:59;;;;14696:1;14691:130;;;;14603:218;;14623:59;14653:1;14644:10;;14667:5;;;14691:130;14728:3;14718:8;14715:17;14712:43;;;14735:18;;:::i;:::-;-1:-1:-1;;14791:1:1;14777:16;;14806:5;;14603:218;;14905:2;14895:8;14892:16;14886:3;14880:4;14877:13;14873:36;14867:2;14857:8;14854:16;14849:2;14843:4;14840:12;14836:35;14833:77;14830:159;;;-1:-1:-1;14942:19:1;;;14974:5;;14830:159;15021:34;15046:8;15040:4;15021:34;:::i;:::-;15091:6;15087:1;15083:6;15079:19;15070:7;15067:32;15064:58;;;15102:18;;:::i;:::-;15140:20;;14360:806;-1:-1:-1;;;14360:806:1:o;15171:140::-;15229:5;15258:47;15299:4;15289:8;15285:19;15279:4;15258:47;:::i;18764:401::-;18966:2;18948:21;;;19005:2;18985:18;;;18978:30;19044:34;19039:2;19024:18;;19017:62;-1:-1:-1;;;19110:2:1;19095:18;;19088:35;19155:3;19140:19;;18764:401::o;19170:399::-;19372:2;19354:21;;;19411:2;19391:18;;;19384:30;19450:34;19445:2;19430:18;;19423:62;-1:-1:-1;;;19516:2:1;19501:18;;19494:33;19559:3;19544:19;;19170:399::o;21812:125::-;21852:4;21880:1;21877;21874:8;21871:34;;;21885:18;;:::i;:::-;-1:-1:-1;21922:9:1;;21812:125::o;22770:251::-;22840:6;22893:2;22881:9;22872:7;22868:23;22864:32;22861:52;;;22909:1;22906;22899:12;22861:52;22941:9;22935:16;22960:31;22985:5;22960:31;:::i;23026:980::-;23288:4;23336:3;23325:9;23321:19;23367:6;23356:9;23349:25;23393:2;23431:6;23426:2;23415:9;23411:18;23404:34;23474:3;23469:2;23458:9;23454:18;23447:31;23498:6;23533;23527:13;23564:6;23556;23549:22;23602:3;23591:9;23587:19;23580:26;;23641:2;23633:6;23629:15;23615:29;;23662:1;23672:195;23686:6;23683:1;23680:13;23672:195;;;23751:13;;-1:-1:-1;;;;;23747:39:1;23735:52;;23842:15;;;;23807:12;;;;23783:1;23701:9;23672:195;;;-1:-1:-1;;;;;;;23923:32:1;;;;23918:2;23903:18;;23896:60;-1:-1:-1;;;23987:3:1;23972:19;23965:35;23884:3;23026:980;-1:-1:-1;;;23026:980:1:o;24623:306::-;24711:6;24719;24727;24780:2;24768:9;24759:7;24755:23;24751:32;24748:52;;;24796:1;24793;24786:12;24748:52;24825:9;24819:16;24809:26;;24875:2;24864:9;24860:18;24854:25;24844:35;;24919:2;24908:9;24904:18;24898:25;24888:35;;24623:306;;;;;:::o

Swarm Source

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