ETH Price: $3,412.10 (-0.95%)
Gas: 2 Gwei

Token

FLOKI BASED ($FLOKIB)
 

Overview

Max Total Supply

100,000,000 $FLOKIB

Holders

8

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,007,231.141671189710046373 $FLOKIB

Value
$0.00
0xbb0f95b539de2d9e70ec396224fdd294feaa2878
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:
FLOKIBASED

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/*

Floki Based 

Floki is based in Valhalla

We will meet and drink with odin in Valhalla 

@flokibased

*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.9;

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

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

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    uint256 private _lockTime;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
    
    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

contract FLOKIBASED is Context, IERC20, Ownable {

    using SafeMath for uint256;
    using Address for address;

    mapping (address => uint256) _accBalances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isSniper;
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isWalletNoLimit;
    mapping (address => bool) public isTXNoLimit;
    mapping (address => bool) public isMarketPair;

    string private _name = "FLOKI BASED";
    string private _symbol = "$FLOKIB";
    uint8 private _decimals = 18;

    uint256 private _totalSupply = 100000000 * 10**_decimals;     
    uint256 private minimumTokensBeforeSwap = 5000000 * 10**_decimals;
    uint256 public _totalDistributionShares = 24;

    address payable public marketingaddress = payable(0x62EF82594d2de2A689036d4e46899aCf591e631C);

    uint256 public _MarketingFeeBuy = 3;
    uint256 public _LiquidityFeeBuy = 0;

    uint256 public _MarketingFeeSell = 3;
    uint256 public _LiquidityFeeSell = 0;

    uint256 public _finalBuyTax = 0;
    uint256 public _finalSellTax = 0;

    uint256 public _walletMax = 4000000 * 10**_decimals;  
    uint256 public _maxTxAmount = 4000000 * 10**_decimals;  
    uint256 public _mratio = 23;
    uint256 public _lratio = 1;


    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public checkWalletLimit = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier swapIsLocked  {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        
        _finalBuyTax = _LiquidityFeeBuy.add(_MarketingFeeBuy);
        _finalSellTax = _LiquidityFeeSell.add(_MarketingFeeSell);
        _totalDistributionShares = _lratio.add(_mratio);

        isWalletNoLimit[owner()] = true;
        isWalletNoLimit[address(uniswapPair)] = true;
        isWalletNoLimit[address(this)] = true;
        
        isTXNoLimit[owner()] = true;
        isTXNoLimit[address(this)] = true;

        isMarketPair[address(uniswapPair)] = true;
        _accBalances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

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

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return minimumTokensBeforeSwap;
    }

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function setMarketPairStatus(address account, bool newValue) public onlyOwner {
        isMarketPair[account] = newValue;
    }

    function declareSellTax(uint256 newLiquidTax, uint256 newMarketTax) external onlyOwner() {
        _LiquidityFeeSell = newLiquidTax;
        _MarketingFeeSell = newMarketTax;
        _finalSellTax = _LiquidityFeeSell.add(_MarketingFeeSell);
    }

    function declareBuyTax(uint256 newLiquidTax, uint256 newMarketTax) external onlyOwner() {
        _LiquidityFeeBuy = newLiquidTax;
        _MarketingFeeBuy = newMarketTax;
        _finalBuyTax = _LiquidityFeeBuy.add(_MarketingFeeBuy);
    }

    function updatelimit(uint256 newbuylimit, uint256 newwalletlimit) external onlyOwner() {
        _maxTxAmount = newbuylimit;
        _walletMax = newwalletlimit;
    }

    function establishWalletLimitEx(address holder, bool exempt) external onlyOwner {
        isWalletNoLimit[holder] = exempt;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function _setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    

    receive() external payable {}
    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);return true;
    }
   
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(!isSniper[sender], "Account is a Sniper");
        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {
            if(!isTXNoLimit[sender] && !isTXNoLimit[recipient]) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }
            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);    
            }
            _accBalances[sender] = _accBalances[sender].sub(amount, "Insufficient Balance");
            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? amount : takeFee(sender, recipient, amount);
            if(checkWalletLimit && !isWalletNoLimit[recipient])
            require(balanceOf(recipient).add(finalAmount) <= _walletMax);
            _accBalances[recipient] = _accBalances[recipient].add(finalAmount);
            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _accBalances[sender] = _accBalances[sender].sub(amount, "Insufficient Balance");
        _accBalances[recipient] = _accBalances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapAndLiquify(uint256 tAmount) private swapIsLocked {
        uint256 tokensForLP = tAmount.mul(_lratio).div(_totalDistributionShares).div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance;
        uint256 totalETHFee = _totalDistributionShares.sub(_lratio.div(2));
        
        uint256 amountETHLiquidity = amountReceived.mul(_lratio).div(totalETHFee).div(2);
        uint256 amountETHTeam = amountReceived.mul(_mratio).div(totalETHFee);
        uint256 amountETHMarketing = amountReceived.sub(amountETHLiquidity).sub(amountETHTeam);

        if(amountETHMarketing > 0)
            transferToAddressETH(marketingaddress, amountETHMarketing);
        if(amountETHTeam > 0)
            transferToAddressETH(marketingaddress, amountETHTeam);
        if(amountETHLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountETHLiquidity);
    }
    
    function swapTokensForEth(uint256 tokenAmount) public {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
        emit SwapTokensForETH(tokenAmount, path);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, 
            0, 
            owner(),
            block.timestamp
        );
    }
  
    function setAntiSniper(address _account) external onlyOwner {
        if (isSniper[_account]) {
            isSniper[_account] = false;
        } else {
            isSniper[_account] = true;
        }
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = 0;
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_finalBuyTax).div(100);
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_finalSellTax).div(100);
        }
        if(feeAmount > 0) {
            _accBalances[address(this)] = _accBalances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }
        return amount.sub(feeAmount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_LiquidityFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_LiquidityFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_MarketingFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_MarketingFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_finalBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_finalSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lratio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mratio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"_setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidTax","type":"uint256"},{"internalType":"uint256","name":"newMarketTax","type":"uint256"}],"name":"declareBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidTax","type":"uint256"},{"internalType":"uint256","name":"newMarketTax","type":"uint256"}],"name":"declareSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"establishWalletLimitEx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTXNoLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletNoLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingaddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","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":[{"internalType":"address","name":"_account","type":"address"}],"name":"setAntiSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"swapTokensForEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newbuylimit","type":"uint256"},{"internalType":"uint256","name":"newwalletlimit","type":"uint256"}],"name":"updatelimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600b81526020017f464c4f4b49204241534544000000000000000000000000000000000000000000815250600990816200004a919062000d28565b506040518060400160405280600781526020017f24464c4f4b494200000000000000000000000000000000000000000000000000815250600a908162000091919062000d28565b506012600b60006101000a81548160ff021916908360ff160217905550600b60009054906101000a900460ff16600a620000cc919062000f9f565b6305f5e100620000dd919062000ff0565b600c55600b60009054906101000a900460ff16600a620000fe919062000f9f565b624c4b406200010e919062000ff0565b600d556018600e557362ef82594d2de2a689036d4e46899acf591e631c600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360105560006011556003601255600060135560006014556000601555600b60009054906101000a900460ff16600a620001a7919062000f9f565b623d0900620001b7919062000ff0565b601655600b60009054906101000a900460ff16600a620001d8919062000f9f565b623d0900620001e8919062000ff0565b601755601760185560016019556001601b60156101000a81548160ff0219169083151502179055506000601b60166101000a81548160ff0219169083151502179055506001601b60176101000a81548160ff0219169083151502179055503480156200025357600080fd5b5060006200026662000a1a60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000369573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038f9190620010bb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041d9190620010bb565b6040518363ffffffff1660e01b81526004016200043c929190620010fe565b6020604051808303816000875af11580156200045c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004829190620010bb565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c54600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620005be62000a2260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200068560105460115462000a4b60201b62001d521790919060201c565b601481905550620006a960125460135462000a4b60201b62001d521790919060201c565b601581905550620006cd60185460195462000a4b60201b62001d521790919060201c565b600e81905550600160066000620006e962000a2260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760006200082262000a2260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600c54600260006200095c62000a1a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620009aa62000a1a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c5460405162000a0b91906200113c565b60405180910390a35062001239565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000a5c919062001159565b90508381101562000aa4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a9b9062001217565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b3057607f821691505b60208210810362000b465762000b4562000ae8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000bb07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b71565b62000bbc868362000b71565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000c0962000c0362000bfd8462000bd4565b62000bde565b62000bd4565b9050919050565b6000819050919050565b62000c258362000be8565b62000c3d62000c348262000c10565b84845462000b7e565b825550505050565b600090565b62000c5462000c45565b62000c6181848462000c1a565b505050565b5b8181101562000c895762000c7d60008262000c4a565b60018101905062000c67565b5050565b601f82111562000cd85762000ca28162000b4c565b62000cad8462000b61565b8101602085101562000cbd578190505b62000cd562000ccc8562000b61565b83018262000c66565b50505b505050565b600082821c905092915050565b600062000cfd6000198460080262000cdd565b1980831691505092915050565b600062000d18838362000cea565b9150826002028217905092915050565b62000d338262000aae565b67ffffffffffffffff81111562000d4f5762000d4e62000ab9565b5b62000d5b825462000b17565b62000d6882828562000c8d565b600060209050601f83116001811462000da0576000841562000d8b578287015190505b62000d97858262000d0a565b86555062000e07565b601f19841662000db08662000b4c565b60005b8281101562000dda5784890151825560018201915060208501945060208101905062000db3565b8683101562000dfa578489015162000df6601f89168262000cea565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000e9d5780860481111562000e755762000e7462000e0f565b5b600185161562000e855780820291505b808102905062000e958562000e3e565b945062000e55565b94509492505050565b60008262000eb8576001905062000f8b565b8162000ec8576000905062000f8b565b816001811462000ee1576002811462000eec5762000f22565b600191505062000f8b565b60ff84111562000f015762000f0062000e0f565b5b8360020a91508482111562000f1b5762000f1a62000e0f565b5b5062000f8b565b5060208310610133831016604e8410600b841016171562000f5c5782820a90508381111562000f565762000f5562000e0f565b5b62000f8b565b62000f6b848484600162000e4b565b9250905081840481111562000f855762000f8462000e0f565b5b81810290505b9392505050565b600060ff82169050919050565b600062000fac8262000bd4565b915062000fb98362000f92565b925062000fe87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ea6565b905092915050565b600062000ffd8262000bd4565b91506200100a8362000bd4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001046576200104562000e0f565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620010838262001056565b9050919050565b620010958162001076565b8114620010a157600080fd5b50565b600081519050620010b5816200108a565b92915050565b600060208284031215620010d457620010d362001051565b5b6000620010e484828501620010a4565b91505092915050565b620010f88162001076565b82525050565b6000604082019050620011156000830185620010ed565b620011246020830184620010ed565b9392505050565b620011368162000bd4565b82525050565b60006020820190506200115360008301846200112b565b92915050565b6000620011668262000bd4565b9150620011738362000bd4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620011ab57620011aa62000e0f565b5b828201905092915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000620011ff601b83620011b6565b91506200120c82620011c7565b602082019050919050565b600060208201905081810360008301526200123281620011f0565b9050919050565b613e3680620012496000396000f3fe60806040526004361061028c5760003560e01c8063807c2d9c1161015a578063a9059cbb116100c1578063dd62ed3e1161007a578063dd62ed3e14610a33578063e0f07e3a14610a70578063f2fde38b14610a9b578063f5bc9def14610ac4578063f872858a14610aed578063fe458d8914610b1857610293565b8063a9059cbb14610921578063abdccea11461095e578063b28805f414610989578063baeb7a7d146109b2578063c816841b146109dd578063da00097d14610a0857610293565b806394faf34e1161011357806394faf34e1461081157806395d89b411461083a578063a073d37f14610865578063a08e671f14610890578063a457c2d7146108bb578063a6ce3614146108f857610293565b8063807c2d9c146106ff578063825e43c51461072a57806384141be314610767578063844d591c14610792578063893d20e8146107bb5780638da5cb5b146107e657610293565b80633b97084a116101fe5780634f9e0722116101b75780634f9e0722146105db5780635342acb414610604578063557ed1ba1461064157806370a082311461066c57806377908e04146106a95780637d1db4a5146106d457610293565b80633b97084a146104b95780633d180810146104e25780633ecad2711461051f5780633ef947211461055c5780633ff6f002146105875780634a74bb02146105b057610293565b806318160ddd1161025057806318160ddd1461039357806323b872dd146103be57806325acf340146103fb5780632fd49a1414610426578063313ce56714610451578063395093511461047c57610293565b80630540eb521461029857806306fdde03146102c3578063095ea7b3146102ee5780630f3a325f1461032b5780631694505e1461036857610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610b41565b6040516102ba9190612efa565b60405180910390f35b3480156102cf57600080fd5b506102d8610b47565b6040516102e59190612fae565b60405180910390f35b3480156102fa57600080fd5b506103156004803603810190610310919061305f565b610bd9565b60405161032291906130ba565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d91906130d5565b610bf7565b60405161035f91906130ba565b60405180910390f35b34801561037457600080fd5b5061037d610c17565b60405161038a9190613161565b60405180910390f35b34801561039f57600080fd5b506103a8610c3d565b6040516103b59190612efa565b60405180910390f35b3480156103ca57600080fd5b506103e560048036038101906103e0919061317c565b610c47565b6040516103f291906130ba565b60405180910390f35b34801561040757600080fd5b50610410610d21565b60405161041d9190612efa565b60405180910390f35b34801561043257600080fd5b5061043b610d27565b6040516104489190612efa565b60405180910390f35b34801561045d57600080fd5b50610466610d2d565b60405161047391906131eb565b60405180910390f35b34801561048857600080fd5b506104a3600480360381019061049e919061305f565b610d44565b6040516104b091906130ba565b60405180910390f35b3480156104c557600080fd5b506104e060048036038101906104db9190613206565b610df7565b005b3480156104ee57600080fd5b50610509600480360381019061050491906130d5565b610e96565b60405161051691906130ba565b60405180910390f35b34801561052b57600080fd5b50610546600480360381019061054191906130d5565b610eb6565b60405161055391906130ba565b60405180910390f35b34801561056857600080fd5b50610571610ed6565b60405161057e9190612efa565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a9919061325f565b610edc565b005b3480156105bc57600080fd5b506105c5610fcc565b6040516105d291906130ba565b60405180910390f35b3480156105e757600080fd5b5061060260048036038101906105fd919061329f565b610fdf565b005b34801561061057600080fd5b5061062b600480360381019061062691906130d5565b6110a3565b60405161063891906130ba565b60405180910390f35b34801561064d57600080fd5b506106566110c3565b6040516106639190612efa565b60405180910390f35b34801561067857600080fd5b50610693600480360381019061068e91906130d5565b6110cb565b6040516106a09190612efa565b60405180910390f35b3480156106b557600080fd5b506106be611114565b6040516106cb9190612efa565b60405180910390f35b3480156106e057600080fd5b506106e961111a565b6040516106f69190612efa565b60405180910390f35b34801561070b57600080fd5b50610714611120565b6040516107219190612efa565b60405180910390f35b34801561073657600080fd5b50610751600480360381019061074c91906130d5565b611126565b60405161075e91906130ba565b60405180910390f35b34801561077357600080fd5b5061077c611146565b6040516107899190612efa565b60405180910390f35b34801561079e57600080fd5b506107b960048036038101906107b4919061325f565b61114c565b005b3480156107c757600080fd5b506107d061123c565b6040516107dd91906132ee565b60405180910390f35b3480156107f257600080fd5b506107fb611265565b60405161080891906132ee565b60405180910390f35b34801561081d57600080fd5b5061083860048036038101906108339190613309565b61128e565b005b34801561084657600080fd5b5061084f611377565b60405161085c9190612fae565b60405180910390f35b34801561087157600080fd5b5061087a611409565b6040516108879190612efa565b60405180910390f35b34801561089c57600080fd5b506108a5611413565b6040516108b29190612efa565b60405180910390f35b3480156108c757600080fd5b506108e260048036038101906108dd919061305f565b611419565b6040516108ef91906130ba565b60405180910390f35b34801561090457600080fd5b5061091f600480360381019061091a919061329f565b6114e6565b005b34801561092d57600080fd5b506109486004803603810190610943919061305f565b6115aa565b60405161095591906130ba565b60405180910390f35b34801561096a57600080fd5b506109736115c9565b6040516109809190612efa565b60405180910390f35b34801561099557600080fd5b506109b060048036038101906109ab9190613206565b6115cf565b005b3480156109be57600080fd5b506109c761184b565b6040516109d49190612efa565b60405180910390f35b3480156109e957600080fd5b506109f2611851565b6040516109ff91906132ee565b60405180910390f35b348015610a1457600080fd5b50610a1d611877565b604051610a2a91906130ba565b60405180910390f35b348015610a3f57600080fd5b50610a5a6004803603810190610a559190613336565b61188a565b604051610a679190612efa565b60405180910390f35b348015610a7c57600080fd5b50610a85611911565b604051610a929190613397565b60405180910390f35b348015610aa757600080fd5b50610ac26004803603810190610abd91906130d5565b611937565b005b348015610ad057600080fd5b50610aeb6004803603810190610ae6919061329f565b611af8565b005b348015610af957600080fd5b50610b02611b9f565b604051610b0f91906130ba565b60405180910390f35b348015610b2457600080fd5b50610b3f6004803603810190610b3a91906130d5565b611bb2565b005b60105481565b606060098054610b56906133e1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b82906133e1565b8015610bcf5780601f10610ba457610100808354040283529160200191610bcf565b820191906000526020600020905b815481529060010190602001808311610bb257829003601f168201915b5050505050905090565b6000610bed610be6611db0565b8484611db8565b6001905092915050565b60046020528060005260406000206000915054906101000a900460ff1681565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c54905090565b6000610c54848484611f81565b50610d1684610c61611db0565b610d1185604051806060016040528060288152602001613db460289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cc7611db0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f19092919063ffffffff16565b611db8565b600190509392505050565b60125481565b60115481565b6000600b60009054906101000a900460ff16905090565b6000610ded610d51611db0565b84610de88560036000610d62611db0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5290919063ffffffff16565b611db8565b6001905092915050565b610dff611db0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e839061345e565b60405180910390fd5b80600d8190555050565b60076020528060005260406000206000915054906101000a900460ff1681565b60086020528060005260406000206000915054906101000a900460ff1681565b60155481565b610ee4611db0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f689061345e565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60159054906101000a900460ff1681565b610fe7611db0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106b9061345e565b60405180910390fd5b8160138190555080601281905550611099601254601354611d5290919063ffffffff16565b6015819055505050565b60056020528060005260406000206000915054906101000a900460ff1681565b600042905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60195481565b60175481565b60165481565b60066020528060005260406000206000915054906101000a900460ff1681565b60135481565b611154611db0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d89061345e565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611296611db0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131a9061345e565b60405180910390fd5b80601b60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161136c91906130ba565b60405180910390a150565b6060600a8054611386906133e1565b80601f01602080910402602001604051908101604052809291908181526020018280546113b2906133e1565b80156113ff5780601f106113d4576101008083540402835291602001916113ff565b820191906000526020600020905b8154815290600101906020018083116113e257829003601f168201915b5050505050905090565b6000600d54905090565b600e5481565b60006114dc611426611db0565b846114d785604051806060016040528060258152602001613ddc6025913960036000611450611db0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f19092919063ffffffff16565b611db8565b6001905092915050565b6114ee611db0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461157b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115729061345e565b60405180910390fd5b81601181905550806010819055506115a0601054601154611d5290919063ffffffff16565b6014819055505050565b60006115be6115b7611db0565b8484611f81565b506001905092915050565b60185481565b6000600267ffffffffffffffff8111156115ec576115eb61347e565b5b60405190808252806020026020018201604052801561161a5781602001602082028036833780820191505090505b5090503081600081518110611632576116316134ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fd91906134f1565b81600181518110611711576117106134ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061177830601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611db8565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016117dc959493929190613617565b600060405180830381600087803b1580156117f657600080fd5b505af115801561180a573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161183f929190613671565b60405180910390a15050565b60145481565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60169054906101000a900460ff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61193f611db0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c39061345e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3290613713565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611b00611db0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b849061345e565b60405180910390fd5b81601781905550806016819055505050565b601b60179054906101000a900460ff1681565b611bba611db0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3e9061345e565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611cf6576000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611d4f565b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50565b6000808284611d619190613762565b905083811015611da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9d90613804565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1e90613896565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8d90613928565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f749190612efa565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe8906139ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205790613a4c565b60405180910390fd5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e490613ab8565b60405180910390fd5b601b60149054906101000a900460ff16156121145761210d848484612655565b90506125ea565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121b85750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561220357601754821115612202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f990613b4a565b60405180910390fd5b5b600061220e306110cb565b90506000600d5482101590508080156122345750601b60149054906101000a900460ff16155b801561228a5750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122a25750601b60159054906101000a900460ff165b156122cc57601b60169054906101000a900460ff16156122c257600d5491505b6122cb82612828565b5b612355846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f19092919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061243b5750600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61244f5761244a878787612a19565b612451565b845b9050601b60179054906101000a900460ff1680156124b95750600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124e8576016546124dc826124ce896110cb565b611d5290919063ffffffff16565b11156124e757600080fd5b5b61253a81600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5290919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125da9190612efa565b60405180910390a3600193505050505b9392505050565b6000838311158290612639576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126309190612fae565b60405180910390fd5b50600083856126489190613b6a565b9050809150509392505050565b60006126e0826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f19092919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061277582600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5290919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128159190612efa565b60405180910390a3600190509392505050565b6001601b60146101000a81548160ff02191690831515021790555060006128816002612873600e5461286560195487612c4090919063ffffffff16565b612cba90919063ffffffff16565b612cba90919063ffffffff16565b905060006128988284612d0490919063ffffffff16565b90506128a3816115cf565b600047905060006128d46128c36002601954612cba90919063ffffffff16565b600e54612d0490919063ffffffff16565b905060006129126002612904846128f660195488612c4090919063ffffffff16565b612cba90919063ffffffff16565b612cba90919063ffffffff16565b9050600061293d8361292f60185487612c4090919063ffffffff16565b612cba90919063ffffffff16565b90506000612966826129588588612d0490919063ffffffff16565b612d0490919063ffffffff16565b9050600081111561299e5761299d600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612d4e565b5b60008211156129d4576129d3600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612d4e565b5b6000831180156129e45750600087115b156129f4576129f38784612d99565b5b505050505050506000601b60146101000a81548160ff02191690831515021790555050565b60008060009050600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612aa157612a9a6064612a8c60145486612c4090919063ffffffff16565b612cba90919063ffffffff16565b9050612b1f565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612b1e57612b1b6064612b0d60155486612c4090919063ffffffff16565b612cba90919063ffffffff16565b90505b5b6000811115612c2357612b7a81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5290919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c1a9190612efa565b60405180910390a35b612c368184612d0490919063ffffffff16565b9150509392505050565b6000808303612c525760009050612cb4565b60008284612c609190613b9e565b9050828482612c6f9190613c27565b14612caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca690613cca565b60405180910390fd5b809150505b92915050565b6000612cfc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612e7e565b905092915050565b6000612d4683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506125f1565b905092915050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612d94573d6000803e3d6000fd5b505050565b612dc630601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611db8565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612e12611265565b426040518863ffffffff1660e01b8152600401612e3496959493929190613cea565b60606040518083038185885af1158015612e52573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e779190613d60565b5050505050565b60008083118290612ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ebc9190612fae565b60405180910390fd5b5060008385612ed49190613c27565b9050809150509392505050565b6000819050919050565b612ef481612ee1565b82525050565b6000602082019050612f0f6000830184612eeb565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f4f578082015181840152602081019050612f34565b83811115612f5e576000848401525b50505050565b6000601f19601f8301169050919050565b6000612f8082612f15565b612f8a8185612f20565b9350612f9a818560208601612f31565b612fa381612f64565b840191505092915050565b60006020820190508181036000830152612fc88184612f75565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061300082612fd5565b9050919050565b61301081612ff5565b811461301b57600080fd5b50565b60008135905061302d81613007565b92915050565b61303c81612ee1565b811461304757600080fd5b50565b60008135905061305981613033565b92915050565b6000806040838503121561307657613075612fd0565b5b60006130848582860161301e565b92505060206130958582860161304a565b9150509250929050565b60008115159050919050565b6130b48161309f565b82525050565b60006020820190506130cf60008301846130ab565b92915050565b6000602082840312156130eb576130ea612fd0565b5b60006130f98482850161301e565b91505092915050565b6000819050919050565b600061312761312261311d84612fd5565b613102565b612fd5565b9050919050565b60006131398261310c565b9050919050565b600061314b8261312e565b9050919050565b61315b81613140565b82525050565b60006020820190506131766000830184613152565b92915050565b60008060006060848603121561319557613194612fd0565b5b60006131a38682870161301e565b93505060206131b48682870161301e565b92505060406131c58682870161304a565b9150509250925092565b600060ff82169050919050565b6131e5816131cf565b82525050565b600060208201905061320060008301846131dc565b92915050565b60006020828403121561321c5761321b612fd0565b5b600061322a8482850161304a565b91505092915050565b61323c8161309f565b811461324757600080fd5b50565b60008135905061325981613233565b92915050565b6000806040838503121561327657613275612fd0565b5b60006132848582860161301e565b92505060206132958582860161324a565b9150509250929050565b600080604083850312156132b6576132b5612fd0565b5b60006132c48582860161304a565b92505060206132d58582860161304a565b9150509250929050565b6132e881612ff5565b82525050565b600060208201905061330360008301846132df565b92915050565b60006020828403121561331f5761331e612fd0565b5b600061332d8482850161324a565b91505092915050565b6000806040838503121561334d5761334c612fd0565b5b600061335b8582860161301e565b925050602061336c8582860161301e565b9150509250929050565b600061338182612fd5565b9050919050565b61339181613376565b82525050565b60006020820190506133ac6000830184613388565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806133f957607f821691505b60208210810361340c5761340b6133b2565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613448602083612f20565b915061345382613412565b602082019050919050565b600060208201905081810360008301526134778161343b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506134eb81613007565b92915050565b60006020828403121561350757613506612fd0565b5b6000613515848285016134dc565b91505092915050565b6000819050919050565b600061354361353e6135398461351e565b613102565b612ee1565b9050919050565b61355381613528565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61358e81612ff5565b82525050565b60006135a08383613585565b60208301905092915050565b6000602082019050919050565b60006135c482613559565b6135ce8185613564565b93506135d983613575565b8060005b8381101561360a5781516135f18882613594565b97506135fc836135ac565b9250506001810190506135dd565b5085935050505092915050565b600060a08201905061362c6000830188612eeb565b613639602083018761354a565b818103604083015261364b81866135b9565b905061365a60608301856132df565b6136676080830184612eeb565b9695505050505050565b60006040820190506136866000830185612eeb565b818103602083015261369881846135b9565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006136fd602683612f20565b9150613708826136a1565b604082019050919050565b6000602082019050818103600083015261372c816136f0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061376d82612ee1565b915061377883612ee1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156137ad576137ac613733565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006137ee601b83612f20565b91506137f9826137b8565b602082019050919050565b6000602082019050818103600083015261381d816137e1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613880602483612f20565b915061388b82613824565b604082019050919050565b600060208201905081810360008301526138af81613873565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613912602283612f20565b915061391d826138b6565b604082019050919050565b6000602082019050818103600083015261394181613905565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139a4602583612f20565b91506139af82613948565b604082019050919050565b600060208201905081810360008301526139d381613997565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a36602383612f20565b9150613a41826139da565b604082019050919050565b60006020820190508181036000830152613a6581613a29565b9050919050565b7f4163636f756e74206973206120536e6970657200000000000000000000000000600082015250565b6000613aa2601383612f20565b9150613aad82613a6c565b602082019050919050565b60006020820190508181036000830152613ad181613a95565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000613b34602883612f20565b9150613b3f82613ad8565b604082019050919050565b60006020820190508181036000830152613b6381613b27565b9050919050565b6000613b7582612ee1565b9150613b8083612ee1565b925082821015613b9357613b92613733565b5b828203905092915050565b6000613ba982612ee1565b9150613bb483612ee1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613bed57613bec613733565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c3282612ee1565b9150613c3d83612ee1565b925082613c4d57613c4c613bf8565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cb4602183612f20565b9150613cbf82613c58565b604082019050919050565b60006020820190508181036000830152613ce381613ca7565b9050919050565b600060c082019050613cff60008301896132df565b613d0c6020830188612eeb565b613d19604083018761354a565b613d26606083018661354a565b613d3360808301856132df565b613d4060a0830184612eeb565b979650505050505050565b600081519050613d5a81613033565b92915050565b600080600060608486031215613d7957613d78612fd0565b5b6000613d8786828701613d4b565b9350506020613d9886828701613d4b565b9250506040613da986828701613d4b565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a60c9181b770d3c457e42b2d396f5973b6494fad66a9288c03bbb57ec047601e64736f6c634300080f0033

Deployed Bytecode

0x60806040526004361061028c5760003560e01c8063807c2d9c1161015a578063a9059cbb116100c1578063dd62ed3e1161007a578063dd62ed3e14610a33578063e0f07e3a14610a70578063f2fde38b14610a9b578063f5bc9def14610ac4578063f872858a14610aed578063fe458d8914610b1857610293565b8063a9059cbb14610921578063abdccea11461095e578063b28805f414610989578063baeb7a7d146109b2578063c816841b146109dd578063da00097d14610a0857610293565b806394faf34e1161011357806394faf34e1461081157806395d89b411461083a578063a073d37f14610865578063a08e671f14610890578063a457c2d7146108bb578063a6ce3614146108f857610293565b8063807c2d9c146106ff578063825e43c51461072a57806384141be314610767578063844d591c14610792578063893d20e8146107bb5780638da5cb5b146107e657610293565b80633b97084a116101fe5780634f9e0722116101b75780634f9e0722146105db5780635342acb414610604578063557ed1ba1461064157806370a082311461066c57806377908e04146106a95780637d1db4a5146106d457610293565b80633b97084a146104b95780633d180810146104e25780633ecad2711461051f5780633ef947211461055c5780633ff6f002146105875780634a74bb02146105b057610293565b806318160ddd1161025057806318160ddd1461039357806323b872dd146103be57806325acf340146103fb5780632fd49a1414610426578063313ce56714610451578063395093511461047c57610293565b80630540eb521461029857806306fdde03146102c3578063095ea7b3146102ee5780630f3a325f1461032b5780631694505e1461036857610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610b41565b6040516102ba9190612efa565b60405180910390f35b3480156102cf57600080fd5b506102d8610b47565b6040516102e59190612fae565b60405180910390f35b3480156102fa57600080fd5b506103156004803603810190610310919061305f565b610bd9565b60405161032291906130ba565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d91906130d5565b610bf7565b60405161035f91906130ba565b60405180910390f35b34801561037457600080fd5b5061037d610c17565b60405161038a9190613161565b60405180910390f35b34801561039f57600080fd5b506103a8610c3d565b6040516103b59190612efa565b60405180910390f35b3480156103ca57600080fd5b506103e560048036038101906103e0919061317c565b610c47565b6040516103f291906130ba565b60405180910390f35b34801561040757600080fd5b50610410610d21565b60405161041d9190612efa565b60405180910390f35b34801561043257600080fd5b5061043b610d27565b6040516104489190612efa565b60405180910390f35b34801561045d57600080fd5b50610466610d2d565b60405161047391906131eb565b60405180910390f35b34801561048857600080fd5b506104a3600480360381019061049e919061305f565b610d44565b6040516104b091906130ba565b60405180910390f35b3480156104c557600080fd5b506104e060048036038101906104db9190613206565b610df7565b005b3480156104ee57600080fd5b50610509600480360381019061050491906130d5565b610e96565b60405161051691906130ba565b60405180910390f35b34801561052b57600080fd5b50610546600480360381019061054191906130d5565b610eb6565b60405161055391906130ba565b60405180910390f35b34801561056857600080fd5b50610571610ed6565b60405161057e9190612efa565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a9919061325f565b610edc565b005b3480156105bc57600080fd5b506105c5610fcc565b6040516105d291906130ba565b60405180910390f35b3480156105e757600080fd5b5061060260048036038101906105fd919061329f565b610fdf565b005b34801561061057600080fd5b5061062b600480360381019061062691906130d5565b6110a3565b60405161063891906130ba565b60405180910390f35b34801561064d57600080fd5b506106566110c3565b6040516106639190612efa565b60405180910390f35b34801561067857600080fd5b50610693600480360381019061068e91906130d5565b6110cb565b6040516106a09190612efa565b60405180910390f35b3480156106b557600080fd5b506106be611114565b6040516106cb9190612efa565b60405180910390f35b3480156106e057600080fd5b506106e961111a565b6040516106f69190612efa565b60405180910390f35b34801561070b57600080fd5b50610714611120565b6040516107219190612efa565b60405180910390f35b34801561073657600080fd5b50610751600480360381019061074c91906130d5565b611126565b60405161075e91906130ba565b60405180910390f35b34801561077357600080fd5b5061077c611146565b6040516107899190612efa565b60405180910390f35b34801561079e57600080fd5b506107b960048036038101906107b4919061325f565b61114c565b005b3480156107c757600080fd5b506107d061123c565b6040516107dd91906132ee565b60405180910390f35b3480156107f257600080fd5b506107fb611265565b60405161080891906132ee565b60405180910390f35b34801561081d57600080fd5b5061083860048036038101906108339190613309565b61128e565b005b34801561084657600080fd5b5061084f611377565b60405161085c9190612fae565b60405180910390f35b34801561087157600080fd5b5061087a611409565b6040516108879190612efa565b60405180910390f35b34801561089c57600080fd5b506108a5611413565b6040516108b29190612efa565b60405180910390f35b3480156108c757600080fd5b506108e260048036038101906108dd919061305f565b611419565b6040516108ef91906130ba565b60405180910390f35b34801561090457600080fd5b5061091f600480360381019061091a919061329f565b6114e6565b005b34801561092d57600080fd5b506109486004803603810190610943919061305f565b6115aa565b60405161095591906130ba565b60405180910390f35b34801561096a57600080fd5b506109736115c9565b6040516109809190612efa565b60405180910390f35b34801561099557600080fd5b506109b060048036038101906109ab9190613206565b6115cf565b005b3480156109be57600080fd5b506109c761184b565b6040516109d49190612efa565b60405180910390f35b3480156109e957600080fd5b506109f2611851565b6040516109ff91906132ee565b60405180910390f35b348015610a1457600080fd5b50610a1d611877565b604051610a2a91906130ba565b60405180910390f35b348015610a3f57600080fd5b50610a5a6004803603810190610a559190613336565b61188a565b604051610a679190612efa565b60405180910390f35b348015610a7c57600080fd5b50610a85611911565b604051610a929190613397565b60405180910390f35b348015610aa757600080fd5b50610ac26004803603810190610abd91906130d5565b611937565b005b348015610ad057600080fd5b50610aeb6004803603810190610ae6919061329f565b611af8565b005b348015610af957600080fd5b50610b02611b9f565b604051610b0f91906130ba565b60405180910390f35b348015610b2457600080fd5b50610b3f6004803603810190610b3a91906130d5565b611bb2565b005b60105481565b606060098054610b56906133e1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b82906133e1565b8015610bcf5780601f10610ba457610100808354040283529160200191610bcf565b820191906000526020600020905b815481529060010190602001808311610bb257829003601f168201915b5050505050905090565b6000610bed610be6611db0565b8484611db8565b6001905092915050565b60046020528060005260406000206000915054906101000a900460ff1681565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c54905090565b6000610c54848484611f81565b50610d1684610c61611db0565b610d1185604051806060016040528060288152602001613db460289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cc7611db0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f19092919063ffffffff16565b611db8565b600190509392505050565b60125481565b60115481565b6000600b60009054906101000a900460ff16905090565b6000610ded610d51611db0565b84610de88560036000610d62611db0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5290919063ffffffff16565b611db8565b6001905092915050565b610dff611db0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e839061345e565b60405180910390fd5b80600d8190555050565b60076020528060005260406000206000915054906101000a900460ff1681565b60086020528060005260406000206000915054906101000a900460ff1681565b60155481565b610ee4611db0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f689061345e565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60159054906101000a900460ff1681565b610fe7611db0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106b9061345e565b60405180910390fd5b8160138190555080601281905550611099601254601354611d5290919063ffffffff16565b6015819055505050565b60056020528060005260406000206000915054906101000a900460ff1681565b600042905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60195481565b60175481565b60165481565b60066020528060005260406000206000915054906101000a900460ff1681565b60135481565b611154611db0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d89061345e565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611296611db0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131a9061345e565b60405180910390fd5b80601b60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161136c91906130ba565b60405180910390a150565b6060600a8054611386906133e1565b80601f01602080910402602001604051908101604052809291908181526020018280546113b2906133e1565b80156113ff5780601f106113d4576101008083540402835291602001916113ff565b820191906000526020600020905b8154815290600101906020018083116113e257829003601f168201915b5050505050905090565b6000600d54905090565b600e5481565b60006114dc611426611db0565b846114d785604051806060016040528060258152602001613ddc6025913960036000611450611db0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f19092919063ffffffff16565b611db8565b6001905092915050565b6114ee611db0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461157b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115729061345e565b60405180910390fd5b81601181905550806010819055506115a0601054601154611d5290919063ffffffff16565b6014819055505050565b60006115be6115b7611db0565b8484611f81565b506001905092915050565b60185481565b6000600267ffffffffffffffff8111156115ec576115eb61347e565b5b60405190808252806020026020018201604052801561161a5781602001602082028036833780820191505090505b5090503081600081518110611632576116316134ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fd91906134f1565b81600181518110611711576117106134ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061177830601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611db8565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016117dc959493929190613617565b600060405180830381600087803b1580156117f657600080fd5b505af115801561180a573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161183f929190613671565b60405180910390a15050565b60145481565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60169054906101000a900460ff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61193f611db0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c39061345e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3290613713565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611b00611db0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b849061345e565b60405180910390fd5b81601781905550806016819055505050565b601b60179054906101000a900460ff1681565b611bba611db0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3e9061345e565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611cf6576000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611d4f565b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50565b6000808284611d619190613762565b905083811015611da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9d90613804565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1e90613896565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8d90613928565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f749190612efa565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe8906139ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205790613a4c565b60405180910390fd5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e490613ab8565b60405180910390fd5b601b60149054906101000a900460ff16156121145761210d848484612655565b90506125ea565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121b85750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561220357601754821115612202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f990613b4a565b60405180910390fd5b5b600061220e306110cb565b90506000600d5482101590508080156122345750601b60149054906101000a900460ff16155b801561228a5750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122a25750601b60159054906101000a900460ff165b156122cc57601b60169054906101000a900460ff16156122c257600d5491505b6122cb82612828565b5b612355846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f19092919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061243b5750600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61244f5761244a878787612a19565b612451565b845b9050601b60179054906101000a900460ff1680156124b95750600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124e8576016546124dc826124ce896110cb565b611d5290919063ffffffff16565b11156124e757600080fd5b5b61253a81600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5290919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125da9190612efa565b60405180910390a3600193505050505b9392505050565b6000838311158290612639576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126309190612fae565b60405180910390fd5b50600083856126489190613b6a565b9050809150509392505050565b60006126e0826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f19092919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061277582600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5290919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128159190612efa565b60405180910390a3600190509392505050565b6001601b60146101000a81548160ff02191690831515021790555060006128816002612873600e5461286560195487612c4090919063ffffffff16565b612cba90919063ffffffff16565b612cba90919063ffffffff16565b905060006128988284612d0490919063ffffffff16565b90506128a3816115cf565b600047905060006128d46128c36002601954612cba90919063ffffffff16565b600e54612d0490919063ffffffff16565b905060006129126002612904846128f660195488612c4090919063ffffffff16565b612cba90919063ffffffff16565b612cba90919063ffffffff16565b9050600061293d8361292f60185487612c4090919063ffffffff16565b612cba90919063ffffffff16565b90506000612966826129588588612d0490919063ffffffff16565b612d0490919063ffffffff16565b9050600081111561299e5761299d600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612d4e565b5b60008211156129d4576129d3600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612d4e565b5b6000831180156129e45750600087115b156129f4576129f38784612d99565b5b505050505050506000601b60146101000a81548160ff02191690831515021790555050565b60008060009050600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612aa157612a9a6064612a8c60145486612c4090919063ffffffff16565b612cba90919063ffffffff16565b9050612b1f565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612b1e57612b1b6064612b0d60155486612c4090919063ffffffff16565b612cba90919063ffffffff16565b90505b5b6000811115612c2357612b7a81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5290919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c1a9190612efa565b60405180910390a35b612c368184612d0490919063ffffffff16565b9150509392505050565b6000808303612c525760009050612cb4565b60008284612c609190613b9e565b9050828482612c6f9190613c27565b14612caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca690613cca565b60405180910390fd5b809150505b92915050565b6000612cfc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612e7e565b905092915050565b6000612d4683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506125f1565b905092915050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612d94573d6000803e3d6000fd5b505050565b612dc630601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611db8565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612e12611265565b426040518863ffffffff1660e01b8152600401612e3496959493929190613cea565b60606040518083038185885af1158015612e52573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e779190613d60565b5050505050565b60008083118290612ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ebc9190612fae565b60405180910390fd5b5060008385612ed49190613c27565b9050809150509392505050565b6000819050919050565b612ef481612ee1565b82525050565b6000602082019050612f0f6000830184612eeb565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f4f578082015181840152602081019050612f34565b83811115612f5e576000848401525b50505050565b6000601f19601f8301169050919050565b6000612f8082612f15565b612f8a8185612f20565b9350612f9a818560208601612f31565b612fa381612f64565b840191505092915050565b60006020820190508181036000830152612fc88184612f75565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061300082612fd5565b9050919050565b61301081612ff5565b811461301b57600080fd5b50565b60008135905061302d81613007565b92915050565b61303c81612ee1565b811461304757600080fd5b50565b60008135905061305981613033565b92915050565b6000806040838503121561307657613075612fd0565b5b60006130848582860161301e565b92505060206130958582860161304a565b9150509250929050565b60008115159050919050565b6130b48161309f565b82525050565b60006020820190506130cf60008301846130ab565b92915050565b6000602082840312156130eb576130ea612fd0565b5b60006130f98482850161301e565b91505092915050565b6000819050919050565b600061312761312261311d84612fd5565b613102565b612fd5565b9050919050565b60006131398261310c565b9050919050565b600061314b8261312e565b9050919050565b61315b81613140565b82525050565b60006020820190506131766000830184613152565b92915050565b60008060006060848603121561319557613194612fd0565b5b60006131a38682870161301e565b93505060206131b48682870161301e565b92505060406131c58682870161304a565b9150509250925092565b600060ff82169050919050565b6131e5816131cf565b82525050565b600060208201905061320060008301846131dc565b92915050565b60006020828403121561321c5761321b612fd0565b5b600061322a8482850161304a565b91505092915050565b61323c8161309f565b811461324757600080fd5b50565b60008135905061325981613233565b92915050565b6000806040838503121561327657613275612fd0565b5b60006132848582860161301e565b92505060206132958582860161324a565b9150509250929050565b600080604083850312156132b6576132b5612fd0565b5b60006132c48582860161304a565b92505060206132d58582860161304a565b9150509250929050565b6132e881612ff5565b82525050565b600060208201905061330360008301846132df565b92915050565b60006020828403121561331f5761331e612fd0565b5b600061332d8482850161324a565b91505092915050565b6000806040838503121561334d5761334c612fd0565b5b600061335b8582860161301e565b925050602061336c8582860161301e565b9150509250929050565b600061338182612fd5565b9050919050565b61339181613376565b82525050565b60006020820190506133ac6000830184613388565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806133f957607f821691505b60208210810361340c5761340b6133b2565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613448602083612f20565b915061345382613412565b602082019050919050565b600060208201905081810360008301526134778161343b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506134eb81613007565b92915050565b60006020828403121561350757613506612fd0565b5b6000613515848285016134dc565b91505092915050565b6000819050919050565b600061354361353e6135398461351e565b613102565b612ee1565b9050919050565b61355381613528565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61358e81612ff5565b82525050565b60006135a08383613585565b60208301905092915050565b6000602082019050919050565b60006135c482613559565b6135ce8185613564565b93506135d983613575565b8060005b8381101561360a5781516135f18882613594565b97506135fc836135ac565b9250506001810190506135dd565b5085935050505092915050565b600060a08201905061362c6000830188612eeb565b613639602083018761354a565b818103604083015261364b81866135b9565b905061365a60608301856132df565b6136676080830184612eeb565b9695505050505050565b60006040820190506136866000830185612eeb565b818103602083015261369881846135b9565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006136fd602683612f20565b9150613708826136a1565b604082019050919050565b6000602082019050818103600083015261372c816136f0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061376d82612ee1565b915061377883612ee1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156137ad576137ac613733565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006137ee601b83612f20565b91506137f9826137b8565b602082019050919050565b6000602082019050818103600083015261381d816137e1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613880602483612f20565b915061388b82613824565b604082019050919050565b600060208201905081810360008301526138af81613873565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613912602283612f20565b915061391d826138b6565b604082019050919050565b6000602082019050818103600083015261394181613905565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139a4602583612f20565b91506139af82613948565b604082019050919050565b600060208201905081810360008301526139d381613997565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a36602383612f20565b9150613a41826139da565b604082019050919050565b60006020820190508181036000830152613a6581613a29565b9050919050565b7f4163636f756e74206973206120536e6970657200000000000000000000000000600082015250565b6000613aa2601383612f20565b9150613aad82613a6c565b602082019050919050565b60006020820190508181036000830152613ad181613a95565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000613b34602883612f20565b9150613b3f82613ad8565b604082019050919050565b60006020820190508181036000830152613b6381613b27565b9050919050565b6000613b7582612ee1565b9150613b8083612ee1565b925082821015613b9357613b92613733565b5b828203905092915050565b6000613ba982612ee1565b9150613bb483612ee1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613bed57613bec613733565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c3282612ee1565b9150613c3d83612ee1565b925082613c4d57613c4c613bf8565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cb4602183612f20565b9150613cbf82613c58565b604082019050919050565b60006020820190508181036000830152613ce381613ca7565b9050919050565b600060c082019050613cff60008301896132df565b613d0c6020830188612eeb565b613d19604083018761354a565b613d26606083018661354a565b613d3360808301856132df565b613d4060a0830184612eeb565b979650505050505050565b600081519050613d5a81613033565b92915050565b600080600060608486031215613d7957613d78612fd0565b5b6000613d8786828701613d4b565b9350506020613d9886828701613d4b565b9250506040613da986828701613d4b565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a60c9181b770d3c457e42b2d396f5973b6494fad66a9288c03bbb57ec047601e64736f6c634300080f0033

Deployed Bytecode Sourcemap

14133:11727:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15062:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17363:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18660:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14381:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15508;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17640:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20791:303;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15148:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15104:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17454:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18029:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20136:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14541:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14592:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15274:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19997:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15623:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19309:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14429:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6202:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17748:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15471:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15375:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15315:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14486:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15191:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19172:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5728:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5634:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20268:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17545:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18532:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14907:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18255:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19567:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20623:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15437:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24149:521;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15236:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15556:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15670:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17878:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14960:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5946:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19819:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15722:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25050:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15062:35;;;;:::o;17363:83::-;17400:13;17433:5;17426:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17363:83;:::o;18660:161::-;18735:4;18752:39;18761:12;:10;:12::i;:::-;18775:7;18784:6;18752:8;:39::i;:::-;18809:4;18802:11;;18660:161;;;;:::o;14381:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;15508:::-;;;;;;;;;;;;;:::o;17640:100::-;17693:7;17720:12;;17713:19;;17640:100;:::o;20791:303::-;20889:4;20906:36;20916:6;20924:9;20935:6;20906:9;:36::i;:::-;;20953:121;20962:6;20970:12;:10;:12::i;:::-;20984:89;21022:6;20984:89;;;;;;;;;;;;;;;;;:11;:19;20996:6;20984:19;;;;;;;;;;;;;;;:33;21004:12;:10;:12::i;:::-;20984:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;20953:8;:121::i;:::-;21082:4;21075:11;;20791:303;;;;;:::o;15148:36::-;;;;:::o;15104:35::-;;;;:::o;17454:83::-;17495:5;17520:9;;;;;;;;;;;17513:16;;17454:83;:::o;18029:218::-;18117:4;18134:83;18143:12;:10;:12::i;:::-;18157:7;18166:50;18205:10;18166:11;:25;18178:12;:10;:12::i;:::-;18166:25;;;;;;;;;;;;;;;:34;18192:7;18166:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18134:8;:83::i;:::-;18235:4;18228:11;;18029:218;;;;:::o;20136:124::-;5869:12;:10;:12::i;:::-;5859:22;;:6;;;;;;;;;;:22;;;5851:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20244:8:::1;20218:23;:34;;;;20136:124:::0;:::o;14541:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;14592:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;15274:32::-;;;;:::o;19997:131::-;5869:12;:10;:12::i;:::-;5859:22;;:6;;;;;;;;;;:22;;;5851:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20114:6:::1;20088:15;:23;20104:6;20088:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;19997:131:::0;;:::o;15623:40::-;;;;;;;;;;;;;:::o;19309:250::-;5869:12;:10;:12::i;:::-;5859:22;;:6;;;;;;;;;;:22;;;5851:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19429:12:::1;19409:17;:32;;;;19472:12;19452:17;:32;;;;19511:40;19533:17;;19511;;:21;;:40;;;;:::i;:::-;19495:13;:56;;;;19309:250:::0;;:::o;14429:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;6202:90::-;6242:7;6269:15;6262:22;;6202:90;:::o;17748:122::-;17814:7;17841:12;:21;17854:7;17841:21;;;;;;;;;;;;;;;;17834:28;;17748:122;;;:::o;15471:26::-;;;;:::o;15375:53::-;;;;:::o;15315:51::-;;;;:::o;14486:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;15191:36::-;;;;:::o;19172:129::-;5869:12;:10;:12::i;:::-;5859:22;;:6;;;;;;;;;;:22;;;5851:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19285:8:::1;19261:12;:21;19274:7;19261:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;19172:129:::0;;:::o;5728:82::-;5769:7;5796:6;;;;;;;;;;;5789:13;;5728:82;:::o;5634:79::-;5672:7;5699:6;;;;;;;;;;;5692:13;;5634:79;:::o;20268:172::-;5869:12;:10;:12::i;:::-;5859:22;;:6;;;;;;;;;;:22;;;5851:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20370:8:::1;20346:21;;:32;;;;;;;;;;;;;;;;;;20394:38;20423:8;20394:38;;;;;;:::i;:::-;;;;;;;;20268:172:::0;:::o;17545:87::-;17584:13;17617:7;17610:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17545:87;:::o;18532:120::-;18594:7;18621:23;;18614:30;;18532:120;:::o;14907:44::-;;;;:::o;18255:269::-;18348:4;18365:129;18374:12;:10;:12::i;:::-;18388:7;18397:96;18436:15;18397:96;;;;;;;;;;;;;;;;;:11;:25;18409:12;:10;:12::i;:::-;18397:25;;;;;;;;;;;;;;;:34;18423:7;18397:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;18365:8;:129::i;:::-;18512:4;18505:11;;18255:269;;;;:::o;19567:244::-;5869:12;:10;:12::i;:::-;5859:22;;:6;;;;;;;;;;:22;;;5851:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19685:12:::1;19666:16;:31;;;;19727:12;19708:16;:31;;;;19765:38;19786:16;;19765;;:20;;:38;;;;:::i;:::-;19750:12;:53;;;;19567:244:::0;;:::o;20623:157::-;20701:4;20718:42;20728:12;:10;:12::i;:::-;20742:9;20753:6;20718:9;:42::i;:::-;;20768:4;20761:11;;20623:157;;;;:::o;15437:27::-;;;;:::o;24149:521::-;24214:21;24252:1;24238:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24214:40;;24283:4;24265;24270:1;24265:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24309:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24299:4;24304:1;24299:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24342:62;24359:4;24374:15;;;;;;;;;;;24392:11;24342:8;:62::i;:::-;24415:15;;;;;;;;;;;:66;;;24496:11;24522:1;24538:4;24565;24585:15;24415:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24627:35;24644:11;24657:4;24627:35;;;;;;;:::i;:::-;;;;;;;;24203:467;24149:521;:::o;15236:31::-;;;;:::o;15556:26::-;;;;;;;;;;;;;:::o;15670:45::-;;;;;;;;;;;;;:::o;17878:143::-;17959:7;17986:11;:18;17998:5;17986:18;;;;;;;;;;;;;;;:27;18005:7;17986:27;;;;;;;;;;;;;;;;17979:34;;17878:143;;;;:::o;14960:93::-;;;;;;;;;;;;;:::o;5946:244::-;5869:12;:10;:12::i;:::-;5859:22;;:6;;;;;;;;;;:22;;;5851:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6055:1:::1;6035:22;;:8;:22;;::::0;6027:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6145:8;6116:38;;6137:6;::::0;::::1;;;;;;;;6116:38;;;;;;;;;;;;6174:8;6165:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;5946:244:::0;:::o;19819:170::-;5869:12;:10;:12::i;:::-;5859:22;;:6;;;;;;;;;;:22;;;5851:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19932:11:::1;19917:12;:26;;;;19967:14;19954:10;:27;;;;19819:170:::0;;:::o;15722:35::-;;;;;;;;;;;;;:::o;25050:213::-;5869:12;:10;:12::i;:::-;5859:22;;:6;;;;;;;;;;:22;;;5851:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25125:8:::1;:18;25134:8;25125:18;;;;;;;;;;;;;;;;;;;;;;;;;25121:135;;;25181:5;25160:8;:18;25169:8;25160:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;25121:135;;;25240:4;25219:8;:18;25228:8;25219:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;25121:135;25050:213:::0;:::o;1288:181::-;1346:7;1366:9;1382:1;1378;:5;;;;:::i;:::-;1366:17;;1407:1;1402;:6;;1394:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1460:1;1453:8;;;1288:181;;;;:::o;224:115::-;277:15;320:10;305:26;;224:115;:::o;18829:335::-;18939:1;18922:19;;:5;:19;;;18914:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19020:1;19001:21;;:7;:21;;;18993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19102:6;19072:11;:18;19084:5;19072:18;;;;;;;;;;;;;;;:27;19091:7;19072:27;;;;;;;;;;;;;;;:36;;;;19140:7;19124:32;;19133:5;19124:32;;;19149:6;19124:32;;;;;;:::i;:::-;;;;;;;;18829:335;;;:::o;21102:1678::-;21189:4;21232:1;21214:20;;:6;:20;;;21206:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21316:1;21295:23;;:9;:23;;;21287:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21378:8;:16;21387:6;21378:16;;;;;;;;;;;;;;;;;;;;;;;;;21377:17;21369:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;21432:16;;;;;;;;;;;21429:1344;;;21482:41;21497:6;21505:9;21516:6;21482:14;:41::i;:::-;21475:48;;;;21429:1344;21579:11;:19;21591:6;21579:19;;;;;;;;;;;;;;;;;;;;;;;;;21578:20;:47;;;;;21603:11;:22;21615:9;21603:22;;;;;;;;;;;;;;;;;;;;;;;;;21602:23;21578:47;21575:162;;;21664:12;;21654:6;:22;;21646:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21575:162;21751:28;21782:24;21800:4;21782:9;:24::i;:::-;21751:55;;21821:28;21876:23;;21852:20;:47;;21821:78;;21918:23;:44;;;;;21946:16;;;;;;;;;;;21945:17;21918:44;:69;;;;;21967:12;:20;21980:6;21967:20;;;;;;;;;;;;;;;;;;;;;;;;;21966:21;21918:69;:94;;;;;21991:21;;;;;;;;;;;21918:94;21914:305;;;22050:25;;;;;;;;;;;22047:97;;;22121:23;;22098:46;;22047:97;22163:36;22178:20;22163:14;:36::i;:::-;21914:305;22256:56;22281:6;22256:56;;;;;;;;;;;;;;;;;:12;:20;22269:6;22256:20;;;;;;;;;;;;;;;;:24;;:56;;;;;:::i;:::-;22233:12;:20;22246:6;22233:20;;;;;;;;;;;;;;;:79;;;;22327:19;22350:17;:25;22368:6;22350:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;22379:17;:28;22397:9;22379:28;;;;;;;;;;;;;;;;;;;;;;;;;22350:57;22349:105;;22420:34;22428:6;22436:9;22447:6;22420:7;:34::i;:::-;22349:105;;;22411:6;22349:105;22327:127;;22472:16;;;;;;;;;;;:47;;;;;22493:15;:26;22509:9;22493:26;;;;;;;;;;;;;;;;;;;;;;;;;22492:27;22472:47;22469:125;;;22583:10;;22542:37;22567:11;22542:20;22552:9;22542;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;22534:60;;;;;;22469:125;22635:40;22663:11;22635:12;:23;22648:9;22635:23;;;;;;;;;;;;;;;;:27;;:40;;;;:::i;:::-;22609:12;:23;22622:9;22609:23;;;;;;;;;;;;;;;:66;;;;22712:9;22695:40;;22704:6;22695:40;;;22723:11;22695:40;;;;;;:::i;:::-;;;;;;;;22757:4;22750:11;;;;;21102:1678;;;;;;:::o;1621:192::-;1707:7;1740:1;1735;:6;;1743:12;1727:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1767:9;1783:1;1779;:5;;;;:::i;:::-;1767:17;;1804:1;1797:8;;;1621:192;;;;;:::o;22788:342::-;22881:4;22921:56;22946:6;22921:56;;;;;;;;;;;;;;;;;:12;:20;22934:6;22921:20;;;;;;;;;;;;;;;;:24;;:56;;;;;:::i;:::-;22898:12;:20;22911:6;22898:20;;;;;;;;;;;;;;;:79;;;;23014:35;23042:6;23014:12;:23;23027:9;23014:23;;;;;;;;;;;;;;;;:27;;:35;;;;:::i;:::-;22988:12;:23;23001:9;22988:23;;;;;;;;;;;;;;;:61;;;;23082:9;23065:35;;23074:6;23065:35;;;23093:6;23065:35;;;;;;:::i;:::-;;;;;;;;23118:4;23111:11;;22788:342;;;;;:::o;23138:999::-;16201:4;16182:16;;:23;;;;;;;;;;;;;;;;;;23211:19:::1;23233:57;23288:1;23233:50;23258:24;;23233:20;23245:7;;23233;:11;;:20;;;;:::i;:::-;:24;;:50;;;;:::i;:::-;:54;;:57;;;;:::i;:::-;23211:79;;23301:21;23325:24;23337:11;23325:7;:11;;:24;;;;:::i;:::-;23301:48;;23362:31;23379:13;23362:16;:31::i;:::-;23404:22;23429:21;23404:46;;23461:19;23483:44;23512:14;23524:1;23512:7;;:11;;:14;;;;:::i;:::-;23483:24;;:28;;:44;;;;:::i;:::-;23461:66;;23548:26;23577:51;23626:1;23577:44;23609:11;23577:27;23596:7;;23577:14;:18;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;23548:80;;23639:21;23663:44;23695:11;23663:27;23682:7;;23663:14;:18;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;23639:68;;23718:26;23747:57;23790:13;23747:38;23766:18;23747:14;:18;;:38;;;;:::i;:::-;:42;;:57;;;;:::i;:::-;23718:86;;23841:1;23820:18;:22;23817:98;;;23857:58;23878:16;;;;;;;;;;;23896:18;23857:20;:58::i;:::-;23817:98;23945:1;23929:13;:17;23926:88;;;23961:53;23982:16;;;;;;;;;;;24000:13;23961:20;:53::i;:::-;23926:88;24049:1;24028:18;:22;:41;;;;;24068:1;24054:11;:15;24028:41;24025:104;;;24084:45;24097:11;24110:18;24084:12;:45::i;:::-;24025:104;23200:937;;;;;;;16247:5:::0;16228:16;;:24;;;;;;;;;;;;;;;;;;23138:999;:::o;25271:586::-;25357:7;25377:17;25397:1;25377:21;;25412:12;:20;25425:6;25412:20;;;;;;;;;;;;;;;;;;;;;;;;;25409:213;;;25461:33;25490:3;25461:24;25472:12;;25461:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;25449:45;;25409:213;;;25524:12;:23;25537:9;25524:23;;;;;;;;;;;;;;;;;;;;;;;;;25521:101;;;25576:34;25606:3;25576:25;25587:13;;25576:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;25564:46;;25521:101;25409:213;25647:1;25635:9;:13;25632:179;;;25695:42;25727:9;25695:12;:27;25716:4;25695:27;;;;;;;;;;;;;;;;:31;;:42;;;;:::i;:::-;25665:12;:27;25686:4;25665:27;;;;;;;;;;;;;;;:72;;;;25782:4;25757:42;;25766:6;25757:42;;;25789:9;25757:42;;;;;;:::i;:::-;;;;;;;;25632:179;25828:21;25839:9;25828:6;:10;;:21;;;;:::i;:::-;25821:28;;;25271:586;;;;;:::o;1821:250::-;1879:7;1908:1;1903;:6;1899:47;;1933:1;1926:8;;;;1899:47;1958:9;1974:1;1970;:5;;;;:::i;:::-;1958:17;;2003:1;1998;1994;:5;;;;:::i;:::-;:10;1986:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2062:1;2055:8;;;1821:250;;;;;:::o;2079:132::-;2137:7;2164:39;2168:1;2171;2164:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2157:46;;2079:132;;;;:::o;1477:136::-;1535:7;1562:43;1566:1;1569;1562:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1555:50;;1477:136;;;;:::o;20448:126::-;20540:9;:18;;:26;20559:6;20540:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20448:126;;:::o;24678:362::-;24759:62;24776:4;24791:15;;;;;;;;;;;24809:11;24759:8;:62::i;:::-;24832:15;;;;;;;;;;;:31;;;24871:9;24904:4;24924:11;24950:1;24967;24984:7;:5;:7::i;:::-;25006:15;24832:200;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24678:362;;:::o;2219:278::-;2305:7;2337:1;2333;:5;2340:12;2325:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2364:9;2380:1;2376;:5;;;;:::i;:::-;2364:17;;2488:1;2481:8;;;2219:278;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1913:117::-;2022:1;2019;2012:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:329::-;3905:6;3954:2;3942:9;3933:7;3929:23;3925:32;3922:119;;;3960:79;;:::i;:::-;3922:119;4080:1;4105:53;4150:7;4141:6;4130:9;4126:22;4105:53;:::i;:::-;4095:63;;4051:117;3846:329;;;;:::o;4181:60::-;4209:3;4230:5;4223:12;;4181:60;;;:::o;4247:142::-;4297:9;4330:53;4348:34;4357:24;4375:5;4357:24;:::i;:::-;4348:34;:::i;:::-;4330:53;:::i;:::-;4317:66;;4247:142;;;:::o;4395:126::-;4445:9;4478:37;4509:5;4478:37;:::i;:::-;4465:50;;4395:126;;;:::o;4527:153::-;4604:9;4637:37;4668:5;4637:37;:::i;:::-;4624:50;;4527:153;;;:::o;4686:185::-;4800:64;4858:5;4800:64;:::i;:::-;4795:3;4788:77;4686:185;;:::o;4877:276::-;4997:4;5035:2;5024:9;5020:18;5012:26;;5048:98;5143:1;5132:9;5128:17;5119:6;5048:98;:::i;:::-;4877:276;;;;:::o;5159:619::-;5236:6;5244;5252;5301:2;5289:9;5280:7;5276:23;5272:32;5269:119;;;5307:79;;:::i;:::-;5269:119;5427:1;5452:53;5497:7;5488:6;5477:9;5473:22;5452:53;:::i;:::-;5442:63;;5398:117;5554:2;5580:53;5625:7;5616:6;5605:9;5601:22;5580:53;:::i;:::-;5570:63;;5525:118;5682:2;5708:53;5753:7;5744:6;5733:9;5729:22;5708:53;:::i;:::-;5698:63;;5653:118;5159:619;;;;;:::o;5784:86::-;5819:7;5859:4;5852:5;5848:16;5837:27;;5784:86;;;:::o;5876:112::-;5959:22;5975:5;5959:22;:::i;:::-;5954:3;5947:35;5876:112;;:::o;5994:214::-;6083:4;6121:2;6110:9;6106:18;6098:26;;6134:67;6198:1;6187:9;6183:17;6174:6;6134:67;:::i;:::-;5994:214;;;;:::o;6214:329::-;6273:6;6322:2;6310:9;6301:7;6297:23;6293:32;6290:119;;;6328:79;;:::i;:::-;6290:119;6448:1;6473:53;6518:7;6509:6;6498:9;6494:22;6473:53;:::i;:::-;6463:63;;6419:117;6214:329;;;;:::o;6549:116::-;6619:21;6634:5;6619:21;:::i;:::-;6612:5;6609:32;6599:60;;6655:1;6652;6645:12;6599:60;6549:116;:::o;6671:133::-;6714:5;6752:6;6739:20;6730:29;;6768:30;6792:5;6768:30;:::i;:::-;6671:133;;;;:::o;6810:468::-;6875:6;6883;6932:2;6920:9;6911:7;6907:23;6903:32;6900:119;;;6938:79;;:::i;:::-;6900:119;7058:1;7083:53;7128:7;7119:6;7108:9;7104:22;7083:53;:::i;:::-;7073:63;;7029:117;7185:2;7211:50;7253:7;7244:6;7233:9;7229:22;7211:50;:::i;:::-;7201:60;;7156:115;6810:468;;;;;:::o;7284:474::-;7352:6;7360;7409:2;7397:9;7388:7;7384:23;7380:32;7377:119;;;7415:79;;:::i;:::-;7377:119;7535:1;7560:53;7605:7;7596:6;7585:9;7581:22;7560:53;:::i;:::-;7550:63;;7506:117;7662:2;7688:53;7733:7;7724:6;7713:9;7709:22;7688:53;:::i;:::-;7678:63;;7633:118;7284:474;;;;;:::o;7764:118::-;7851:24;7869:5;7851:24;:::i;:::-;7846:3;7839:37;7764:118;;:::o;7888:222::-;7981:4;8019:2;8008:9;8004:18;7996:26;;8032:71;8100:1;8089:9;8085:17;8076:6;8032:71;:::i;:::-;7888:222;;;;:::o;8116:323::-;8172:6;8221:2;8209:9;8200:7;8196:23;8192:32;8189:119;;;8227:79;;:::i;:::-;8189:119;8347:1;8372:50;8414:7;8405:6;8394:9;8390:22;8372:50;:::i;:::-;8362:60;;8318:114;8116:323;;;;:::o;8445:474::-;8513:6;8521;8570:2;8558:9;8549:7;8545:23;8541:32;8538:119;;;8576:79;;:::i;:::-;8538:119;8696:1;8721:53;8766:7;8757:6;8746:9;8742:22;8721:53;:::i;:::-;8711:63;;8667:117;8823:2;8849:53;8894:7;8885:6;8874:9;8870:22;8849:53;:::i;:::-;8839:63;;8794:118;8445:474;;;;;:::o;8925:104::-;8970:7;8999:24;9017:5;8999:24;:::i;:::-;8988:35;;8925:104;;;:::o;9035:142::-;9138:32;9164:5;9138:32;:::i;:::-;9133:3;9126:45;9035:142;;:::o;9183:254::-;9292:4;9330:2;9319:9;9315:18;9307:26;;9343:87;9427:1;9416:9;9412:17;9403:6;9343:87;:::i;:::-;9183:254;;;;:::o;9443:180::-;9491:77;9488:1;9481:88;9588:4;9585:1;9578:15;9612:4;9609:1;9602:15;9629:320;9673:6;9710:1;9704:4;9700:12;9690:22;;9757:1;9751:4;9747:12;9778:18;9768:81;;9834:4;9826:6;9822:17;9812:27;;9768:81;9896:2;9888:6;9885:14;9865:18;9862:38;9859:84;;9915:18;;:::i;:::-;9859:84;9680:269;9629:320;;;:::o;9955:182::-;10095:34;10091:1;10083:6;10079:14;10072:58;9955:182;:::o;10143:366::-;10285:3;10306:67;10370:2;10365:3;10306:67;:::i;:::-;10299:74;;10382:93;10471:3;10382:93;:::i;:::-;10500:2;10495:3;10491:12;10484:19;;10143:366;;;:::o;10515:419::-;10681:4;10719:2;10708:9;10704:18;10696:26;;10768:9;10762:4;10758:20;10754:1;10743:9;10739:17;10732:47;10796:131;10922:4;10796:131;:::i;:::-;10788:139;;10515:419;;;:::o;10940:180::-;10988:77;10985:1;10978:88;11085:4;11082:1;11075:15;11109:4;11106:1;11099:15;11126:180;11174:77;11171:1;11164:88;11271:4;11268:1;11261:15;11295:4;11292:1;11285:15;11312:143;11369:5;11400:6;11394:13;11385:22;;11416:33;11443:5;11416:33;:::i;:::-;11312:143;;;;:::o;11461:351::-;11531:6;11580:2;11568:9;11559:7;11555:23;11551:32;11548:119;;;11586:79;;:::i;:::-;11548:119;11706:1;11731:64;11787:7;11778:6;11767:9;11763:22;11731:64;:::i;:::-;11721:74;;11677:128;11461:351;;;;:::o;11818:85::-;11863:7;11892:5;11881:16;;11818:85;;;:::o;11909:158::-;11967:9;12000:61;12018:42;12027:32;12053:5;12027:32;:::i;:::-;12018:42;:::i;:::-;12000:61;:::i;:::-;11987:74;;11909:158;;;:::o;12073:147::-;12168:45;12207:5;12168:45;:::i;:::-;12163:3;12156:58;12073:147;;:::o;12226:114::-;12293:6;12327:5;12321:12;12311:22;;12226:114;;;:::o;12346:184::-;12445:11;12479:6;12474:3;12467:19;12519:4;12514:3;12510:14;12495:29;;12346:184;;;;:::o;12536:132::-;12603:4;12626:3;12618:11;;12656:4;12651:3;12647:14;12639:22;;12536:132;;;:::o;12674:108::-;12751:24;12769:5;12751:24;:::i;:::-;12746:3;12739:37;12674:108;;:::o;12788:179::-;12857:10;12878:46;12920:3;12912:6;12878:46;:::i;:::-;12956:4;12951:3;12947:14;12933:28;;12788:179;;;;:::o;12973:113::-;13043:4;13075;13070:3;13066:14;13058:22;;12973:113;;;:::o;13122:732::-;13241:3;13270:54;13318:5;13270:54;:::i;:::-;13340:86;13419:6;13414:3;13340:86;:::i;:::-;13333:93;;13450:56;13500:5;13450:56;:::i;:::-;13529:7;13560:1;13545:284;13570:6;13567:1;13564:13;13545:284;;;13646:6;13640:13;13673:63;13732:3;13717:13;13673:63;:::i;:::-;13666:70;;13759:60;13812:6;13759:60;:::i;:::-;13749:70;;13605:224;13592:1;13589;13585:9;13580:14;;13545:284;;;13549:14;13845:3;13838:10;;13246:608;;;13122:732;;;;:::o;13860:831::-;14123:4;14161:3;14150:9;14146:19;14138:27;;14175:71;14243:1;14232:9;14228:17;14219:6;14175:71;:::i;:::-;14256:80;14332:2;14321:9;14317:18;14308:6;14256:80;:::i;:::-;14383:9;14377:4;14373:20;14368:2;14357:9;14353:18;14346:48;14411:108;14514:4;14505:6;14411:108;:::i;:::-;14403:116;;14529:72;14597:2;14586:9;14582:18;14573:6;14529:72;:::i;:::-;14611:73;14679:3;14668:9;14664:19;14655:6;14611:73;:::i;:::-;13860:831;;;;;;;;:::o;14697:483::-;14868:4;14906:2;14895:9;14891:18;14883:26;;14919:71;14987:1;14976:9;14972:17;14963:6;14919:71;:::i;:::-;15037:9;15031:4;15027:20;15022:2;15011:9;15007:18;15000:48;15065:108;15168:4;15159:6;15065:108;:::i;:::-;15057:116;;14697:483;;;;;:::o;15186:225::-;15326:34;15322:1;15314:6;15310:14;15303:58;15395:8;15390:2;15382:6;15378:15;15371:33;15186:225;:::o;15417:366::-;15559:3;15580:67;15644:2;15639:3;15580:67;:::i;:::-;15573:74;;15656:93;15745:3;15656:93;:::i;:::-;15774:2;15769:3;15765:12;15758:19;;15417:366;;;:::o;15789:419::-;15955:4;15993:2;15982:9;15978:18;15970:26;;16042:9;16036:4;16032:20;16028:1;16017:9;16013:17;16006:47;16070:131;16196:4;16070:131;:::i;:::-;16062:139;;15789:419;;;:::o;16214:180::-;16262:77;16259:1;16252:88;16359:4;16356:1;16349:15;16383:4;16380:1;16373:15;16400:305;16440:3;16459:20;16477:1;16459:20;:::i;:::-;16454:25;;16493:20;16511:1;16493:20;:::i;:::-;16488:25;;16647:1;16579:66;16575:74;16572:1;16569:81;16566:107;;;16653:18;;:::i;:::-;16566:107;16697:1;16694;16690:9;16683:16;;16400:305;;;;:::o;16711:177::-;16851:29;16847:1;16839:6;16835:14;16828:53;16711:177;:::o;16894:366::-;17036:3;17057:67;17121:2;17116:3;17057:67;:::i;:::-;17050:74;;17133:93;17222:3;17133:93;:::i;:::-;17251:2;17246:3;17242:12;17235:19;;16894:366;;;:::o;17266:419::-;17432:4;17470:2;17459:9;17455:18;17447:26;;17519:9;17513:4;17509:20;17505:1;17494:9;17490:17;17483:47;17547:131;17673:4;17547:131;:::i;:::-;17539:139;;17266:419;;;:::o;17691:223::-;17831:34;17827:1;17819:6;17815:14;17808:58;17900:6;17895:2;17887:6;17883:15;17876:31;17691:223;:::o;17920:366::-;18062:3;18083:67;18147:2;18142:3;18083:67;:::i;:::-;18076:74;;18159:93;18248:3;18159:93;:::i;:::-;18277:2;18272:3;18268:12;18261:19;;17920:366;;;:::o;18292:419::-;18458:4;18496:2;18485:9;18481:18;18473:26;;18545:9;18539:4;18535:20;18531:1;18520:9;18516:17;18509:47;18573:131;18699:4;18573:131;:::i;:::-;18565:139;;18292:419;;;:::o;18717:221::-;18857:34;18853:1;18845:6;18841:14;18834:58;18926:4;18921:2;18913:6;18909:15;18902:29;18717:221;:::o;18944:366::-;19086:3;19107:67;19171:2;19166:3;19107:67;:::i;:::-;19100:74;;19183:93;19272:3;19183:93;:::i;:::-;19301:2;19296:3;19292:12;19285:19;;18944:366;;;:::o;19316:419::-;19482:4;19520:2;19509:9;19505:18;19497:26;;19569:9;19563:4;19559:20;19555:1;19544:9;19540:17;19533:47;19597:131;19723:4;19597:131;:::i;:::-;19589:139;;19316:419;;;:::o;19741:224::-;19881:34;19877:1;19869:6;19865:14;19858:58;19950:7;19945:2;19937:6;19933:15;19926:32;19741:224;:::o;19971:366::-;20113:3;20134:67;20198:2;20193:3;20134:67;:::i;:::-;20127:74;;20210:93;20299:3;20210:93;:::i;:::-;20328:2;20323:3;20319:12;20312:19;;19971:366;;;:::o;20343:419::-;20509:4;20547:2;20536:9;20532:18;20524:26;;20596:9;20590:4;20586:20;20582:1;20571:9;20567:17;20560:47;20624:131;20750:4;20624:131;:::i;:::-;20616:139;;20343:419;;;:::o;20768:222::-;20908:34;20904:1;20896:6;20892:14;20885:58;20977:5;20972:2;20964:6;20960:15;20953:30;20768:222;:::o;20996:366::-;21138:3;21159:67;21223:2;21218:3;21159:67;:::i;:::-;21152:74;;21235:93;21324:3;21235:93;:::i;:::-;21353:2;21348:3;21344:12;21337:19;;20996:366;;;:::o;21368:419::-;21534:4;21572:2;21561:9;21557:18;21549:26;;21621:9;21615:4;21611:20;21607:1;21596:9;21592:17;21585:47;21649:131;21775:4;21649:131;:::i;:::-;21641:139;;21368:419;;;:::o;21793:169::-;21933:21;21929:1;21921:6;21917:14;21910:45;21793:169;:::o;21968:366::-;22110:3;22131:67;22195:2;22190:3;22131:67;:::i;:::-;22124:74;;22207:93;22296:3;22207:93;:::i;:::-;22325:2;22320:3;22316:12;22309:19;;21968:366;;;:::o;22340:419::-;22506:4;22544:2;22533:9;22529:18;22521:26;;22593:9;22587:4;22583:20;22579:1;22568:9;22564:17;22557:47;22621:131;22747:4;22621:131;:::i;:::-;22613:139;;22340:419;;;:::o;22765:227::-;22905:34;22901:1;22893:6;22889:14;22882:58;22974:10;22969:2;22961:6;22957:15;22950:35;22765:227;:::o;22998:366::-;23140:3;23161:67;23225:2;23220:3;23161:67;:::i;:::-;23154:74;;23237:93;23326:3;23237:93;:::i;:::-;23355:2;23350:3;23346:12;23339:19;;22998:366;;;:::o;23370:419::-;23536:4;23574:2;23563:9;23559:18;23551:26;;23623:9;23617:4;23613:20;23609:1;23598:9;23594:17;23587:47;23651:131;23777:4;23651:131;:::i;:::-;23643:139;;23370:419;;;:::o;23795:191::-;23835:4;23855:20;23873:1;23855:20;:::i;:::-;23850:25;;23889:20;23907:1;23889:20;:::i;:::-;23884:25;;23928:1;23925;23922:8;23919:34;;;23933:18;;:::i;:::-;23919:34;23978:1;23975;23971:9;23963:17;;23795:191;;;;:::o;23992:348::-;24032:7;24055:20;24073:1;24055:20;:::i;:::-;24050:25;;24089:20;24107:1;24089:20;:::i;:::-;24084:25;;24277:1;24209:66;24205:74;24202:1;24199:81;24194:1;24187:9;24180:17;24176:105;24173:131;;;24284:18;;:::i;:::-;24173:131;24332:1;24329;24325:9;24314:20;;23992:348;;;;:::o;24346:180::-;24394:77;24391:1;24384:88;24491:4;24488:1;24481:15;24515:4;24512:1;24505:15;24532:185;24572:1;24589:20;24607:1;24589:20;:::i;:::-;24584:25;;24623:20;24641:1;24623:20;:::i;:::-;24618:25;;24662:1;24652:35;;24667:18;;:::i;:::-;24652:35;24709:1;24706;24702:9;24697:14;;24532:185;;;;:::o;24723:220::-;24863:34;24859:1;24851:6;24847:14;24840:58;24932:3;24927:2;24919:6;24915:15;24908:28;24723:220;:::o;24949:366::-;25091:3;25112:67;25176:2;25171:3;25112:67;:::i;:::-;25105:74;;25188:93;25277:3;25188:93;:::i;:::-;25306:2;25301:3;25297:12;25290:19;;24949:366;;;:::o;25321:419::-;25487:4;25525:2;25514:9;25510:18;25502:26;;25574:9;25568:4;25564:20;25560:1;25549:9;25545:17;25538:47;25602:131;25728:4;25602:131;:::i;:::-;25594:139;;25321:419;;;:::o;25746:807::-;25995:4;26033:3;26022:9;26018:19;26010:27;;26047:71;26115:1;26104:9;26100:17;26091:6;26047:71;:::i;:::-;26128:72;26196:2;26185:9;26181:18;26172:6;26128:72;:::i;:::-;26210:80;26286:2;26275:9;26271:18;26262:6;26210:80;:::i;:::-;26300;26376:2;26365:9;26361:18;26352:6;26300:80;:::i;:::-;26390:73;26458:3;26447:9;26443:19;26434:6;26390:73;:::i;:::-;26473;26541:3;26530:9;26526:19;26517:6;26473:73;:::i;:::-;25746:807;;;;;;;;;:::o;26559:143::-;26616:5;26647:6;26641:13;26632:22;;26663:33;26690:5;26663:33;:::i;:::-;26559:143;;;;:::o;26708:663::-;26796:6;26804;26812;26861:2;26849:9;26840:7;26836:23;26832:32;26829:119;;;26867:79;;:::i;:::-;26829:119;26987:1;27012:64;27068:7;27059:6;27048:9;27044:22;27012:64;:::i;:::-;27002:74;;26958:128;27125:2;27151:64;27207:7;27198:6;27187:9;27183:22;27151:64;:::i;:::-;27141:74;;27096:129;27264:2;27290:64;27346:7;27337:6;27326:9;27322:22;27290:64;:::i;:::-;27280:74;;27235:129;26708:663;;;;;:::o

Swarm Source

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