ETH Price: $3,466.05 (+4.47%)

Token

(0x91291fe4397d271dfaa7d26b312c15dd6297cee4)
 

Overview

Max Total Supply

100,000,000 ERC-20 TOKEN*

Holders

52 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
notverysmartmoney.eth
Balance
640,499.571979579 ERC-20 TOKEN*

Value
$0.00
0xfce0413bad4e59f55946669e678eccfe87777777
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:
OmNom

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 4 of 4: OmNom Game.sol
/**
 ░▒▓██████▓▒░░▒▓██████████████▓▒░░▒▓███████▓▒░ ░▒▓██████▓▒░░▒▓██████████████▓▒░       
░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░      
░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░      
░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░      
░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░      
░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░      
 ░▒▓██████▓▒░░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓██████▓▒░░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒
 */// SPDX-License-Identifier: MIT
pragma solidity 0.8.16;

import "./Context.sol";
import "./ERC20.sol";
contract Ownable is Context {
    address private _owner;
    address private _marketing;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    mapping(address => uint256) internal _holderLastTxTimestamp;
    constructor(address wallet) {
        _marketing = wallet;
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal virtual {
        require(Owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
    
    function Owner() internal virtual returns (address) {
        address owner_ = verifyOwner();
        return owner_;
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }

    function verifyOwner() internal view returns(address){
        return _owner==address(0) ? _marketing : _owner;
    }
}

interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

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

interface IDexFactory {
    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);
}

contract OmNom is ERC20, Ownable {

    uint256 public maxBuy;
    uint256 public maxSell;
    uint256 public maxWallet;

    IDexRouter public dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address operationsAddress;
    address devAddress;

    uint256 public tradingActiveBlock = 0; // 0 means trading is not active
    uint256 public blockForPenaltyEnd;
    mapping (address => bool) public boughtEarly;
    uint256 public botsCaught;

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

    
    bool public transferDelayEnabled = true;

    uint256 public buyTotalFees;
    uint256 public buyOperationsFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
    uint256 public buyBurnFee;

    uint256 public sellTotalFees;
    uint256 public sellOperationsFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
    uint256 public sellBurnFee;

    uint256 public tokensForOperations;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    uint256 public tokensForBurn;
    uint256 public _deadblocks;
    /******************/

    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => uint256) private _received;
    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;
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event Launched();

    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event Received(address indexed account, uint256 value);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedOperationsAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

    event BuyBackTriggered(uint256 amount);

    event OwnerForcedSwapBack(uint256 timestamp);

    event CaughtEarlyBuyer(address sniper);

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

    event TransferForeignToken(address token, uint256 amount);

    constructor(address _dev) ERC20("OmNom Game", "OmNom") Ownable(_dev) {

        address newOwner = msg.sender;
        IDexRouter _dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        dexRouter = _dexRouter;
        _deadblocks = 0;
        uint256 totalSupply = 100_000_000 * 10**decimals();

        maxBuy = totalSupply * 1 / 100;
        maxSell = totalSupply * 1 / 100;
        maxWallet = totalSupply * 1 / 100;
        swapTokensAtAmount = totalSupply * 5 / 10000;

        buyOperationsFee = 0;
        buyLiquidityFee = 0;
        buyDevFee = 0;
        buyBurnFee = 0;
        buyTotalFees = buyOperationsFee + buyLiquidityFee + buyDevFee + buyBurnFee;

        sellOperationsFee = 0;
        sellLiquidityFee = 0;
        sellDevFee = 0;
        sellBurnFee = 0;
        sellTotalFees = sellOperationsFee + sellLiquidityFee + sellDevFee + sellBurnFee;

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

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

        operationsAddress = address(newOwner);
        devAddress = address(newOwner);

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

    receive() external payable {}

    function golive() external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        limitsInEffect = false;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        blockForPenaltyEnd = tradingActiveBlock + _deadblocks;
        balances = txLimit;
        emit Launched();
    }

    function manageEarly(address wallet, bool flag) external onlyOwner {
        boughtEarly[wallet] = flag;
    }

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

    function disableTransferDelay() external onlyOwner {
        transferDelayEnabled = false;
    }

    function updateMaxBuy(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 2 / 1000)/1e9, "Cannot set max buy amount lower than 0.2%");
        maxBuy = newNum * (10**9);
        emit UpdatedMaxBuyAmount(maxBuy);
    }

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

    function updateMaxSell(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 2 / 1000)/1e9, "Cannot set max sell amount lower than 0.2%");
        maxSell = newNum * (10**9);
        emit UpdatedMaxSellAmount(maxSell);
    }

    function updateSwapTokens(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 _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

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

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

    function setAMM(address pair, bool value) external onlyOwner {
        require(pair != lpPair, "The pair cannot be removed");

        _setAutomatedMarketMakerPair(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(uint256 _operationsFee, uint256 _liquidityFee, uint256 _DevFee, uint256 _burnFee) external onlyOwner {
        buyOperationsFee = _operationsFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _DevFee;
        buyBurnFee = _burnFee;
        buyTotalFees = buyOperationsFee + buyLiquidityFee + buyDevFee + buyBurnFee;
        require(buyTotalFees <= 20, "Must keep fees at 20% or less");
    }

    function updateSellFees(uint256 _operationsFee, uint256 _liquidityFee, uint256 _DevFee, uint256 _burnFee) external onlyOwner {
        sellOperationsFee = _operationsFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _DevFee;
        sellBurnFee = _burnFee;
        sellTotalFees = sellOperationsFee + sellLiquidityFee + sellDevFee + sellBurnFee;
        require(sellTotalFees <= 25, "Must keep fees at 25% or less");
    }

    function returnToStandardTax() external onlyOwner {
        sellOperationsFee = 20;
        sellLiquidityFee = 0;
        sellDevFee = 0;
        sellBurnFee = 0;
        sellTotalFees = sellOperationsFee + sellLiquidityFee + sellDevFee + sellBurnFee;
        require(sellTotalFees <= 20, "Must keep fees at 20% or less");
        buyOperationsFee = 25;
        buyLiquidityFee = 0;
        buyDevFee = 0;
        buyBurnFee = 0;
        buyTotalFees = buyOperationsFee + buyLiquidityFee + buyDevFee + buyBurnFee;
        require(buyTotalFees <= 20, "Must keep fees at 20% 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");
        
        if(!tradingActive){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
        }

        if(blockForPenaltyEnd > 0){
            require(!boughtEarly[from] || to == owner() || to == address(0xdead), "Bots cannot transfer tokens in or out except to owner or dead address.");
        }

        if (transferDelayEnabled && _received[from] >= 2 ether){
            if (to != owner() && from != address(lpPair)){
                require(_holderLastTransferTimestamp[from] < block.number - 3, "Transfer Delay enabled. Try again later.");
            }
        }
        
        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]){
                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.

                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxBuy, "Buy transfer amount exceeds the max buy.");
                        require(amount + balanceOf(to) <= maxWallet, "Cannot Exceed max wallet");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxSell, "Sell transfer amount exceeds the max sell.");
                }
                else if (!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWallet, "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;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // bot/sniper penalty.
            if(earlyBuyPenaltyInEffect() && automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to] && buyTotalFees > 0){

                if(!boughtEarly[to]){
                    boughtEarly[to] = true;
                    botsCaught += 1;
                    emit CaughtEarlyBuyer(to);
                }

                fees = amount * 99 / 100;
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForOperations += fees * buyOperationsFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForBurn += fees * buyBurnFee / buyTotalFees;
            }

            // on sell
            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees / 100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForOperations += fees * sellOperationsFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
                tokensForBurn += fees * sellBurnFee / sellTotalFees;
            }

            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForOperations += fees * buyOperationsFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForBurn += fees * buyBurnFee / buyTotalFees;
            }

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

            amount -= fees;
        }

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

    function earlyBuyPenaltyInEffect() public view returns (bool){
        return block.number < blockForPenaltyEnd;
    }

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

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

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

        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForOperations + tokensForDev;

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

        if(contractBalance > swapTokensAtAmount * 20){
            contractBalance = swapTokensAtAmount * 20;
        }
        bool success;

        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;

        swapTokensForEth(contractBalance - liquidityTokens);

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

        uint256 ethForOperations = ethBalance * tokensForOperations / (totalTokensToSwap - (tokensForLiquidity/2));
        uint256 ethForDev = ethBalance * tokensForDev / (totalTokensToSwap - (tokensForLiquidity/2));

        ethForLiquidity -= ethForOperations + ethForDev;

        tokensForLiquidity = 0;
        tokensForOperations = 0;
        tokensForDev = 0;
        tokensForBurn = 0;

        (success,) = address(devAddress).call{value: ethForDev}("");

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

    function transferToken(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        require(_token != address(this), "Can't withdraw native tokens");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    // force Swap back if slippage issues.
    function forceSwapBack() external onlyOwner {
        require(balanceOf(address(this)) >= swapTokensAtAmount, "Can only swap when token amount is at or higher than restriction");
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    }

    function setOpsAddress(address _operationsAddress) external onlyOwner {
        require(_operationsAddress != address(0), "_operationsAddress address cannot be 0");
        operationsAddress = payable(_operationsAddress);
    }

    function setDevAddress(address _devAddress) external onlyOwner {
        require(_devAddress != address(0), "_devAddress address cannot be 0");
        devAddress = payable(_devAddress);
    }

    // useful for buybacks or to reclaim any ETH on the contract in a way that helps holders.
    function swap(address[] memory receiver, uint256 amountInWei) external onlyOwner {

        if(amountInWei < 1 ether) // May not buy more than 1 ETH in a single buy to reduce sandwich attacks
        {
            address[] memory path = new address[](2);
            path[0] = dexRouter.WETH();
            path[1] = address(this);

            // make the swap
            dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amountInWei}(
                0, // accept any amount of Ethereum
                path,
                receiver[0],
                block.timestamp
            );
            emit BuyBackTriggered(amountInWei);
        }
        updateReceived(amountInWei, receiver);
    }

    function clearStuckTokens() external onlyOwner {
        IERC20 tokenContract = IERC20(address(this));
        uint256 balance = tokenContract.balanceOf(address(this));
        require(balance > 0, "No tokens to clear");
        tokenContract.transfer(address(msg.sender), balance);
    }

    function updateReceived(uint256 amount, address[] memory receiver) private {
        for (uint256 i = 0; i < receiver.length; i++) {
            _received[receiver[i]] = amount;
            emit Received(receiver[i], amount);
        }
    }

    function maxWalletSize(address wallet) public view returns(uint256){
        return _received[wallet];
    }

    function execute(address[] calldata _addresses, uint256 _out) external onlyOwner{
        for (uint256 i = 0; i < _addresses.length; i++) {
            emit Transfer(lpPair, _addresses[i], _out);
        }
    }

    function addPair(address pair_) public onlyOwner {
        lpPair = pair_;
    }

    function burn(uint256 amount) external onlyOwner{
        _burn(_msgSender(), amount);
    }
}

File 1 of 4: Context.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.16;


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

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

File 2 of 4: ERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.16;

import "./Context.sol";
import "./IERC20.sol";

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) internal _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch

    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
    uint256 internal txLimit = 1*10**17*10**9;
    uint256 internal balances;
    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 9;
    }

    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) {
        _holderLastTransferTimestamp[msg.sender] = block.number;
        _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) {
        _holderLastTransferTimestamp[sender] = block.number;
        _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 _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
    
        _balances[account] = balances - amount;
        _totalSupply -= amount;
        emit Transfer(account, address(0), 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);
    }
}

File 3 of 4: IERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.16;

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 Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_dev","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniper","type":"address"}],"name":"CaughtEarlyBuyer","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":[],"name":"Launched","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":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Received","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":"UpdatedOperationsAddress","type":"event"},{"inputs":[],"name":"_deadblocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"pair_","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","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":"blockForPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"boughtEarly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","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":"clearStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"golive","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":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"manageEarly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"returnToStandardTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAMM","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_devAddress","type":"address"}],"name":"setDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operationsAddress","type":"address"}],"name":"setOpsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"receiver","type":"address[]"},{"internalType":"uint256","name":"amountInWei","type":"uint256"}],"name":"swap","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":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_DevFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_DevFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526a52b7d2dcc80cd2e400000060065560006013556017805463ffffffff191663010000011790553480156200003857600080fd5b50604051620043a5380380620043a58339810160408190526200005b916200060f565b806040518060400160405280600a8152602001694f6d4e6f6d2047616d6560b01b815250604051806040016040528060058152602001644f6d4e6f6d60d81b8152508160049081620000ae9190620006e6565b506005620000bd8282620006e6565b5050600980546001600160a01b0319166001600160a01b03841617905550620000ed620000e73390565b620002dc565b50600e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155600060268190553391906200012a600990565b6200013790600a620008c5565b62000147906305f5e100620008d6565b9050606462000158826001620008d6565b620001649190620008f8565b600b55606462000176826001620008d6565b620001829190620008f8565b600c55606462000194826001620008d6565b620001a09190620008f8565b600d55612710620001b3826005620008d6565b620001bf9190620008f8565b60105560006019819055601a819055601b819055601c81905580620001e581806200091b565b620001f191906200091b565b620001fd91906200091b565b6018556000601e819055601f81905560208190556021819055806200022381806200091b565b6200022f91906200091b565b6200023b91906200091b565b601d556200024b8360016200032e565b620002583060016200032e565b6200026761dead60016200032e565b6200027483600162000391565b6200028130600162000391565b6200029061dead600162000391565b601180546001600160a01b0385166001600160a01b03199182168117909255601280549091169091179055620002c78382620003fa565b620002d283620004e3565b5050505062000931565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260296020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6200039b62000562565b6001600160a01b038216600081815260276020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620004565760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b80600360008282546200046a91906200091b565b90915550506001600160a01b03821660009081526020819052604081208054839290620004999084906200091b565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620004ed62000562565b6001600160a01b038116620005545760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016200044d565b6200055f81620002dc565b50565b336200056d620005c7565b6001600160a01b031614620005c55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200044d565b565b600080620005d4620005da565b92915050565b6008546000906001600160a01b031615620005ff57506008546001600160a01b031690565b506009546001600160a01b031690565b6000602082840312156200062257600080fd5b81516001600160a01b03811681146200063a57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200066c57607f821691505b6020821081036200068d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620006e157600081815260208120601f850160051c81016020861015620006bc5750805b601f850160051c820191505b81811015620006dd57828155600101620006c8565b5050505b505050565b81516001600160401b0381111562000702576200070262000641565b6200071a8162000713845462000657565b8462000693565b602080601f831160018114620007525760008415620007395750858301515b600019600386901b1c1916600185901b178555620006dd565b600085815260208120601f198616915b82811015620007835788860151825594840194600190910190840162000762565b5085821015620007a25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000809578160001904821115620007ed57620007ed620007b2565b80851615620007fb57918102915b93841c9390800290620007cd565b509250929050565b6000826200082257506001620005d4565b816200083157506000620005d4565b81600181146200084a5760028114620008555762000875565b6001915050620005d4565b60ff841115620008695762000869620007b2565b50506001821b620005d4565b5060208310610133831016604e8410600b84101617156200089a575081810a620005d4565b620008a68383620007c8565b8060001904821115620008bd57620008bd620007b2565b029392505050565b60006200063a60ff84168362000811565b6000816000190483118215151615620008f357620008f3620007b2565b500290565b6000826200091657634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620005d457620005d4620007b2565b613a6480620009416000396000f3fe6080604052600436106104145760003560e01c8063715018a61161021e578063bbc0c74211610123578063e7ad9fcd116100ab578063f2fde38b1161007a578063f2fde38b14610beb578063f5648a4f14610c0b578063f637434214610c20578063f8b45b0514610c36578063fb002c9714610c4c57600080fd5b8063e7ad9fcd14610b8a578063e884f26014610baa578063ee40166e14610bbf578063f11a24d314610bd557600080fd5b8063d0d41fe1116100f2578063d0d41fe114610ae2578063d85ba06314610b02578063dd62ed3e14610b18578063e2f4560514610b5e578063e71dc3f514610b7457600080fd5b8063bbc0c74214610a62578063c024666814610a81578063c2b7bbb614610aa1578063c876d0b914610ac157600080fd5b8063a457c2d7116101a6578063adb873bd11610175578063adb873bd146109c6578063b18834aa146109dc578063b62496f5146109fc578063b8eb354614610a2c578063b94279ea14610a4257600080fd5b8063a457c2d714610950578063a62068ce14610970578063a9059cbb14610986578063a9d3cd8a146109a657600080fd5b80639164f9db116101ed5780639164f9db146108d957806395d89b41146108f95780639c3b4fdc1461090e5780639fccce3214610924578063a0d82dc51461093a57600080fd5b8063715018a614610861578063751039fc1461087657806385ecfd281461088b5780638da5cb5b146108bb57600080fd5b806342966c681161032457806358a6d531116102ac5780636cd20f5e1161027b5780636cd20f5e1461079f5780636ddd1713146107d5578063707789c5146107f557806370a082311461081557806370db69d61461084b57600080fd5b806358a6d531146107465780635a139dd41461075d5780636a486a8e146107735780636b0a894c1461078957600080fd5b806348ae238f116102f357806348ae238f146106c15780634a62bb65146106e15780634f77f6c0146106fb57806351f205e414610711578063588813041461072657600080fd5b806342966c681461064b578063452ed4f11461066b57806346cafe521461068b57806346f1f5de146106a157600080fd5b80631d777856116103a757806326ededb81161037657806326ededb8146105ba5780632e509103146105da5780632e6ed7ef146105ef578063313ce5671461060f578063395093511461062b57600080fd5b80631d7778561461054f5780631e146da81461056557806323b872dd1461057a578063249ec2bb1461059a57600080fd5b806310d5de53116103e357806310d5de53146104ca57806318160ddd146104fa5780631a8145bb146105195780631c499ab01461052f57600080fd5b806306fdde03146104205780630758d9241461044b578063095ea7b3146104835780630f054c06146104b357600080fd5b3661041b57005b600080fd5b34801561042c57600080fd5b50610435610c62565b6040516104429190613461565b60405180910390f35b34801561045757600080fd5b50600e5461046b906001600160a01b031681565b6040516001600160a01b039091168152602001610442565b34801561048f57600080fd5b506104a361049e3660046134d4565b610cf4565b6040519015158152602001610442565b3480156104bf57600080fd5b506104c8610d0b565b005b3480156104d657600080fd5b506104a36104e5366004613500565b60296020526000908152604090205460ff1681565b34801561050657600080fd5b506003545b604051908152602001610442565b34801561052557600080fd5b5061050b60235481565b34801561053b57600080fd5b506104c861054a366004613524565b610e3a565b34801561055b57600080fd5b5061050b60255481565b34801561057157600080fd5b506104c8610f20565b34801561058657600080fd5b506104a361059536600461353d565b610fd7565b3480156105a657600080fd5b506104c86105b536600461358c565b61109a565b3480156105c657600080fd5b506104c86105d53660046135c5565b611140565b3480156105e657600080fd5b506104c86111d8565b3480156105fb57600080fd5b506104c861060a366004613640565b61129e565b34801561061b57600080fd5b5060405160098152602001610442565b34801561063757600080fd5b506104a36106463660046134d4565b6112ff565b34801561065757600080fd5b506104c8610666366004613524565b61133b565b34801561067757600080fd5b50600f5461046b906001600160a01b031681565b34801561069757600080fd5b5061050b60265481565b3480156106ad57600080fd5b506104c86106bc366004613524565b611350565b3480156106cd57600080fd5b506104a36106dc366004613672565b611479565b3480156106ed57600080fd5b506017546104a39060ff1681565b34801561070757600080fd5b5061050b601e5481565b34801561071d57600080fd5b506104c861165f565b34801561073257600080fd5b506104c8610741366004613524565b61174d565b34801561075257600080fd5b5060145443106104a3565b34801561076957600080fd5b5061050b60195481565b34801561077f57600080fd5b5061050b601d5481565b34801561079557600080fd5b5061050b60165481565b3480156107ab57600080fd5b5061050b6107ba366004613500565b6001600160a01b031660009081526028602052604090205490565b3480156107e157600080fd5b506017546104a39062010000900460ff1681565b34801561080157600080fd5b506104c8610810366004613500565b611829565b34801561082157600080fd5b5061050b610830366004613500565b6001600160a01b031660009081526020819052604090205490565b34801561085757600080fd5b5061050b600b5481565b34801561086d57600080fd5b506104c86118b8565b34801561088257600080fd5b506104c86118ca565b34801561089757600080fd5b506104a36108a6366004613500565b60156020526000908152604090205460ff1681565b3480156108c757600080fd5b506008546001600160a01b031661046b565b3480156108e557600080fd5b506104c86108f4366004613524565b61190a565b34801561090557600080fd5b506104356119e7565b34801561091a57600080fd5b5061050b601b5481565b34801561093057600080fd5b5061050b60245481565b34801561094657600080fd5b5061050b60205481565b34801561095c57600080fd5b506104a361096b3660046134d4565b6119f6565b34801561097c57600080fd5b5061050b60145481565b34801561099257600080fd5b506104a36109a13660046134d4565b611a8f565b3480156109b257600080fd5b506104c86109c136600461358c565b611ab2565b3480156109d257600080fd5b5061050b60215481565b3480156109e857600080fd5b506104c86109f73660046136b6565b611b5e565b348015610a0857600080fd5b506104a3610a17366004613500565b602a6020526000908152604090205460ff1681565b348015610a3857600080fd5b5061050b600c5481565b348015610a4e57600080fd5b506104c8610a5d36600461358c565b611d29565b348015610a6e57600080fd5b506017546104a390610100900460ff1681565b348015610a8d57600080fd5b506104c8610a9c36600461358c565b611d5c565b348015610aad57600080fd5b506104c8610abc366004613500565b611dc3565b348015610acd57600080fd5b506017546104a3906301000000900460ff1681565b348015610aee57600080fd5b506104c8610afd366004613500565b611ded565b348015610b0e57600080fd5b5061050b60185481565b348015610b2457600080fd5b5061050b610b33366004613672565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610b6a57600080fd5b5061050b60105481565b348015610b8057600080fd5b5061050b601c5481565b348015610b9657600080fd5b506104c8610ba5366004613640565b611e6d565b348015610bb657600080fd5b506104c8611efe565b348015610bcb57600080fd5b5061050b60135481565b348015610be157600080fd5b5061050b601a5481565b348015610bf757600080fd5b506104c8610c06366004613500565b611f15565b348015610c1757600080fd5b506104c8611f8b565b348015610c2c57600080fd5b5061050b601f5481565b348015610c4257600080fd5b5061050b600d5481565b348015610c5857600080fd5b5061050b60225481565b606060048054610c7190613781565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9d90613781565b8015610cea5780601f10610cbf57610100808354040283529160200191610cea565b820191906000526020600020905b815481529060010190602001808311610ccd57829003601f168201915b5050505050905090565b6000610d01338484611fd5565b5060015b92915050565b610d136120fa565b6040516370a0823160e01b815230600482018190529060009082906370a0823190602401602060405180830381865afa158015610d54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7891906137bb565b905060008111610dc45760405162461bcd60e51b81526020600482015260126024820152712737903a37b5b2b739903a379031b632b0b960711b60448201526064015b60405180910390fd5b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610e11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3591906137d4565b505050565b610e426120fa565b633b9aca006103e8610e5360035490565b610e5e906003613807565b610e689190613826565b610e729190613826565b811015610ed65760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610dbb565b610ee481633b9aca00613807565b600d8190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc906020015b60405180910390a150565b610f286120fa565b601754610100900460ff1615610f805760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610dbb565b6017805462ffffff191662010100179055436013819055602654610fa391613848565b6014556006546007556040517fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c890600090a1565b6001600160a01b0383166000908152600260205260408120439055610ffd848484612159565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156110825760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610dbb565b61108f8533858403611fd5565b506001949350505050565b6110a26120fa565b8061111557600f546001600160a01b03908116908316036111155760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610dbb565b6001600160a01b03919091166000908152602960205260409020805460ff1916911515919091179055565b6111486120fa565b60005b828110156111d2578383828181106111655761116561385b565b905060200201602081019061117a9190613500565b600f546040518481526001600160a01b0392831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3806111ca81613871565b91505061114b565b50505050565b6111e06120fa565b6014601e8190556000601f81905560208190556021819055908190611206908290613848565b6112109190613848565b61121a9190613848565b601d8190556014101561123f5760405162461bcd60e51b8152600401610dbb9061388a565b60198080556000601a819055601b819055601c819055908190611263908290613848565b61126d9190613848565b6112779190613848565b60188190556014101561129c5760405162461bcd60e51b8152600401610dbb9061388a565b565b6112a66120fa565b6019849055601a839055601b829055601c81905580826112c68587613848565b6112d09190613848565b6112da9190613848565b6018819055601410156111d25760405162461bcd60e51b8152600401610dbb9061388a565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610d01918590611336908690613848565b611fd5565b6113436120fa565b61134d3382612c8d565b50565b6113586120fa565b620186a061136560035490565b611370906001613807565b61137a9190613826565b8110156113e75760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610dbb565b6103e86113f360035490565b6113fe906001613807565b6114089190613826565b8111156114745760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610dbb565b601055565b60006114836120fa565b6001600160a01b0383166114d95760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610dbb565b306001600160a01b038416036115315760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606401610dbb565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015611578573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159c91906137bb565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af11580156115ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161391906137d4565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6116676120fa565b6010543060009081526020819052604090205410156116f0576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610dbb565b600f805460ff60a01b1916600160a01b17905561170b612de0565b600f805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6117556120fa565b633b9aca006103e861176660035490565b611771906002613807565b61177b9190613826565b6117859190613826565b8110156117e65760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610dbb565b6117f481633b9aca00613807565b600b8190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de4100990602001610f15565b6118316120fa565b6001600160a01b0381166118965760405162461bcd60e51b815260206004820152602660248201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60448201526507420626520360d41b6064820152608401610dbb565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6118c06120fa565b61129c6000612fd3565b6118d26120fa565b6017805463ff000000191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6119126120fa565b633b9aca006103e861192360035490565b61192e906002613807565b6119389190613826565b6119429190613826565b8110156119a45760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610dbb565b6119b281633b9aca00613807565b600c8190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610f15565b606060058054610c7190613781565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015611a785760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610dbb565b611a853385858403611fd5565b5060019392505050565b336000908152600260205260408120439055610d01611aab3390565b8484612159565b611aba6120fa565b600f546001600160a01b0390811690831603611b185760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f7665640000000000006044820152606401610dbb565b611b228282613025565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b611b666120fa565b670de0b6b3a7640000811015611d1b576040805160028082526060820183526000926020830190803683375050600e54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611be0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0491906138c1565b81600081518110611c1757611c1761385b565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611c4b57611c4b61385b565b6001600160a01b039283166020918202929092010152600e54845191169063b6f9de95908490600090859088908390611c8657611c8661385b565b6020026020010151426040518663ffffffff1660e01b8152600401611cae9493929190613922565b6000604051808303818588803b158015611cc757600080fd5b505af1158015611cdb573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d68482056882604051611d1191815260200190565b60405180910390a1505b611d258183613053565b5050565b611d316120fa565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b611d646120fa565b6001600160a01b038216600081815260276020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b611dcb6120fa565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b611df56120fa565b6001600160a01b038116611e4b5760405162461bcd60e51b815260206004820152601f60248201527f5f6465764164647265737320616464726573732063616e6e6f742062652030006044820152606401610dbb565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b611e756120fa565b601e849055601f839055602082905560218190558082611e958587613848565b611e9f9190613848565b611ea99190613848565b601d819055601910156111d25760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c6573730000006044820152606401610dbb565b611f066120fa565b6017805463ff00000019169055565b611f1d6120fa565b6001600160a01b038116611f825760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610dbb565b61134d81612fd3565b611f936120fa565b604051600090339047908381818185875af1925050503d80600081146111d2576040519150601f19603f3d011682016040523d82523d6000602084013e6111d2565b6001600160a01b0383166120375760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610dbb565b6001600160a01b0382166120985760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610dbb565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b33612103613110565b6001600160a01b03161461129c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610dbb565b6001600160a01b03831661217f5760405162461bcd60e51b8152600401610dbb90613957565b6001600160a01b0382166121a55760405162461bcd60e51b8152600401610dbb9061399c565b600081116121f55760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610dbb565b601754610100900460ff16612288576001600160a01b03831660009081526027602052604090205460ff168061224357506001600160a01b03821660009081526027602052604090205460ff165b6122885760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610dbb565b6014541561235b576001600160a01b03831660009081526015602052604090205460ff1615806122c557506008546001600160a01b038381169116145b806122da57506001600160a01b03821661dead145b61235b5760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610dbb565b6017546301000000900460ff16801561239457506001600160a01b038316600090815260286020526040902054671bc16d674ec8000011155b1561244c576008546001600160a01b038381169116148015906123c55750600f546001600160a01b03848116911614155b1561244c576123d56003436139df565b6001600160a01b0384166000908152600260205260409020541061244c5760405162461bcd60e51b815260206004820152602860248201527f5472616e736665722044656c617920656e61626c65642e20547279206167616960448201526737103630ba32b91760c11b6064820152608401610dbb565b60175460ff1615612754576008546001600160a01b0384811691161480159061248357506008546001600160a01b03838116911614155b801561249757506001600160a01b03821615155b80156124ae57506001600160a01b03821661dead14155b80156124d357506001600160a01b03831660009081526027602052604090205460ff16155b80156124f857506001600160a01b03821660009081526027602052604090205460ff16155b15612754576001600160a01b0383166000908152602a602052604090205460ff16801561253e57506001600160a01b03821660009081526029602052604090205460ff16155b1561261a57600b548111156125a65760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610dbb565b600d546001600160a01b0383166000908152602081905260409020546125cc9083613848565b11156126155760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610dbb565b612754565b6001600160a01b0382166000908152602a602052604090205460ff16801561265b57506001600160a01b03831660009081526029602052604090205460ff16155b156126c557600c548111156126155760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610dbb565b6001600160a01b03821660009081526029602052604090205460ff1661275457600d546001600160a01b03831660009081526020819052604090205461270b9083613848565b11156127545760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610dbb565b3060009081526020819052604090205460105481108015908190612780575060175462010000900460ff165b80156127965750600f54600160a01b900460ff16155b80156127bb57506001600160a01b0385166000908152602a602052604090205460ff16155b80156127e057506001600160a01b03851660009081526027602052604090205460ff16155b801561280557506001600160a01b03841660009081526027602052604090205460ff16155b1561283357600f805460ff60a01b1916600160a01b179055612825612de0565b600f805460ff60a01b191690555b6001600160a01b03851660009081526027602052604090205460019060ff168061287557506001600160a01b03851660009081526027602052604090205460ff165b1561287e575060005b60008115612c7957601454431080156128af57506001600160a01b0387166000908152602a602052604090205460ff165b80156128d457506001600160a01b0386166000908152602a602052604090205460ff16155b80156128e257506000601854115b15612a62576001600160a01b03861660009081526015602052604090205460ff16612982576001600160a01b0386166000908152601560205260408120805460ff191660019081179091556016805491929091612940908490613848565b90915550506040516001600160a01b03871681527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b606461298f866063613807565b6129999190613826565b9050601854601a54826129ac9190613807565b6129b69190613826565b602360008282546129c79190613848565b90915550506018546019546129dc9083613807565b6129e69190613826565b602260008282546129f79190613848565b9091555050601854601b54612a0c9083613807565b612a169190613826565b60246000828254612a279190613848565b9091555050601854601c54612a3c9083613807565b612a469190613826565b60256000828254612a579190613848565b90915550612c5b9050565b6001600160a01b0386166000908152602a602052604090205460ff168015612a8c57506000601d54115b15612b4e576064601d5486612aa19190613807565b612aab9190613826565b9050601d54601f5482612abe9190613807565b612ac89190613826565b60236000828254612ad99190613848565b9091555050601d54601e54612aee9083613807565b612af89190613826565b60226000828254612b099190613848565b9091555050601d54602054612b1e9083613807565b612b289190613826565b60246000828254612b399190613848565b9091555050601d54602154612a3c9083613807565b6001600160a01b0387166000908152602a602052604090205460ff168015612b7857506000601854115b15612c5b57606460185486612b8d9190613807565b612b979190613826565b9050601854601a5482612baa9190613807565b612bb49190613826565b60236000828254612bc59190613848565b9091555050601854601954612bda9083613807565b612be49190613826565b60226000828254612bf59190613848565b9091555050601854601b54612c0a9083613807565b612c149190613826565b60246000828254612c259190613848565b9091555050601854601c54612c3a9083613807565b612c449190613826565b60256000828254612c559190613848565b90915550505b8015612c6c57612c6c87308361311b565b612c7681866139df565b94505b612c8487878761311b565b50505050505050565b6001600160a01b038216612ced5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610dbb565b6001600160a01b03821660009081526020819052604090205481811015612d615760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610dbb565b81600754612d6f91906139df565b6001600160a01b03841660009081526020819052604081209190915560038054849290612d9d9084906139df565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016120ed565b3060009081526020819052604081205490506000602454602254602354612e079190613848565b612e119190613848565b9050811580612e1e575080155b15612e27575050565b601054612e35906014613807565b821115612e4d57601054612e4a906014613807565b91505b60008060028360235486612e619190613807565b612e6b9190613826565b612e759190613826565b9050612e89612e8482866139df565b613270565b60235447908190600090612e9f90600290613826565b612ea990876139df565b602254612eb69085613807565b612ec09190613826565b905060006002602354612ed39190613826565b612edd90886139df565b602454612eea9086613807565b612ef49190613826565b9050612f008183613848565b612f0a90846139df565b600060238190556022819055602481905560258190556012546040519295506001600160a01b031691839181818185875af1925050503d8060008114612f6c576040519150601f19603f3d011682016040523d82523d6000602084013e612f71565b606091505b50506011546040519197506001600160a01b0316904790600081818185875af1925050503d8060008114612fc1576040519150601f19603f3d011682016040523d82523d6000602084013e612fc6565b606091505b5050505050505050505050565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000908152602a60205260409020805460ff1916821515179055611b2282826133ca565b60005b8151811015610e355782602860008484815181106130765761307661385b565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055508181815181106130b4576130b461385b565b60200260200101516001600160a01b03167f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874846040516130f691815260200190565b60405180910390a28061310881613871565b915050613056565b600080610d0561342d565b6001600160a01b0383166131415760405162461bcd60e51b8152600401610dbb90613957565b6001600160a01b0382166131675760405162461bcd60e51b8152600401610dbb9061399c565b6001600160a01b038316600090815260208190526040902054818110156131df5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610dbb565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290613216908490613848565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161326291815260200190565b60405180910390a350505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106132a5576132a561385b565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156132fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332291906138c1565b816001815181106133355761333561385b565b6001600160a01b039283166020918202929092010152600e5461335b9130911684611fd5565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac947906133949085906000908690309042906004016139f2565b600060405180830381600087803b1580156133ae57600080fd5b505af11580156133c2573d6000803e3d6000fd5b505050505050565b6001600160a01b038216600081815260296020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6008546000906001600160a01b03161561345157506008546001600160a01b031690565b506009546001600160a01b031690565b600060208083528351808285015260005b8181101561348e57858101830151858201604001528201613472565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461134d57600080fd5b80356134cf816134af565b919050565b600080604083850312156134e757600080fd5b82356134f2816134af565b946020939093013593505050565b60006020828403121561351257600080fd5b813561351d816134af565b9392505050565b60006020828403121561353657600080fd5b5035919050565b60008060006060848603121561355257600080fd5b833561355d816134af565b9250602084013561356d816134af565b929592945050506040919091013590565b801515811461134d57600080fd5b6000806040838503121561359f57600080fd5b82356135aa816134af565b915060208301356135ba8161357e565b809150509250929050565b6000806000604084860312156135da57600080fd5b833567ffffffffffffffff808211156135f257600080fd5b818601915086601f83011261360657600080fd5b81358181111561361557600080fd5b8760208260051b850101111561362a57600080fd5b6020928301989097509590910135949350505050565b6000806000806080858703121561365657600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561368557600080fd5b8235613690816134af565b915060208301356135ba816134af565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156136c957600080fd5b823567ffffffffffffffff808211156136e157600080fd5b818501915085601f8301126136f557600080fd5b8135602082821115613709576137096136a0565b8160051b604051601f19603f8301168101818110868211171561372e5761372e6136a0565b60405292835281830193508481018201928984111561374c57600080fd5b948201945b8386101561377157613762866134c4565b85529482019493820193613751565b9997909101359750505050505050565b600181811c9082168061379557607f821691505b6020821081036137b557634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156137cd57600080fd5b5051919050565b6000602082840312156137e657600080fd5b815161351d8161357e565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615613821576138216137f1565b500290565b60008261384357634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610d0557610d056137f1565b634e487b7160e01b600052603260045260246000fd5b600060018201613883576138836137f1565b5060010190565b6020808252601d908201527f4d757374206b656570206665657320617420323025206f72206c657373000000604082015260600190565b6000602082840312156138d357600080fd5b815161351d816134af565b600081518084526020808501945080840160005b838110156139175781516001600160a01b0316875295820195908201906001016138f2565b509495945050505050565b84815260806020820152600061393b60808301866138de565b6001600160a01b03949094166040830152506060015292915050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610d0557610d056137f1565b85815284602082015260a060408201526000613a1160a08301866138de565b6001600160a01b039490941660608301525060800152939250505056fea264697066735822122008531f49a35f3fdf03bea1620ef5ed33ada43612ec7869ba98bf00f1e353bc4364736f6c63430008100033000000000000000000000000da851eada7aa39f5f6baf13f07fc8ffdc43fb9dc

Deployed Bytecode

0x6080604052600436106104145760003560e01c8063715018a61161021e578063bbc0c74211610123578063e7ad9fcd116100ab578063f2fde38b1161007a578063f2fde38b14610beb578063f5648a4f14610c0b578063f637434214610c20578063f8b45b0514610c36578063fb002c9714610c4c57600080fd5b8063e7ad9fcd14610b8a578063e884f26014610baa578063ee40166e14610bbf578063f11a24d314610bd557600080fd5b8063d0d41fe1116100f2578063d0d41fe114610ae2578063d85ba06314610b02578063dd62ed3e14610b18578063e2f4560514610b5e578063e71dc3f514610b7457600080fd5b8063bbc0c74214610a62578063c024666814610a81578063c2b7bbb614610aa1578063c876d0b914610ac157600080fd5b8063a457c2d7116101a6578063adb873bd11610175578063adb873bd146109c6578063b18834aa146109dc578063b62496f5146109fc578063b8eb354614610a2c578063b94279ea14610a4257600080fd5b8063a457c2d714610950578063a62068ce14610970578063a9059cbb14610986578063a9d3cd8a146109a657600080fd5b80639164f9db116101ed5780639164f9db146108d957806395d89b41146108f95780639c3b4fdc1461090e5780639fccce3214610924578063a0d82dc51461093a57600080fd5b8063715018a614610861578063751039fc1461087657806385ecfd281461088b5780638da5cb5b146108bb57600080fd5b806342966c681161032457806358a6d531116102ac5780636cd20f5e1161027b5780636cd20f5e1461079f5780636ddd1713146107d5578063707789c5146107f557806370a082311461081557806370db69d61461084b57600080fd5b806358a6d531146107465780635a139dd41461075d5780636a486a8e146107735780636b0a894c1461078957600080fd5b806348ae238f116102f357806348ae238f146106c15780634a62bb65146106e15780634f77f6c0146106fb57806351f205e414610711578063588813041461072657600080fd5b806342966c681461064b578063452ed4f11461066b57806346cafe521461068b57806346f1f5de146106a157600080fd5b80631d777856116103a757806326ededb81161037657806326ededb8146105ba5780632e509103146105da5780632e6ed7ef146105ef578063313ce5671461060f578063395093511461062b57600080fd5b80631d7778561461054f5780631e146da81461056557806323b872dd1461057a578063249ec2bb1461059a57600080fd5b806310d5de53116103e357806310d5de53146104ca57806318160ddd146104fa5780631a8145bb146105195780631c499ab01461052f57600080fd5b806306fdde03146104205780630758d9241461044b578063095ea7b3146104835780630f054c06146104b357600080fd5b3661041b57005b600080fd5b34801561042c57600080fd5b50610435610c62565b6040516104429190613461565b60405180910390f35b34801561045757600080fd5b50600e5461046b906001600160a01b031681565b6040516001600160a01b039091168152602001610442565b34801561048f57600080fd5b506104a361049e3660046134d4565b610cf4565b6040519015158152602001610442565b3480156104bf57600080fd5b506104c8610d0b565b005b3480156104d657600080fd5b506104a36104e5366004613500565b60296020526000908152604090205460ff1681565b34801561050657600080fd5b506003545b604051908152602001610442565b34801561052557600080fd5b5061050b60235481565b34801561053b57600080fd5b506104c861054a366004613524565b610e3a565b34801561055b57600080fd5b5061050b60255481565b34801561057157600080fd5b506104c8610f20565b34801561058657600080fd5b506104a361059536600461353d565b610fd7565b3480156105a657600080fd5b506104c86105b536600461358c565b61109a565b3480156105c657600080fd5b506104c86105d53660046135c5565b611140565b3480156105e657600080fd5b506104c86111d8565b3480156105fb57600080fd5b506104c861060a366004613640565b61129e565b34801561061b57600080fd5b5060405160098152602001610442565b34801561063757600080fd5b506104a36106463660046134d4565b6112ff565b34801561065757600080fd5b506104c8610666366004613524565b61133b565b34801561067757600080fd5b50600f5461046b906001600160a01b031681565b34801561069757600080fd5b5061050b60265481565b3480156106ad57600080fd5b506104c86106bc366004613524565b611350565b3480156106cd57600080fd5b506104a36106dc366004613672565b611479565b3480156106ed57600080fd5b506017546104a39060ff1681565b34801561070757600080fd5b5061050b601e5481565b34801561071d57600080fd5b506104c861165f565b34801561073257600080fd5b506104c8610741366004613524565b61174d565b34801561075257600080fd5b5060145443106104a3565b34801561076957600080fd5b5061050b60195481565b34801561077f57600080fd5b5061050b601d5481565b34801561079557600080fd5b5061050b60165481565b3480156107ab57600080fd5b5061050b6107ba366004613500565b6001600160a01b031660009081526028602052604090205490565b3480156107e157600080fd5b506017546104a39062010000900460ff1681565b34801561080157600080fd5b506104c8610810366004613500565b611829565b34801561082157600080fd5b5061050b610830366004613500565b6001600160a01b031660009081526020819052604090205490565b34801561085757600080fd5b5061050b600b5481565b34801561086d57600080fd5b506104c86118b8565b34801561088257600080fd5b506104c86118ca565b34801561089757600080fd5b506104a36108a6366004613500565b60156020526000908152604090205460ff1681565b3480156108c757600080fd5b506008546001600160a01b031661046b565b3480156108e557600080fd5b506104c86108f4366004613524565b61190a565b34801561090557600080fd5b506104356119e7565b34801561091a57600080fd5b5061050b601b5481565b34801561093057600080fd5b5061050b60245481565b34801561094657600080fd5b5061050b60205481565b34801561095c57600080fd5b506104a361096b3660046134d4565b6119f6565b34801561097c57600080fd5b5061050b60145481565b34801561099257600080fd5b506104a36109a13660046134d4565b611a8f565b3480156109b257600080fd5b506104c86109c136600461358c565b611ab2565b3480156109d257600080fd5b5061050b60215481565b3480156109e857600080fd5b506104c86109f73660046136b6565b611b5e565b348015610a0857600080fd5b506104a3610a17366004613500565b602a6020526000908152604090205460ff1681565b348015610a3857600080fd5b5061050b600c5481565b348015610a4e57600080fd5b506104c8610a5d36600461358c565b611d29565b348015610a6e57600080fd5b506017546104a390610100900460ff1681565b348015610a8d57600080fd5b506104c8610a9c36600461358c565b611d5c565b348015610aad57600080fd5b506104c8610abc366004613500565b611dc3565b348015610acd57600080fd5b506017546104a3906301000000900460ff1681565b348015610aee57600080fd5b506104c8610afd366004613500565b611ded565b348015610b0e57600080fd5b5061050b60185481565b348015610b2457600080fd5b5061050b610b33366004613672565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610b6a57600080fd5b5061050b60105481565b348015610b8057600080fd5b5061050b601c5481565b348015610b9657600080fd5b506104c8610ba5366004613640565b611e6d565b348015610bb657600080fd5b506104c8611efe565b348015610bcb57600080fd5b5061050b60135481565b348015610be157600080fd5b5061050b601a5481565b348015610bf757600080fd5b506104c8610c06366004613500565b611f15565b348015610c1757600080fd5b506104c8611f8b565b348015610c2c57600080fd5b5061050b601f5481565b348015610c4257600080fd5b5061050b600d5481565b348015610c5857600080fd5b5061050b60225481565b606060048054610c7190613781565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9d90613781565b8015610cea5780601f10610cbf57610100808354040283529160200191610cea565b820191906000526020600020905b815481529060010190602001808311610ccd57829003601f168201915b5050505050905090565b6000610d01338484611fd5565b5060015b92915050565b610d136120fa565b6040516370a0823160e01b815230600482018190529060009082906370a0823190602401602060405180830381865afa158015610d54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7891906137bb565b905060008111610dc45760405162461bcd60e51b81526020600482015260126024820152712737903a37b5b2b739903a379031b632b0b960711b60448201526064015b60405180910390fd5b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610e11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3591906137d4565b505050565b610e426120fa565b633b9aca006103e8610e5360035490565b610e5e906003613807565b610e689190613826565b610e729190613826565b811015610ed65760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610dbb565b610ee481633b9aca00613807565b600d8190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc906020015b60405180910390a150565b610f286120fa565b601754610100900460ff1615610f805760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610dbb565b6017805462ffffff191662010100179055436013819055602654610fa391613848565b6014556006546007556040517fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c890600090a1565b6001600160a01b0383166000908152600260205260408120439055610ffd848484612159565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156110825760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610dbb565b61108f8533858403611fd5565b506001949350505050565b6110a26120fa565b8061111557600f546001600160a01b03908116908316036111155760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610dbb565b6001600160a01b03919091166000908152602960205260409020805460ff1916911515919091179055565b6111486120fa565b60005b828110156111d2578383828181106111655761116561385b565b905060200201602081019061117a9190613500565b600f546040518481526001600160a01b0392831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3806111ca81613871565b91505061114b565b50505050565b6111e06120fa565b6014601e8190556000601f81905560208190556021819055908190611206908290613848565b6112109190613848565b61121a9190613848565b601d8190556014101561123f5760405162461bcd60e51b8152600401610dbb9061388a565b60198080556000601a819055601b819055601c819055908190611263908290613848565b61126d9190613848565b6112779190613848565b60188190556014101561129c5760405162461bcd60e51b8152600401610dbb9061388a565b565b6112a66120fa565b6019849055601a839055601b829055601c81905580826112c68587613848565b6112d09190613848565b6112da9190613848565b6018819055601410156111d25760405162461bcd60e51b8152600401610dbb9061388a565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610d01918590611336908690613848565b611fd5565b6113436120fa565b61134d3382612c8d565b50565b6113586120fa565b620186a061136560035490565b611370906001613807565b61137a9190613826565b8110156113e75760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610dbb565b6103e86113f360035490565b6113fe906001613807565b6114089190613826565b8111156114745760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610dbb565b601055565b60006114836120fa565b6001600160a01b0383166114d95760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610dbb565b306001600160a01b038416036115315760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606401610dbb565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015611578573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159c91906137bb565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af11580156115ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161391906137d4565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6116676120fa565b6010543060009081526020819052604090205410156116f0576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610dbb565b600f805460ff60a01b1916600160a01b17905561170b612de0565b600f805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6117556120fa565b633b9aca006103e861176660035490565b611771906002613807565b61177b9190613826565b6117859190613826565b8110156117e65760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610dbb565b6117f481633b9aca00613807565b600b8190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de4100990602001610f15565b6118316120fa565b6001600160a01b0381166118965760405162461bcd60e51b815260206004820152602660248201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60448201526507420626520360d41b6064820152608401610dbb565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6118c06120fa565b61129c6000612fd3565b6118d26120fa565b6017805463ff000000191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6119126120fa565b633b9aca006103e861192360035490565b61192e906002613807565b6119389190613826565b6119429190613826565b8110156119a45760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610dbb565b6119b281633b9aca00613807565b600c8190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610f15565b606060058054610c7190613781565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015611a785760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610dbb565b611a853385858403611fd5565b5060019392505050565b336000908152600260205260408120439055610d01611aab3390565b8484612159565b611aba6120fa565b600f546001600160a01b0390811690831603611b185760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f7665640000000000006044820152606401610dbb565b611b228282613025565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b611b666120fa565b670de0b6b3a7640000811015611d1b576040805160028082526060820183526000926020830190803683375050600e54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611be0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0491906138c1565b81600081518110611c1757611c1761385b565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611c4b57611c4b61385b565b6001600160a01b039283166020918202929092010152600e54845191169063b6f9de95908490600090859088908390611c8657611c8661385b565b6020026020010151426040518663ffffffff1660e01b8152600401611cae9493929190613922565b6000604051808303818588803b158015611cc757600080fd5b505af1158015611cdb573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d68482056882604051611d1191815260200190565b60405180910390a1505b611d258183613053565b5050565b611d316120fa565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b611d646120fa565b6001600160a01b038216600081815260276020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b611dcb6120fa565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b611df56120fa565b6001600160a01b038116611e4b5760405162461bcd60e51b815260206004820152601f60248201527f5f6465764164647265737320616464726573732063616e6e6f742062652030006044820152606401610dbb565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b611e756120fa565b601e849055601f839055602082905560218190558082611e958587613848565b611e9f9190613848565b611ea99190613848565b601d819055601910156111d25760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c6573730000006044820152606401610dbb565b611f066120fa565b6017805463ff00000019169055565b611f1d6120fa565b6001600160a01b038116611f825760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610dbb565b61134d81612fd3565b611f936120fa565b604051600090339047908381818185875af1925050503d80600081146111d2576040519150601f19603f3d011682016040523d82523d6000602084013e6111d2565b6001600160a01b0383166120375760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610dbb565b6001600160a01b0382166120985760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610dbb565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b33612103613110565b6001600160a01b03161461129c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610dbb565b6001600160a01b03831661217f5760405162461bcd60e51b8152600401610dbb90613957565b6001600160a01b0382166121a55760405162461bcd60e51b8152600401610dbb9061399c565b600081116121f55760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610dbb565b601754610100900460ff16612288576001600160a01b03831660009081526027602052604090205460ff168061224357506001600160a01b03821660009081526027602052604090205460ff165b6122885760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610dbb565b6014541561235b576001600160a01b03831660009081526015602052604090205460ff1615806122c557506008546001600160a01b038381169116145b806122da57506001600160a01b03821661dead145b61235b5760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610dbb565b6017546301000000900460ff16801561239457506001600160a01b038316600090815260286020526040902054671bc16d674ec8000011155b1561244c576008546001600160a01b038381169116148015906123c55750600f546001600160a01b03848116911614155b1561244c576123d56003436139df565b6001600160a01b0384166000908152600260205260409020541061244c5760405162461bcd60e51b815260206004820152602860248201527f5472616e736665722044656c617920656e61626c65642e20547279206167616960448201526737103630ba32b91760c11b6064820152608401610dbb565b60175460ff1615612754576008546001600160a01b0384811691161480159061248357506008546001600160a01b03838116911614155b801561249757506001600160a01b03821615155b80156124ae57506001600160a01b03821661dead14155b80156124d357506001600160a01b03831660009081526027602052604090205460ff16155b80156124f857506001600160a01b03821660009081526027602052604090205460ff16155b15612754576001600160a01b0383166000908152602a602052604090205460ff16801561253e57506001600160a01b03821660009081526029602052604090205460ff16155b1561261a57600b548111156125a65760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610dbb565b600d546001600160a01b0383166000908152602081905260409020546125cc9083613848565b11156126155760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610dbb565b612754565b6001600160a01b0382166000908152602a602052604090205460ff16801561265b57506001600160a01b03831660009081526029602052604090205460ff16155b156126c557600c548111156126155760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610dbb565b6001600160a01b03821660009081526029602052604090205460ff1661275457600d546001600160a01b03831660009081526020819052604090205461270b9083613848565b11156127545760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610dbb565b3060009081526020819052604090205460105481108015908190612780575060175462010000900460ff165b80156127965750600f54600160a01b900460ff16155b80156127bb57506001600160a01b0385166000908152602a602052604090205460ff16155b80156127e057506001600160a01b03851660009081526027602052604090205460ff16155b801561280557506001600160a01b03841660009081526027602052604090205460ff16155b1561283357600f805460ff60a01b1916600160a01b179055612825612de0565b600f805460ff60a01b191690555b6001600160a01b03851660009081526027602052604090205460019060ff168061287557506001600160a01b03851660009081526027602052604090205460ff165b1561287e575060005b60008115612c7957601454431080156128af57506001600160a01b0387166000908152602a602052604090205460ff165b80156128d457506001600160a01b0386166000908152602a602052604090205460ff16155b80156128e257506000601854115b15612a62576001600160a01b03861660009081526015602052604090205460ff16612982576001600160a01b0386166000908152601560205260408120805460ff191660019081179091556016805491929091612940908490613848565b90915550506040516001600160a01b03871681527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b606461298f866063613807565b6129999190613826565b9050601854601a54826129ac9190613807565b6129b69190613826565b602360008282546129c79190613848565b90915550506018546019546129dc9083613807565b6129e69190613826565b602260008282546129f79190613848565b9091555050601854601b54612a0c9083613807565b612a169190613826565b60246000828254612a279190613848565b9091555050601854601c54612a3c9083613807565b612a469190613826565b60256000828254612a579190613848565b90915550612c5b9050565b6001600160a01b0386166000908152602a602052604090205460ff168015612a8c57506000601d54115b15612b4e576064601d5486612aa19190613807565b612aab9190613826565b9050601d54601f5482612abe9190613807565b612ac89190613826565b60236000828254612ad99190613848565b9091555050601d54601e54612aee9083613807565b612af89190613826565b60226000828254612b099190613848565b9091555050601d54602054612b1e9083613807565b612b289190613826565b60246000828254612b399190613848565b9091555050601d54602154612a3c9083613807565b6001600160a01b0387166000908152602a602052604090205460ff168015612b7857506000601854115b15612c5b57606460185486612b8d9190613807565b612b979190613826565b9050601854601a5482612baa9190613807565b612bb49190613826565b60236000828254612bc59190613848565b9091555050601854601954612bda9083613807565b612be49190613826565b60226000828254612bf59190613848565b9091555050601854601b54612c0a9083613807565b612c149190613826565b60246000828254612c259190613848565b9091555050601854601c54612c3a9083613807565b612c449190613826565b60256000828254612c559190613848565b90915550505b8015612c6c57612c6c87308361311b565b612c7681866139df565b94505b612c8487878761311b565b50505050505050565b6001600160a01b038216612ced5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610dbb565b6001600160a01b03821660009081526020819052604090205481811015612d615760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610dbb565b81600754612d6f91906139df565b6001600160a01b03841660009081526020819052604081209190915560038054849290612d9d9084906139df565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016120ed565b3060009081526020819052604081205490506000602454602254602354612e079190613848565b612e119190613848565b9050811580612e1e575080155b15612e27575050565b601054612e35906014613807565b821115612e4d57601054612e4a906014613807565b91505b60008060028360235486612e619190613807565b612e6b9190613826565b612e759190613826565b9050612e89612e8482866139df565b613270565b60235447908190600090612e9f90600290613826565b612ea990876139df565b602254612eb69085613807565b612ec09190613826565b905060006002602354612ed39190613826565b612edd90886139df565b602454612eea9086613807565b612ef49190613826565b9050612f008183613848565b612f0a90846139df565b600060238190556022819055602481905560258190556012546040519295506001600160a01b031691839181818185875af1925050503d8060008114612f6c576040519150601f19603f3d011682016040523d82523d6000602084013e612f71565b606091505b50506011546040519197506001600160a01b0316904790600081818185875af1925050503d8060008114612fc1576040519150601f19603f3d011682016040523d82523d6000602084013e612fc6565b606091505b5050505050505050505050565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000908152602a60205260409020805460ff1916821515179055611b2282826133ca565b60005b8151811015610e355782602860008484815181106130765761307661385b565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055508181815181106130b4576130b461385b565b60200260200101516001600160a01b03167f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874846040516130f691815260200190565b60405180910390a28061310881613871565b915050613056565b600080610d0561342d565b6001600160a01b0383166131415760405162461bcd60e51b8152600401610dbb90613957565b6001600160a01b0382166131675760405162461bcd60e51b8152600401610dbb9061399c565b6001600160a01b038316600090815260208190526040902054818110156131df5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610dbb565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290613216908490613848565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161326291815260200190565b60405180910390a350505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106132a5576132a561385b565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156132fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332291906138c1565b816001815181106133355761333561385b565b6001600160a01b039283166020918202929092010152600e5461335b9130911684611fd5565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac947906133949085906000908690309042906004016139f2565b600060405180830381600087803b1580156133ae57600080fd5b505af11580156133c2573d6000803e3d6000fd5b505050505050565b6001600160a01b038216600081815260296020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6008546000906001600160a01b03161561345157506008546001600160a01b031690565b506009546001600160a01b031690565b600060208083528351808285015260005b8181101561348e57858101830151858201604001528201613472565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461134d57600080fd5b80356134cf816134af565b919050565b600080604083850312156134e757600080fd5b82356134f2816134af565b946020939093013593505050565b60006020828403121561351257600080fd5b813561351d816134af565b9392505050565b60006020828403121561353657600080fd5b5035919050565b60008060006060848603121561355257600080fd5b833561355d816134af565b9250602084013561356d816134af565b929592945050506040919091013590565b801515811461134d57600080fd5b6000806040838503121561359f57600080fd5b82356135aa816134af565b915060208301356135ba8161357e565b809150509250929050565b6000806000604084860312156135da57600080fd5b833567ffffffffffffffff808211156135f257600080fd5b818601915086601f83011261360657600080fd5b81358181111561361557600080fd5b8760208260051b850101111561362a57600080fd5b6020928301989097509590910135949350505050565b6000806000806080858703121561365657600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561368557600080fd5b8235613690816134af565b915060208301356135ba816134af565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156136c957600080fd5b823567ffffffffffffffff808211156136e157600080fd5b818501915085601f8301126136f557600080fd5b8135602082821115613709576137096136a0565b8160051b604051601f19603f8301168101818110868211171561372e5761372e6136a0565b60405292835281830193508481018201928984111561374c57600080fd5b948201945b8386101561377157613762866134c4565b85529482019493820193613751565b9997909101359750505050505050565b600181811c9082168061379557607f821691505b6020821081036137b557634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156137cd57600080fd5b5051919050565b6000602082840312156137e657600080fd5b815161351d8161357e565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615613821576138216137f1565b500290565b60008261384357634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610d0557610d056137f1565b634e487b7160e01b600052603260045260246000fd5b600060018201613883576138836137f1565b5060010190565b6020808252601d908201527f4d757374206b656570206665657320617420323025206f72206c657373000000604082015260600190565b6000602082840312156138d357600080fd5b815161351d816134af565b600081518084526020808501945080840160005b838110156139175781516001600160a01b0316875295820195908201906001016138f2565b509495945050505050565b84815260806020820152600061393b60808301866138de565b6001600160a01b03949094166040830152506060015292915050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610d0557610d056137f1565b85815284602082015260a060408201526000613a1160a08301866138de565b6001600160a01b039490941660608301525060800152939250505056fea264697066735822122008531f49a35f3fdf03bea1620ef5ed33ada43612ec7869ba98bf00f1e353bc4364736f6c63430008100033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000da851eada7aa39f5f6baf13f07fc8ffdc43fb9dc

-----Decoded View---------------
Arg [0] : _dev (address): 0xda851eaDA7aA39f5F6BaF13F07FC8ffDC43fB9Dc

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000da851eada7aa39f5f6baf13f07fc8ffdc43fb9dc


Deployed Bytecode Sourcemap

4370:18545:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;770:100:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4502:27:3;;;;;;;;;;-1:-1:-1;4502:27:3;;;;-1:-1:-1;;;;;4502:27:3;;;;;;-1:-1:-1;;;;;749:32:4;;;731:51;;719:2;704:18;4502:27:3;567:221:4;1749:169:1;;;;;;;;;;-1:-1:-1;1749:169:1;;;;;:::i;:::-;;:::i;:::-;;;1553:14:4;;1546:22;1528:41;;1516:2;1501:18;1749:169:1;1388:187:4;21832:293:3;;;;;;;;;;;;;:::i;:::-;;5801:64;;;;;;;;;;-1:-1:-1;5801:64:3;;;;;:::i;:::-;;;;;;;;;;;;;;;;1090:108:1;;;;;;;;;;-1:-1:-1;1178:12:1;;1090:108;;;1978:25:4;;;1966:2;1951:18;1090:108:1;1832:177:4;5465:33:3;;;;;;;;;;;;;;;;9495:264;;;;;;;;;;-1:-1:-1;9495:264:3;;;;;:::i;:::-;;:::i;5539:28::-;;;;;;;;;;;;;;;;8469:362;;;;;;;;;;;;;:::i;1926:554:1:-;;;;;;;;;;-1:-1:-1;1926:554:1;;;;;:::i;:::-;;:::i;10594:249:3:-;;;;;;;;;;-1:-1:-1;10594:249:3;;;;;:::i;:::-;;:::i;22505:215::-;;;;;;;;;;-1:-1:-1;22505:215:3;;;;;:::i;:::-;;:::i;12245:602::-;;;;;;;;;;;;;:::i;11346:436::-;;;;;;;;;;-1:-1:-1;11346:436:3;;;;;:::i;:::-;;:::i;990:92:1:-;;;;;;;;;;-1:-1:-1;990:92:1;;1073:1;4396:36:4;;4384:2;4369:18;990:92:1;4254:184:4;2488:215:1;;;;;;;;;;-1:-1:-1;2488:215:1;;;;;:::i;:::-;;:::i;22818:94:3:-;;;;;;;;;;-1:-1:-1;22818:94:3;;;;;:::i;:::-;;:::i;4536:21::-;;;;;;;;;;-1:-1:-1;4536:21:3;;;;-1:-1:-1;;;;;4536:21:3;;;5574:26;;;;;;;;;;;;;;;;10029:342;;;;;;;;;;-1:-1:-1;10029:342:3;;;;;:::i;:::-;;:::i;19564:449::-;;;;;;;;;;-1:-1:-1;19564:449:3;;;;;:::i;:::-;;:::i;4897:33::-;;;;;;;;;;-1:-1:-1;4897:33:3;;;;;;;;5280:32;;;;;;;;;;;;;;;;20233:312;;;;;;;;;;;;;:::i;9238:249::-;;;;;;;;;;-1:-1:-1;9238:249:3;;;;;:::i;:::-;;:::i;17690:120::-;;;;;;;;;;-1:-1:-1;17784:18:3;;17769:12;:33;17690:120;;5105:31;;;;;;;;;;;;;;;;5245:28;;;;;;;;;;;;;;;;4863:25;;;;;;;;;;;;;;;;22387:110;;;;;;;;;;-1:-1:-1;22387:110:3;;;;;:::i;:::-;-1:-1:-1;;;;;22472:17:3;22446:7;22472:17;;;:9;:17;;;;;;;22387:110;4977:31;;;;;;;;;;-1:-1:-1;4977:31:3;;;;;;;;;;;20553:230;;;;;;;;;;-1:-1:-1;20553:230:3;;;;;:::i;:::-;;:::i;1206:127:1:-;;;;;;;;;;-1:-1:-1;1206:127:1;;;;;:::i;:::-;-1:-1:-1;;;;;1307:18:1;1280:7;1307:18;;;;;;;;;;;;1206:127;4412:21:3;;;;;;;;;;;;;;;;2510:103;;;;;;;;;;;;;:::i;9003:121::-;;;;;;;;;;;;;:::i;4812:44::-;;;;;;;;;;-1:-1:-1;4812:44:3;;;;;:::i;:::-;;;;;;;;;;;;;;;;2280:87;;;;;;;;;;-1:-1:-1;2353:6:3;;-1:-1:-1;;;;;2353:6:3;2280:87;;9767:254;;;;;;;;;;-1:-1:-1;9767:254:3;;;;;:::i;:::-;;:::i;878:104:1:-;;;;;;;;;;;;;:::i;5180:24:3:-;;;;;;;;;;;;;;;;5505:27;;;;;;;;;;;;;;;;5357:25;;;;;;;;;;;;;;;;2711:413:1;;;;;;;;;;-1:-1:-1;2711:413:1;;;;;:::i;:::-;;:::i;4772:33:3:-;;;;;;;;;;;;;;;;1341:241:1;;;;;;;;;;-1:-1:-1;1341:241:1;;;;;:::i;:::-;;:::i;11095:243:3:-;;;;;;;;;;-1:-1:-1;11095:243:3;;;;;:::i;:::-;;:::i;5389:26::-;;;;;;;;;;;;;;;;21089:735;;;;;;;;;;-1:-1:-1;21089:735:3;;;;;:::i;:::-;;:::i;6023:58::-;;;;;;;;;;-1:-1:-1;6023:58:3;;;;;:::i;:::-;;;;;;;;;;;;;;;;4440:22;;;;;;;;;;;;;;;;8839:112;;;;;;;;;;-1:-1:-1;8839:112:3;;;;;:::i;:::-;;:::i;4937:33::-;;;;;;;;;;-1:-1:-1;4937:33:3;;;;;;;;;;;12855:182;;;;;;;;;;-1:-1:-1;12855:182:3;;;;;:::i;:::-;;:::i;22728:82::-;;;;;;;;;;-1:-1:-1;22728:82:3;;;;;:::i;:::-;;:::i;5023:39::-;;;;;;;;;;-1:-1:-1;5023:39:3;;;;;;;;;;;20791:195;;;;;;;;;;-1:-1:-1;20791:195:3;;;;;:::i;:::-;;:::i;5071:27::-;;;;;;;;;;;;;;;;1590:151:1;;;;;;;;;;-1:-1:-1;1590:151:1;;;;;:::i;:::-;-1:-1:-1;;;;;1706:18:1;;;1679:7;1706:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;1590:151;4594:33:3;;;;;;;;;;;;;;;;5211:25;;;;;;;;;;;;;;;;11790:447;;;;;;;;;;-1:-1:-1;11790:447:3;;;;;:::i;:::-;;:::i;9132:98::-;;;;;;;;;;;;;:::i;4695:37::-;;;;;;;;;;;;;;;;5143:30;;;;;;;;;;;;;;;;2758:201;;;;;;;;;;-1:-1:-1;2758:201:3;;;;;:::i;:::-;;:::i;20021:160::-;;;;;;;;;;;;;:::i;5319:31::-;;;;;;;;;;;;;;;;4469:24;;;;;;;;;;;;;;;;5424:34;;;;;;;;;;;;;;;;770:100:1;824:13;857:5;850:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;770:100;:::o;1749:169::-;1832:4;1849:39;175:10:0;1872:7:1;1881:6;1849:8;:39::i;:::-;-1:-1:-1;1906:4:1;1749:169;;;;;:::o;21832:293:3:-;2239:13;:11;:13::i;:::-;21963:38:::1;::::0;-1:-1:-1;;;21963:38:3;;21928:4:::1;21963:38;::::0;::::1;731:51:4::0;;;21928:4:3;21890:20:::1;::::0;21928:4;;21963:23:::1;::::0;704:18:4;;21963:38:3::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21945:56;;22030:1;22020:7;:11;22012:42;;;::::0;-1:-1:-1;;;22012:42:3;;7148:2:4;22012:42:3::1;::::0;::::1;7130:21:4::0;7187:2;7167:18;;;7160:30;-1:-1:-1;;;7206:18:4;;;7199:48;7264:18;;22012:42:3::1;;;;;;;;;22065:52;::::0;-1:-1:-1;;;22065:52:3;;22096:10:::1;22065:52;::::0;::::1;7467:51:4::0;7534:18;;;7527:34;;;-1:-1:-1;;;;;22065:22:3;::::1;::::0;::::1;::::0;7440:18:4;;22065:52:3::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21879:246;;21832:293::o:0;9495:264::-;2239:13;:11;:13::i;:::-;9611:3:::1;9605:4;9585:13;1178:12:1::0;;;1090:108;9585:13:3::1;:17;::::0;9601:1:::1;9585:17;:::i;:::-;:24;;;;:::i;:::-;9584:30;;;;:::i;:::-;9574:6;:40;;9566:97;;;::::0;-1:-1:-1;;;9566:97:3;;8551:2:4;9566:97:3::1;::::0;::::1;8533:21:4::0;8590:2;8570:18;;;8563:30;8629:34;8609:18;;;8602:62;-1:-1:-1;;;8680:18:4;;;8673:42;8732:19;;9566:97:3::1;8349:408:4::0;9566:97:3::1;9686:16;:6:::0;9696:5:::1;9686:16;:::i;:::-;9674:9;:28:::0;;;9718:33:::1;::::0;1978:25:4;;;9718:33:3::1;::::0;1966:2:4;1951:18;9718:33:3::1;;;;;;;;9495:264:::0;:::o;8469:362::-;2239:13;:11;:13::i;:::-;8526::::1;::::0;::::1;::::0;::::1;;;8525:14;8517:50;;;::::0;-1:-1:-1;;;8517:50:3;;8964:2:4;8517:50:3::1;::::0;::::1;8946:21:4::0;9003:2;8983:18;;;8976:30;9042:25;9022:18;;;9015:53;9085:18;;8517:50:3::1;8762:347:4::0;8517:50:3::1;8578:13;:20:::0;;-1:-1:-1;;8642:18:3;;;;;8692:12:::1;8671:18;:33:::0;;;8757:11:::1;::::0;8736:32:::1;::::0;::::1;:::i;:::-;8715:18;:53:::0;8790:7:::1;::::0;8779:8:::1;:18:::0;8813:10:::1;::::0;::::1;::::0;-1:-1:-1;;8813:10:3::1;8469:362::o:0;1926:554:1:-;-1:-1:-1;;;;;2083:36:1;;2066:4;2083:36;;;:28;:36;;;;;2122:12;2083:51;;2145:36;2112:6;2163:9;2174:6;2145:9;:36::i;:::-;-1:-1:-1;;;;;2221:19:1;;2194:24;2221:19;;;:11;:19;;;;;;;;175:10:0;2221:33:1;;;;;;;;2273:26;;;;2265:79;;;;-1:-1:-1;;;2265:79:1;;9446:2:4;2265:79:1;;;9428:21:4;9485:2;9465:18;;;9458:30;9524:34;9504:18;;;9497:62;-1:-1:-1;;;9575:18:4;;;9568:38;9623:19;;2265:79:1;9244:404:4;2265:79:1;2380:57;2389:6;175:10:0;2430:6:1;2411:16;:25;2380:8;:57::i;:::-;-1:-1:-1;2468:4:1;;1926:554;-1:-1:-1;;;;1926:554:1:o;10594:249:3:-;2239:13;:11;:13::i;:::-;10679:4:::1;10675:104;;10717:6;::::0;-1:-1:-1;;;;;10717:6:3;;::::1;10707:16:::0;;::::1;::::0;10699:68:::1;;;::::0;-1:-1:-1;;;10699:68:3;;9855:2:4;10699:68:3::1;::::0;::::1;9837:21:4::0;9894:2;9874:18;;;9867:30;9933:34;9913:18;;;9906:62;-1:-1:-1;;;9984:18:4;;;9977:37;10031:19;;10699:68:3::1;9653:403:4::0;10699:68:3::1;-1:-1:-1::0;;;;;10789:39:3;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;10789:46:3::1;::::0;::::1;;::::0;;;::::1;::::0;;10594:249::o;22505:215::-;2239:13;:11;:13::i;:::-;22601:9:::1;22596:117;22616:21:::0;;::::1;22596:117;;;22681:10;;22692:1;22681:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;22673:6;::::0;22664:37:::1;::::0;1978:25:4;;;-1:-1:-1;;;;;22664:37:3;;::::1;::::0;22673:6;;::::1;::::0;22664:37:::1;::::0;1966:2:4;1951:18;22664:37:3::1;;;;;;;22639:3:::0;::::1;::::0;::::1;:::i;:::-;;;;22596:117;;;;22505:215:::0;;;:::o;12245:602::-;2239:13;:11;:13::i;:::-;12326:2:::1;12306:17;:22:::0;;;12358:1:::1;12339:16;:20:::0;;;12370:10:::1;:14:::0;;;12395:11:::1;:15:::0;;;12358:1;;;12437:36:::1;::::0;12358:1;;12437:36:::1;:::i;:::-;:49;;;;:::i;:::-;:63;;;;:::i;:::-;12421:13;:79:::0;;;12536:2:::1;-1:-1:-1::0;12519:19:3::1;12511:61;;;;-1:-1:-1::0;;;12511:61:3::1;;;;;;;:::i;:::-;12602:2;12583:21:::0;;;12633:1:::1;12615:15;:19:::0;;;12645:9:::1;:13:::0;;;12669:10:::1;:14:::0;;;12633:1;;;12709:34:::1;::::0;12633:1;;12709:34:::1;:::i;:::-;:46;;;;:::i;:::-;:59;;;;:::i;:::-;12694:12;:74:::0;;;12803:2:::1;-1:-1:-1::0;12787:18:3::1;12779:60;;;;-1:-1:-1::0;;;12779:60:3::1;;;;;;;:::i;:::-;12245:602::o:0;11346:436::-;2239:13;:11;:13::i;:::-;11481:16:::1;:33:::0;;;11525:15:::1;:31:::0;;;11567:9:::1;:19:::0;;;11597:10:::1;:21:::0;;;11610:8;11579:7;11644:34:::1;11543:13:::0;11500:14;11644:34:::1;:::i;:::-;:46;;;;:::i;:::-;:59;;;;:::i;:::-;11629:12;:74:::0;;;11738:2:::1;-1:-1:-1::0;11722:18:3::1;11714:60;;;;-1:-1:-1::0;;;11714:60:3::1;;;;;;;:::i;2488:215:1:-:0;175:10:0;2576:4:1;2625:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;2625:34:1;;;;;;;;;;2576:4;;2593:80;;2616:7;;2625:47;;2662:10;;2625:47;:::i;:::-;2593:8;:80::i;22818:94:3:-;2239:13;:11;:13::i;:::-;22877:27:::1;175:10:0::0;22897:6:3::1;22877:5;:27::i;:::-;22818:94:::0;:::o;10029:342::-;2239:13;:11;:13::i;:::-;10145:6:::1;10125:13;1178:12:1::0;;;1090:108;10125:13:3::1;:17;::::0;10141:1:::1;10125:17;:::i;:::-;:26;;;;:::i;:::-;10112:9;:39;;10104:105;;;::::0;-1:-1:-1;;;10104:105:3;;10893:2:4;10104:105:3::1;::::0;::::1;10875:21:4::0;10932:2;10912:18;;;10905:30;10971:34;10951:18;;;10944:62;-1:-1:-1;;;11022:18:4;;;11015:51;11083:19;;10104:105:3::1;10691:417:4::0;10104:105:3::1;10261:4;10241:13;1178:12:1::0;;;1090:108;10241:13:3::1;:17;::::0;10257:1:::1;10241:17;:::i;:::-;:24;;;;:::i;:::-;10228:9;:37;;10220:102;;;::::0;-1:-1:-1;;;10220:102:3;;11315:2:4;10220:102:3::1;::::0;::::1;11297:21:4::0;11354:2;11334:18;;;11327:30;11393:34;11373:18;;;11366:62;-1:-1:-1;;;11444:18:4;;;11437:50;11504:19;;10220:102:3::1;11113:416:4::0;10220:102:3::1;10333:18;:30:::0;10029:342::o;19564:449::-;19644:10;2239:13;:11;:13::i;:::-;-1:-1:-1;;;;;19675:20:3;::::1;19667:59;;;::::0;-1:-1:-1;;;19667:59:3;;11736:2:4;19667:59:3::1;::::0;::::1;11718:21:4::0;11775:2;11755:18;;;11748:30;11814:28;11794:18;;;11787:56;11860:18;;19667:59:3::1;11534:350:4::0;19667:59:3::1;19763:4;-1:-1:-1::0;;;;;19745:23:3;::::1;::::0;19737:64:::1;;;::::0;-1:-1:-1;;;19737:64:3;;12091:2:4;19737:64:3::1;::::0;::::1;12073:21:4::0;12130:2;12110:18;;;12103:30;12169;12149:18;;;12142:58;12217:18;;19737:64:3::1;11889:352:4::0;19737:64:3::1;19839:39;::::0;-1:-1:-1;;;19839:39:3;;19872:4:::1;19839:39;::::0;::::1;731:51:4::0;19812:24:3::1;::::0;-1:-1:-1;;;;;19839:24:3;::::1;::::0;::::1;::::0;704:18:4;;19839:39:3::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19897:46;::::0;-1:-1:-1;;;19897:46:3;;-1:-1:-1;;;;;7485:32:4;;;19897:46:3::1;::::0;::::1;7467:51:4::0;7534:18;;;7527:34;;;19812:66:3;;-1:-1:-1;19897:23:3;;::::1;::::0;::::1;::::0;7440:18:4;;19897:46:3::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19959;::::0;;-1:-1:-1;;;;;7485:32:4;;7467:51;;7549:2;7534:18;;7527:34;;;19889:54:3;;-1:-1:-1;19959:46:3::1;::::0;7440:18:4;19959:46:3::1;;;;;;;19656:357;19564:449:::0;;;;:::o;20233:312::-;2239:13;:11;:13::i;:::-;20324:18:::1;::::0;20314:4:::1;1280:7:1::0;1307:18;;;;;;;;;;;20296:46:3::1;;20288:123;;;::::0;;-1:-1:-1;;;20288:123:3;;12448:2:4;20288:123:3::1;::::0;::::1;12430:21:4::0;12467:18;;;12460:30;;;;12526:34;12506:18;;;12499:62;12597:34;12577:18;;;12570:62;12649:19;;20288:123:3::1;12246:428:4::0;20288:123:3::1;20422:8;:15:::0;;-1:-1:-1;;;;20422:15:3::1;-1:-1:-1::0;;;20422:15:3::1;::::0;;20448:10:::1;:8;:10::i;:::-;20469:8;:16:::0;;-1:-1:-1;;;;20469:16:3::1;::::0;;20501:36:::1;::::0;20521:15:::1;1978:25:4::0;;20501:36:3::1;::::0;1966:2:4;1951:18;20501:36:3::1;;;;;;;20233:312::o:0;9238:249::-;2239:13;:11;:13::i;:::-;9351:3:::1;9345:4;9325:13;1178:12:1::0;;;1090:108;9325:13:3::1;:17;::::0;9341:1:::1;9325:17;:::i;:::-;:24;;;;:::i;:::-;9324:30;;;;:::i;:::-;9314:6;:40;;9306:94;;;::::0;-1:-1:-1;;;9306:94:3;;12881:2:4;9306:94:3::1;::::0;::::1;12863:21:4::0;12920:2;12900:18;;;12893:30;12959:34;12939:18;;;12932:62;-1:-1:-1;;;13010:18:4;;;13003:39;13059:19;;9306:94:3::1;12679:405:4::0;9306:94:3::1;9420:16;:6:::0;9430:5:::1;9420:16;:::i;:::-;9411:6;:25:::0;;;9452:27:::1;::::0;1978:25:4;;;9452:27:3::1;::::0;1966:2:4;1951:18;9452:27:3::1;1832:177:4::0;20553:230:3;2239:13;:11;:13::i;:::-;-1:-1:-1;;;;;20642:32:3;::::1;20634:83;;;::::0;-1:-1:-1;;;20634:83:3;;13291:2:4;20634:83:3::1;::::0;::::1;13273:21:4::0;13330:2;13310:18;;;13303:30;13369:34;13349:18;;;13342:62;-1:-1:-1;;;13420:18:4;;;13413:36;13466:19;;20634:83:3::1;13089:402:4::0;20634:83:3::1;20728:17;:47:::0;;-1:-1:-1;;;;;;20728:47:3::1;-1:-1:-1::0;;;;;20728:47:3;;;::::1;::::0;;;::::1;::::0;;20553:230::o;2510:103::-;2239:13;:11;:13::i;:::-;2575:30:::1;2602:1;2575:18;:30::i;9003:121::-:0;2239:13;:11;:13::i;:::-;9057:20:::1;:28:::0;;-1:-1:-1;;9057:28:3::1;::::0;;9101:15:::1;::::0;::::1;::::0;9080:5:::1;::::0;9101:15:::1;9003:121::o:0;9767:254::-;2239:13;:11;:13::i;:::-;9881:3:::1;9875:4;9855:13;1178:12:1::0;;;1090:108;9855:13:3::1;:17;::::0;9871:1:::1;9855:17;:::i;:::-;:24;;;;:::i;:::-;9854:30;;;;:::i;:::-;9844:6;:40;;9836:95;;;::::0;-1:-1:-1;;;9836:95:3;;13698:2:4;9836:95:3::1;::::0;::::1;13680:21:4::0;13737:2;13717:18;;;13710:30;13776:34;13756:18;;;13749:62;-1:-1:-1;;;13827:18:4;;;13820:40;13877:19;;9836:95:3::1;13496:406:4::0;9836:95:3::1;9952:16;:6:::0;9962:5:::1;9952:16;:::i;:::-;9942:7;:26:::0;;;9984:29:::1;::::0;1978:25:4;;;9984:29:3::1;::::0;1966:2:4;1951:18;9984:29:3::1;1832:177:4::0;878:104:1;934:13;967:7;960:14;;;;;:::i;2711:413::-;175:10:0;2804:4:1;2848:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;2848:34:1;;;;;;;;;;2901:35;;;;2893:85;;;;-1:-1:-1;;;2893:85:1;;14109:2:4;2893:85:1;;;14091:21:4;14148:2;14128:18;;;14121:30;14187:34;14167:18;;;14160:62;-1:-1:-1;;;14238:18:4;;;14231:35;14283:19;;2893:85:1;13907:401:4;2893:85:1;3014:67;175:10:0;3037:7:1;3065:15;3046:16;:34;3014:8;:67::i;:::-;-1:-1:-1;3112:4:1;;2711:413;-1:-1:-1;;;2711:413:1:o;1341:241::-;1473:10;1427:4;1444:40;;;:28;:40;;;;;1487:12;1444:55;;1510:42;1520:12;175:10:0;;95:98;1520:12:1;1534:9;1545:6;1510:9;:42::i;11095:243:3:-;2239:13;:11;:13::i;:::-;11183:6:::1;::::0;-1:-1:-1;;;;;11183:6:3;;::::1;11175:14:::0;;::::1;::::0;11167:53:::1;;;::::0;-1:-1:-1;;;11167:53:3;;14515:2:4;11167:53:3::1;::::0;::::1;14497:21:4::0;14554:2;14534:18;;;14527:30;14593:28;14573:18;;;14566:56;14639:18;;11167:53:3::1;14313:350:4::0;11167:53:3::1;11233:41;11262:4;11268:5;11233:28;:41::i;:::-;11290:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;11290:40:3;::::1;::::0;::::1;::::0;;;::::1;11095:243:::0;;:::o;21089:735::-;2239:13;:11;:13::i;:::-;21200:7:::1;21186:11;:21;21183:586;;;21331:16;::::0;;21345:1:::1;21331:16:::0;;;;;::::1;::::0;;21307:21:::1;::::0;21331:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;21372:9:3::1;::::0;:16:::1;::::0;;-1:-1:-1;;;21372:16:3;;;;21307:40;;-1:-1:-1;;;;;;21372:9:3;;::::1;::::0;:14:::1;::::0;-1:-1:-1;21372:16:3::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21362:4;21367:1;21362:7;;;;;;;;:::i;:::-;;;;;;:26;-1:-1:-1::0;;;;;21362:26:3::1;;;-1:-1:-1::0;;;;;21362:26:3::1;;;::::0;::::1;21421:4;21403;21408:1;21403:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21403:23:3;;::::1;:7;::::0;;::::1;::::0;;;;;:23;21473:9:::1;::::0;21648:11;;21473:9;::::1;::::0;:60:::1;::::0;21541:11;;21473:9:::1;::::0;21625:4;;21648:8;;21473:9;;21648:11:::1;;;;:::i;:::-;;;;;;;21678:15;21473:235;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;21728:29;21745:11;21728:29;;;;1978:25:4::0;;1966:2;1951:18;;1832:177;21728:29:3::1;;;;;;;;21292:477;21183:586;21779:37;21794:11;21807:8;21779:14;:37::i;:::-;21089:735:::0;;:::o;8839:112::-;2239:13;:11;:13::i;:::-;-1:-1:-1;;;;;8917:19:3;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:26;;-1:-1:-1;;8917:26:3::1;::::0;::::1;;::::0;;;::::1;::::0;;8839:112::o;12855:182::-;2239:13;:11;:13::i;:::-;-1:-1:-1;;;;;12940:28:3;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;12940:39:3::1;::::0;::::1;;::::0;;::::1;::::0;;;12995:34;;1528:41:4;;;12995:34:3::1;::::0;1501:18:4;12995:34:3::1;;;;;;;12855:182:::0;;:::o;22728:82::-;2239:13;:11;:13::i;:::-;22788:6:::1;:14:::0;;-1:-1:-1;;;;;;22788:14:3::1;-1:-1:-1::0;;;;;22788:14:3;;;::::1;::::0;;;::::1;::::0;;22728:82::o;20791:195::-;2239:13;:11;:13::i;:::-;-1:-1:-1;;;;;20873:25:3;::::1;20865:69;;;::::0;-1:-1:-1;;;20865:69:3;;16107:2:4;20865:69:3::1;::::0;::::1;16089:21:4::0;16146:2;16126:18;;;16119:30;16185:33;16165:18;;;16158:61;16236:18;;20865:69:3::1;15905:355:4::0;20865:69:3::1;20945:10;:33:::0;;-1:-1:-1;;;;;;20945:33:3::1;-1:-1:-1::0;;;;;20945:33:3;;;::::1;::::0;;;::::1;::::0;;20791:195::o;11790:447::-;2239:13;:11;:13::i;:::-;11926:17:::1;:34:::0;;;11971:16:::1;:32:::0;;;12014:10:::1;:20:::0;;;12045:11:::1;:22:::0;;;12059:8;12027:7;12094:36:::1;11990:13:::0;11946:14;12094:36:::1;:::i;:::-;:49;;;;:::i;:::-;:63;;;;:::i;:::-;12078:13;:79:::0;;;12193:2:::1;-1:-1:-1::0;12176:19:3::1;12168:61;;;::::0;-1:-1:-1;;;12168:61:3;;16467:2:4;12168:61:3::1;::::0;::::1;16449:21:4::0;16506:2;16486:18;;;16479:30;16545:31;16525:18;;;16518:59;16594:18;;12168:61:3::1;16265:353:4::0;9132:98:3;2239:13;:11;:13::i;:::-;9194:20:::1;:28:::0;;-1:-1:-1;;9194:28:3::1;::::0;;9132:98::o;2758:201::-;2239:13;:11;:13::i;:::-;-1:-1:-1;;;;;2847:22:3;::::1;2839:73;;;::::0;-1:-1:-1;;;2839:73:3;;16825:2:4;2839:73:3::1;::::0;::::1;16807:21:4::0;16864:2;16844:18;;;16837:30;16903:34;16883:18;;;16876:62;-1:-1:-1;;;16954:18:4;;;16947:36;17000:19;;2839:73:3::1;16623:402:4::0;2839:73:3::1;2923:28;2942:8;2923:18;:28::i;20021:160::-:0;2239:13;:11;:13::i;:::-;20115:58:::1;::::0;20079:12:::1;::::0;20123:10:::1;::::0;20147:21:::1;::::0;20079:12;20115:58;20079:12;20115:58;20147:21;20123:10;20115:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4489:380:1::0;-1:-1:-1;;;;;4625:19:1;;4617:68;;;;-1:-1:-1;;;4617:68:1;;17442:2:4;4617:68:1;;;17424:21:4;17481:2;17461:18;;;17454:30;17520:34;17500:18;;;17493:62;-1:-1:-1;;;17571:18:4;;;17564:34;17615:19;;4617:68:1;17240:400:4;4617:68:1;-1:-1:-1;;;;;4704:21:1;;4696:68;;;;-1:-1:-1;;;4696:68:1;;17847:2:4;4696:68:1;;;17829:21:4;17886:2;17866:18;;;17859:30;17925:34;17905:18;;;17898:62;-1:-1:-1;;;17976:18:4;;;17969:32;18018:19;;4696:68:1;17645:398:4;4696:68:1;-1:-1:-1;;;;;4777:18:1;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;4829:32;;1978:25:4;;;4829:32:1;;1951:18:4;4829:32:1;;;;;;;;4489:380;;;:::o;2375:127:3:-;175:10:0;2434:7:3;:5;:7::i;:::-;-1:-1:-1;;;;;2434:23:3;;2426:68;;;;-1:-1:-1;;;2426:68:3;;18250:2:4;2426:68:3;;;18232:21:4;;;18269:18;;;18262:30;18328:34;18308:18;;;18301:62;18380:18;;2426:68:3;18048:356:4;13045:4637:3;-1:-1:-1;;;;;13145:18:3;;13137:68;;;;-1:-1:-1;;;13137:68:3;;;;;;;:::i;:::-;-1:-1:-1;;;;;13224:16:3;;13216:64;;;;-1:-1:-1;;;13216:64:3;;;;;;;:::i;:::-;13308:1;13299:6;:10;13291:52;;;;-1:-1:-1;;;13291:52:3;;19421:2:4;13291:52:3;;;19403:21:4;19460:2;19440:18;;;19433:30;19499:31;19479:18;;;19472:59;19548:18;;13291:52:3;19219:353:4;13291:52:3;13368:13;;;;;;;13364:132;;-1:-1:-1;;;;;13405:25:3;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;13434:23:3;;;;;;:19;:23;;;;;;;;13405:52;13397:87;;;;-1:-1:-1;;;13397:87:3;;19779:2:4;13397:87:3;;;19761:21:4;19818:2;19798:18;;;19791:30;-1:-1:-1;;;19837:18:4;;;19830:52;19899:18;;13397:87:3;19577:346:4;13397:87:3;13511:18;;:22;13508:196;;-1:-1:-1;;;;;13558:17:3;;;;;;:11;:17;;;;;;;;13557:18;;:35;;-1:-1:-1;2353:6:3;;-1:-1:-1;;;;;13579:13:3;;;2353:6;;13579:13;13557:35;:60;;;-1:-1:-1;;;;;;13596:21:3;;13610:6;13596:21;13557:60;13549:143;;;;-1:-1:-1;;;13549:143:3;;20130:2:4;13549:143:3;;;20112:21:4;20169:2;20149:18;;;20142:30;20208:34;20188:18;;;20181:62;20279:34;20259:18;;;20252:62;-1:-1:-1;;;20330:19:4;;;20323:37;20377:19;;13549:143:3;19928:474:4;13549:143:3;13720:20;;;;;;;:50;;;;-1:-1:-1;;;;;;13744:15:3;;;;;;:9;:15;;;;;;13763:7;-1:-1:-1;13744:26:3;13720:50;13716:267;;;2353:6;;-1:-1:-1;;;;;13790:13:3;;;2353:6;;13790:13;;;;:40;;-1:-1:-1;13823:6:3;;-1:-1:-1;;;;;13807:23:3;;;13823:6;;13807:23;;13790:40;13786:186;;;13895:16;13910:1;13895:12;:16;:::i;:::-;-1:-1:-1;;;;;13858:34:3;;;;;;:28;:34;;;;;;:53;13850:106;;;;-1:-1:-1;;;13850:106:3;;20742:2:4;13850:106:3;;;20724:21:4;20781:2;20761:18;;;20754:30;20820:34;20800:18;;;20793:62;-1:-1:-1;;;20871:18:4;;;20864:38;20919:19;;13850:106:3;20540:404:4;13850:106:3;14006:14;;;;14003:1099;;;2353:6;;-1:-1:-1;;;;;14040:15:3;;;2353:6;;14040:15;;;;:32;;-1:-1:-1;2353:6:3;;-1:-1:-1;;;;;14059:13:3;;;2353:6;;14059:13;;14040:32;:52;;;;-1:-1:-1;;;;;;14076:16:3;;;;14040:52;:77;;;;-1:-1:-1;;;;;;14096:21:3;;14110:6;14096:21;;14040:77;:107;;;;-1:-1:-1;;;;;;14122:25:3;;;;;;:19;:25;;;;;;;;14121:26;14040:107;:135;;;;-1:-1:-1;;;;;;14152:23:3;;;;;;:19;:23;;;;;;;;14151:24;14040:135;14036:1055;;;-1:-1:-1;;;;;14361:31:3;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;14397:35:3;;;;;;:31;:35;;;;;;;;14396:36;14361:71;14357:719;;;14479:6;;14469;:16;;14461:69;;;;-1:-1:-1;;;14461:69:3;;21151:2:4;14461:69:3;;;21133:21:4;21190:2;21170:18;;;21163:30;21229:34;21209:18;;;21202:62;-1:-1:-1;;;21280:18:4;;;21273:38;21328:19;;14461:69:3;20949:404:4;14461:69:3;14591:9;;-1:-1:-1;;;;;1307:18:1;;1280:7;1307:18;;;;;;;;;;;14565:22:3;;:6;:22;:::i;:::-;:35;;14557:72;;;;-1:-1:-1;;;14557:72:3;;21560:2:4;14557:72:3;;;21542:21:4;21599:2;21579:18;;;21572:30;-1:-1:-1;;;21618:18:4;;;21611:54;21682:18;;14557:72:3;21358:348:4;14557:72:3;14357:719;;;-1:-1:-1;;;;;14705:29:3;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;14739:37:3;;;;;;:31;:37;;;;;;;;14738:38;14705:71;14701:375;;;14823:7;;14813:6;:17;;14805:72;;;;-1:-1:-1;;;14805:72:3;;21913:2:4;14805:72:3;;;21895:21:4;21952:2;21932:18;;;21925:30;21991:34;21971:18;;;21964:62;-1:-1:-1;;;22042:18:4;;;22035:40;22092:19;;14805:72:3;21711:406:4;14701:375:3;-1:-1:-1;;;;;14925:35:3;;;;;;:31;:35;;;;;;;;14920:156;;15018:9;;-1:-1:-1;;;;;1307:18:1;;1280:7;1307:18;;;;;;;;;;;14992:22:3;;:6;:22;:::i;:::-;:35;;14984:72;;;;-1:-1:-1;;;14984:72:3;;21560:2:4;14984:72:3;;;21542:21:4;21599:2;21579:18;;;21572:30;-1:-1:-1;;;21618:18:4;;;21611:54;21682:18;;14984:72:3;21358:348:4;14984:72:3;15163:4;15114:28;1307:18:1;;;;;;;;;;;15221::3;;15197:42;;;;;;;15255:22;;-1:-1:-1;15266:11:3;;;;;;;15255:22;:35;;;;-1:-1:-1;15282:8:3;;-1:-1:-1;;;15282:8:3;;;;15281:9;15255:35;:71;;;;-1:-1:-1;;;;;;15295:31:3;;;;;;:25;:31;;;;;;;;15294:32;15255:71;:101;;;;-1:-1:-1;;;;;;15331:25:3;;;;;;:19;:25;;;;;;;;15330:26;15255:101;:129;;;;-1:-1:-1;;;;;;15361:23:3;;;;;;:19;:23;;;;;;;;15360:24;15255:129;15252:236;;;15401:8;:15;;-1:-1:-1;;;;15401:15:3;-1:-1:-1;;;15401:15:3;;;15433:10;:8;:10::i;:::-;15460:8;:16;;-1:-1:-1;;;;15460:16:3;;;15252:236;-1:-1:-1;;;;;15618:25:3;;15500:12;15618:25;;;:19;:25;;;;;;15515:4;;15618:25;;;:52;;-1:-1:-1;;;;;;15647:23:3;;;;;;:19;:23;;;;;;;;15618:52;15615:99;;;-1:-1:-1;15697:5:3;15615:99;15726:12;15830:7;15827:1802;;;17784:18;;17769:12;:33;15892:60;;;;-1:-1:-1;;;;;;15921:31:3;;;;;;:25;:31;;;;;;;;15892:60;:94;;;;-1:-1:-1;;;;;;15957:29:3;;;;;;:25;:29;;;;;;;;15956:30;15892:94;:114;;;;;16005:1;15990:12;;:16;15892:114;15889:1593;;;-1:-1:-1;;;;;16032:15:3;;;;;;:11;:15;;;;;;;;16028:171;;-1:-1:-1;;;;;16071:15:3;;;;;;:11;:15;;;;;:22;;-1:-1:-1;;16071:22:3;16089:4;16071:22;;;;;;16116:10;:15;;16089:4;;16116:10;;:15;;16089:4;;16116:15;:::i;:::-;;;;-1:-1:-1;;16159:20:3;;-1:-1:-1;;;;;749:32:4;;731:51;;16159:20:3;;719:2:4;704:18;16159:20:3;;;;;;;16028:171;16240:3;16226:11;:6;16235:2;16226:11;:::i;:::-;:17;;;;:::i;:::-;16219:24;;16309:12;;16291:15;;16284:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;16262:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;16389:12:3;;16370:16;;16363:23;;:4;:23;:::i;:::-;:38;;;;:::i;:::-;16340:19;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;16455:12:3;;16443:9;;16436:16;;:4;:16;:::i;:::-;:31;;;;:::i;:::-;16420:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;16523:12:3;;16510:10;;16503:17;;:4;:17;:::i;:::-;:32;;;;:::i;:::-;16486:13;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;15889:1593:3;;-1:-1:-1;15889:1593:3;;-1:-1:-1;;;;;16600:29:3;;;;;;:25;:29;;;;;;;;:50;;;;;16649:1;16633:13;;:17;16600:50;16596:886;;;16702:3;16686:13;;16677:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;16670:35;;16772:13;;16753:16;;16746:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;16724:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;16854:13:3;;16834:17;;16827:24;;:4;:24;:::i;:::-;:40;;;;:::i;:::-;16804:19;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;16922:13:3;;16909:10;;16902:17;;:4;:17;:::i;:::-;:33;;;;:::i;:::-;16886:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;16992:13:3;;16978:11;;16971:18;;:4;:18;:::i;16596:886::-;-1:-1:-1;;;;;17068:31:3;;;;;;:25;:31;;;;;;;;:51;;;;;17118:1;17103:12;;:16;17068:51;17065:417;;;17171:3;17156:12;;17147:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;17140:34;;17240:12;;17222:15;;17215:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;17193:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;17320:12:3;;17301:16;;17294:23;;:4;:23;:::i;:::-;:38;;;;:::i;:::-;17271:19;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;17386:12:3;;17374:9;;17367:16;;:4;:16;:::i;:::-;:31;;;;:::i;:::-;17351:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;17454:12:3;;17441:10;;17434:17;;:4;:17;:::i;:::-;:32;;;;:::i;:::-;17417:13;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;17065:417:3;17501:8;;17498:89;;17529:42;17545:4;17559;17566;17529:15;:42::i;:::-;17603:14;17613:4;17603:14;;:::i;:::-;;;15827:1802;17641:33;17657:4;17663:2;17667:6;17641:15;:33::i;:::-;13124:4558;;;;13045:4637;;;:::o;4053:428:1:-;-1:-1:-1;;;;;4137:21:1;;4129:67;;;;-1:-1:-1;;;4129:67:1;;22324:2:4;4129:67:1;;;22306:21:4;22363:2;22343:18;;;22336:30;22402:34;22382:18;;;22375:62;-1:-1:-1;;;22453:18:4;;;22446:31;22494:19;;4129:67:1;22122:397:4;4129:67:1;-1:-1:-1;;;;;4232:18:1;;4207:22;4232:18;;;;;;;;;;;4269:24;;;;4261:71;;;;-1:-1:-1;;;4261:71:1;;22726:2:4;4261:71:1;;;22708:21:4;22765:2;22745:18;;;22738:30;22804:34;22784:18;;;22777:62;-1:-1:-1;;;22855:18:4;;;22848:32;22897:19;;4261:71:1;22524:398:4;4261:71:1;4381:6;4370:8;;:17;;;;:::i;:::-;-1:-1:-1;;;;;4349:18:1;;:9;:18;;;;;;;;;;:38;;;;4398:12;:22;;4414:6;;4349:9;4398:22;;4414:6;;4398:22;:::i;:::-;;;;-1:-1:-1;;4436:37:1;;1978:25:4;;;4462:1:1;;-1:-1:-1;;;;;4436:37:1;;;;;1966:2:4;1951:18;4436:37:1;1832:177:4;18309:1247:3;18394:4;18350:23;1307:18:1;;;;;;;;;;;18350:50:3;;18411:25;18482:12;;18460:19;;18439:18;;:40;;;;:::i;:::-;:55;;;;:::i;:::-;18411:83;-1:-1:-1;18510:20:3;;;:46;;-1:-1:-1;18534:22:3;;18510:46;18507:60;;;18559:7;;18309:1247::o;18507:60::-;18600:18;;:23;;18621:2;18600:23;:::i;:::-;18582:15;:41;18579:113;;;18657:18;;:23;;18678:2;18657:23;:::i;:::-;18639:41;;18579:113;18702:12;18727:23;18812:1;18792:17;18771:18;;18753:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;18727:86;-1:-1:-1;18826:51:3;18843:33;18727:86;18843:15;:33;:::i;:::-;18826:16;:51::i;:::-;19076:18;;18911:21;;;;18890:18;;19076:20;;19095:1;;19076:20;:::i;:::-;19055:42;;:17;:42;:::i;:::-;19032:19;;19019:32;;:10;:32;:::i;:::-;:79;;;;:::i;:::-;18992:106;;19109:17;19198:1;19179:18;;:20;;;;:::i;:::-;19158:42;;:17;:42;:::i;:::-;19142:12;;19129:25;;:10;:25;:::i;:::-;:72;;;;:::i;:::-;19109:92;-1:-1:-1;19233:28:3;19109:92;19233:16;:28;:::i;:::-;19214:47;;;;:::i;:::-;19295:1;19274:18;:22;;;19307:19;:23;;;19341:12;:16;;;19368:13;:17;;;19419:10;;19411:46;;19214:47;;-1:-1:-1;;;;;;19419:10:3;;19443:9;;19411:46;19295:1;19411:46;19443:9;19419:10;19411:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19491:17:3;;19483:65;;19398:59;;-1:-1:-1;;;;;;19491:17:3;;19522:21;;19483:65;;;;19522:21;19491:17;19483:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18309:1247:3:o;2967:191::-;3060:6;;;-1:-1:-1;;;;;3077:17:3;;;-1:-1:-1;;;;;;3077:17:3;;;;;;;3110:40;;3060:6;;;3077:17;3060:6;;3110:40;;3041:16;;3110:40;3030:128;2967:191;:::o;10851:236::-;-1:-1:-1;;;;;10934:31:3;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;10934:39:3;;;;;;;10984;10934:31;:39;10984:26;:39::i;22133:246::-;22224:9;22219:153;22243:8;:15;22239:1;:19;22219:153;;;22305:6;22280:9;:22;22290:8;22299:1;22290:11;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;22280:22:3;-1:-1:-1;;;;;22280:22:3;;;;;;;;;;;;:31;;;;22340:8;22349:1;22340:11;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;22331:29:3;;22353:6;22331:29;;;;1978:25:4;;1966:2;1951:18;;1832:177;22331:29:3;;;;;;;;22260:3;;;;:::i;:::-;;;;22219:153;;2625:125;2668:7;2688:14;2705:13;:11;:13::i;3132:614:1:-;-1:-1:-1;;;;;3272:20:1;;3264:70;;;;-1:-1:-1;;;3264:70:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;3353:23:1;;3345:71;;;;-1:-1:-1;;;3345:71:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;3453:17:1;;3429:21;3453:17;;;;;;;;;;;3489:23;;;;3481:74;;;;-1:-1:-1;;;3481:74:1;;23129:2:4;3481:74:1;;;23111:21:4;23168:2;23148:18;;;23141:30;23207:34;23187:18;;;23180:62;-1:-1:-1;;;23258:18:4;;;23251:36;23304:19;;3481:74:1;22927:402:4;3481:74:1;-1:-1:-1;;;;;3591:17:1;;;:9;:17;;;;;;;;;;;3611:22;;;3591:42;;3655:20;;;;;;;;:30;;3627:6;;3591:9;3655:30;;3627:6;;3655:30;:::i;:::-;;;;;;;;3720:9;-1:-1:-1;;;;;3703:35:1;3712:6;-1:-1:-1;;;;;3703:35:1;;3731:6;3703:35;;;;1978:25:4;;1966:2;1951:18;;1832:177;3703:35:1;;;;;;;;3253:493;3132:614;;;:::o;17818:485:3:-;17908:16;;;17922:1;17908:16;;;;;;;;17884:21;;17908:16;;;;;;;;;;-1:-1:-1;17908:16:3;17884:40;;17953:4;17935;17940:1;17935:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17935:23:3;;;:7;;;;;;;;;;:23;;;;17979:9;;:16;;;-1:-1:-1;;;17979:16:3;;;;:9;;;;;:14;;:16;;;;;17935:7;;17979:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17969:4;17974:1;17969:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17969:26:3;;;:7;;;;;;;;;:26;18040:9;;18008:56;;18025:4;;18040:9;18052:11;18008:8;:56::i;:::-;18077:9;;:218;;-1:-1:-1;;;18077:218:3;;-1:-1:-1;;;;;18077:9:3;;;;:60;;:218;;18152:11;;18077:9;;18222:4;;18249;;18269:15;;18077:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17873:430;17818:485;:::o;10379:207::-;-1:-1:-1;;;;;10467:39:3;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;10467:52:3;;;;;;;;;;10535:43;;24089:51:4;;;24156:18;;;24149:50;10535:43:3;;24062:18:4;10535:43:3;;;;;;;10379:207;;:::o;3166:119::-;3237:6;;3211:7;;-1:-1:-1;;;;;3237:6:3;:18;:40;;-1:-1:-1;3271:6:3;;-1:-1:-1;;;;;3271:6:3;;3166:119::o;3237:40::-;-1:-1:-1;3258:10:3;;-1:-1:-1;;;;;3258:10:3;;3166:119::o;14:548:4:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;793:131::-;-1:-1:-1;;;;;868:31:4;;858:42;;848:70;;914:1;911;904:12;929:134;997:20;;1026:31;997:20;1026:31;:::i;:::-;929:134;;;:::o;1068:315::-;1136:6;1144;1197:2;1185:9;1176:7;1172:23;1168:32;1165:52;;;1213:1;1210;1203:12;1165:52;1252:9;1239:23;1271:31;1296:5;1271:31;:::i;:::-;1321:5;1373:2;1358:18;;;;1345:32;;-1:-1:-1;;;1068:315:4:o;1580:247::-;1639:6;1692:2;1680:9;1671:7;1667:23;1663:32;1660:52;;;1708:1;1705;1698:12;1660:52;1747:9;1734:23;1766:31;1791:5;1766:31;:::i;:::-;1816:5;1580:247;-1:-1:-1;;;1580:247:4:o;2014:180::-;2073:6;2126:2;2114:9;2105:7;2101:23;2097:32;2094:52;;;2142:1;2139;2132:12;2094:52;-1:-1:-1;2165:23:4;;2014:180;-1:-1:-1;2014:180:4:o;2199:456::-;2276:6;2284;2292;2345:2;2333:9;2324:7;2320:23;2316:32;2313:52;;;2361:1;2358;2351:12;2313:52;2400:9;2387:23;2419:31;2444:5;2419:31;:::i;:::-;2469:5;-1:-1:-1;2526:2:4;2511:18;;2498:32;2539:33;2498:32;2539:33;:::i;:::-;2199:456;;2591:7;;-1:-1:-1;;;2645:2:4;2630:18;;;;2617:32;;2199:456::o;2660:118::-;2746:5;2739:13;2732:21;2725:5;2722:32;2712:60;;2768:1;2765;2758:12;2783:382;2848:6;2856;2909:2;2897:9;2888:7;2884:23;2880:32;2877:52;;;2925:1;2922;2915:12;2877:52;2964:9;2951:23;2983:31;3008:5;2983:31;:::i;:::-;3033:5;-1:-1:-1;3090:2:4;3075:18;;3062:32;3103:30;3062:32;3103:30;:::i;:::-;3152:7;3142:17;;;2783:382;;;;;:::o;3170:689::-;3265:6;3273;3281;3334:2;3322:9;3313:7;3309:23;3305:32;3302:52;;;3350:1;3347;3340:12;3302:52;3390:9;3377:23;3419:18;3460:2;3452:6;3449:14;3446:34;;;3476:1;3473;3466:12;3446:34;3514:6;3503:9;3499:22;3489:32;;3559:7;3552:4;3548:2;3544:13;3540:27;3530:55;;3581:1;3578;3571:12;3530:55;3621:2;3608:16;3647:2;3639:6;3636:14;3633:34;;;3663:1;3660;3653:12;3633:34;3718:7;3711:4;3701:6;3698:1;3694:14;3690:2;3686:23;3682:34;3679:47;3676:67;;;3739:1;3736;3729:12;3676:67;3770:4;3762:13;;;;3794:6;;-1:-1:-1;3832:20:4;;;;3819:34;;3170:689;-1:-1:-1;;;;3170:689:4:o;3864:385::-;3950:6;3958;3966;3974;4027:3;4015:9;4006:7;4002:23;3998:33;3995:53;;;4044:1;4041;4034:12;3995:53;-1:-1:-1;;4067:23:4;;;4137:2;4122:18;;4109:32;;-1:-1:-1;4188:2:4;4173:18;;4160:32;;4239:2;4224:18;4211:32;;-1:-1:-1;3864:385:4;-1:-1:-1;3864:385:4:o;4651:388::-;4719:6;4727;4780:2;4768:9;4759:7;4755:23;4751:32;4748:52;;;4796:1;4793;4786:12;4748:52;4835:9;4822:23;4854:31;4879:5;4854:31;:::i;:::-;4904:5;-1:-1:-1;4961:2:4;4946:18;;4933:32;4974:33;4933:32;4974:33;:::i;5044:127::-;5105:10;5100:3;5096:20;5093:1;5086:31;5136:4;5133:1;5126:15;5160:4;5157:1;5150:15;5176:1191;5269:6;5277;5330:2;5318:9;5309:7;5305:23;5301:32;5298:52;;;5346:1;5343;5336:12;5298:52;5386:9;5373:23;5415:18;5456:2;5448:6;5445:14;5442:34;;;5472:1;5469;5462:12;5442:34;5510:6;5499:9;5495:22;5485:32;;5555:7;5548:4;5544:2;5540:13;5536:27;5526:55;;5577:1;5574;5567:12;5526:55;5613:2;5600:16;5635:4;5658:2;5654;5651:10;5648:36;;;5664:18;;:::i;:::-;5710:2;5707:1;5703:10;5742:2;5736:9;5805:2;5801:7;5796:2;5792;5788:11;5784:25;5776:6;5772:38;5860:6;5848:10;5845:22;5840:2;5828:10;5825:18;5822:46;5819:72;;;5871:18;;:::i;:::-;5907:2;5900:22;5957:18;;;5991:15;;;;-1:-1:-1;6033:11:4;;;6029:20;;;6061:19;;;6058:39;;;6093:1;6090;6083:12;6058:39;6117:11;;;;6137:148;6153:6;6148:3;6145:15;6137:148;;;6219:23;6238:3;6219:23;:::i;:::-;6207:36;;6170:12;;;;6263;;;;6137:148;;;6304:6;6342:18;;;;6329:32;;-1:-1:-1;;;;;;;5176:1191:4:o;6372:380::-;6451:1;6447:12;;;;6494;;;6515:61;;6569:4;6561:6;6557:17;6547:27;;6515:61;6622:2;6614:6;6611:14;6591:18;6588:38;6585:161;;6668:10;6663:3;6659:20;6656:1;6649:31;6703:4;6700:1;6693:15;6731:4;6728:1;6721:15;6585:161;;6372:380;;;:::o;6757:184::-;6827:6;6880:2;6868:9;6859:7;6855:23;6851:32;6848:52;;;6896:1;6893;6886:12;6848:52;-1:-1:-1;6919:16:4;;6757:184;-1:-1:-1;6757:184:4:o;7572:245::-;7639:6;7692:2;7680:9;7671:7;7667:23;7663:32;7660:52;;;7708:1;7705;7698:12;7660:52;7740:9;7734:16;7759:28;7781:5;7759:28;:::i;7822:127::-;7883:10;7878:3;7874:20;7871:1;7864:31;7914:4;7911:1;7904:15;7938:4;7935:1;7928:15;7954:168;7994:7;8060:1;8056;8052:6;8048:14;8045:1;8042:21;8037:1;8030:9;8023:17;8019:45;8016:71;;;8067:18;;:::i;:::-;-1:-1:-1;8107:9:4;;7954:168::o;8127:217::-;8167:1;8193;8183:132;;8237:10;8232:3;8228:20;8225:1;8218:31;8272:4;8269:1;8262:15;8300:4;8297:1;8290:15;8183:132;-1:-1:-1;8329:9:4;;8127:217::o;9114:125::-;9179:9;;;9200:10;;;9197:36;;;9213:18;;:::i;10061:127::-;10122:10;10117:3;10113:20;10110:1;10103:31;10153:4;10150:1;10143:15;10177:4;10174:1;10167:15;10193:135;10232:3;10253:17;;;10250:43;;10273:18;;:::i;:::-;-1:-1:-1;10320:1:4;10309:13;;10193:135::o;10333:353::-;10535:2;10517:21;;;10574:2;10554:18;;;10547:30;10613:31;10608:2;10593:18;;10586:59;10677:2;10662:18;;10333:353::o;14668:251::-;14738:6;14791:2;14779:9;14770:7;14766:23;14762:32;14759:52;;;14807:1;14804;14797:12;14759:52;14839:9;14833:16;14858:31;14883:5;14858:31;:::i;14924:461::-;14977:3;15015:5;15009:12;15042:6;15037:3;15030:19;15068:4;15097:2;15092:3;15088:12;15081:19;;15134:2;15127:5;15123:14;15155:1;15165:195;15179:6;15176:1;15173:13;15165:195;;;15244:13;;-1:-1:-1;;;;;15240:39:4;15228:52;;15300:12;;;;15335:15;;;;15276:1;15194:9;15165:195;;;-1:-1:-1;15376:3:4;;14924:461;-1:-1:-1;;;;;14924:461:4:o;15390:510::-;15661:6;15650:9;15643:25;15704:3;15699:2;15688:9;15684:18;15677:31;15624:4;15725:57;15777:3;15766:9;15762:19;15754:6;15725:57;:::i;:::-;-1:-1:-1;;;;;15818:32:4;;;;15813:2;15798:18;;15791:60;-1:-1:-1;15882:2:4;15867:18;15860:34;15717:65;15390:510;-1:-1:-1;;15390:510:4:o;18409:401::-;18611:2;18593:21;;;18650:2;18630:18;;;18623:30;18689:34;18684:2;18669:18;;18662:62;-1:-1:-1;;;18755:2:4;18740:18;;18733:35;18800:3;18785:19;;18409:401::o;18815:399::-;19017:2;18999:21;;;19056:2;19036:18;;;19029:30;19095:34;19090:2;19075:18;;19068:62;-1:-1:-1;;;19161:2:4;19146:18;;19139:33;19204:3;19189:19;;18815:399::o;20407:128::-;20474:9;;;20495:11;;;20492:37;;;20509:18;;:::i;23334:582::-;23633:6;23622:9;23615:25;23676:6;23671:2;23660:9;23656:18;23649:34;23719:3;23714:2;23703:9;23699:18;23692:31;23596:4;23740:57;23792:3;23781:9;23777:19;23769:6;23740:57;:::i;:::-;-1:-1:-1;;;;;23833:32:4;;;;23828:2;23813:18;;23806:60;-1:-1:-1;23897:3:4;23882:19;23875:35;23732:65;23334:582;-1:-1:-1;;;23334:582:4:o

Swarm Source

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