ETH Price: $3,393.19 (-8.19%)
 

Overview

Max Total Supply

420,000,000,000 GF

Holders

66

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
211,236,321.817740558676959938 GF

Value
$0.00
0xd860ec8f3df25e40eb408aab6109214040d9976f
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:
GirlFriend

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-12
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

abstract contract Context {

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

interface IERC20 {

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

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;
        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");

        (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;
    address private _previousOwner;
    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;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function RenounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

interface 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 GirlFriend is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    using Address for address;
    
    string private _name = "GirlFriend";
    string private _symbol = "GF";
    uint8 private _decimals = 18;

    address payable public marketingWalletAddress = payable(0xB19BAd0CbAF58d6a788CB519B580fbf377221D26); // Marketing Address
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) private isMarketPair;

    uint256 public _buyLiquidityFee = 1;
    uint256 public _buyMarketingFee = 1;
    
    uint256 public _sellLiquidityFee = 1;
    uint256 public _sellMarketingFee = 1;

    uint256 private _liquidityShare = 2;
    uint256 private _marketingShare = 2;

    uint256 public _totalTaxIfBuying = 2; // 2% BUY TAX
    uint256 public _totalTaxIfSelling = 2; // 2% SELL TAX
    uint256 private _totalDistributionShares = 10;

    uint256 private _totalSupply = 420_000_000_000 * 10**18; //4200 Billion Total Supply
    uint256 public minimumTokensBeforeSwap = 50_000_000 * 10**18; // 0.05% of the total supply

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

    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 lockTheSwap {
        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;
        
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee);
        _totalDistributionShares = _liquidityShare.add(_marketingShare);

        

        isMarketPair[address(uniswapPair)] = true;

        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[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 SetBuySellFees(uint256 newBuyLiquidityTax, uint256 newBuyMarketingTax, uint256 newSellLiquidityTax, uint256 newSellMarketingTax) external onlyOwner() {
        require(newBuyLiquidityTax <= 2, "Buy liquidity Tax can only be equal to(=) or less than 2%");
        require(newBuyMarketingTax <= 8, "Buy Marketing Tax can only be equal to(=) or less than 8%");
        require(newSellLiquidityTax <= 2, "Sell liquidity Tax can only be equal to(=) or less than 2%");
        require(newSellMarketingTax <= 8, "Sell Marketing Tax can only be equal to(=) or less than 8%");
        _buyLiquidityFee = newBuyLiquidityTax;
        _buyMarketingFee = newBuyMarketingTax;
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee);
        _sellLiquidityFee = newSellLiquidityTax;
        _sellMarketingFee = newSellMarketingTax;
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee);
        _liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee);
        _marketingShare = _buyMarketingFee.add(_sellMarketingFee);
        _totalDistributionShares = _liquidityShare.add(_marketingShare);
    }

    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        marketingWalletAddress = payable(newAddress);
    }

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

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

    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress));
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
     //to recieve ETH from uniswapV2Router when swaping
    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");

        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {           

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);    
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? 
                                         amount : takeFee(sender, recipient, amount);

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }

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

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

        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance;

        uint256 totalBNBFee = _totalDistributionShares.sub(_liquidityShare.div(2));
        
        uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2);

        uint256 amountBNBMarketing = amountReceived.sub(amountBNBLiquidity);

        if(amountBNBMarketing > 0)
            transferToAddressETH(marketingWalletAddress, amountBNBMarketing);

        if(amountBNBLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountBNBLiquidity);
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

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

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

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

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = 0;
        
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }
        
        if(feeAmount > 0) {
            _balances[address(this)] = _balances[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":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"ExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"RenounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newBuyMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newSellLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newSellMarketingTax","type":"uint256"}],"name":"SetBuySellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","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":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","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":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","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":[],"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"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600a81526020017f4769726c467269656e6400000000000000000000000000000000000000000000815250600390816200004a919062000a95565b506040518060400160405280600281526020017f47460000000000000000000000000000000000000000000000000000000000008152506004908162000091919062000a95565b506012600560006101000a81548160ff021916908360ff16021790555073b19bad0cbaf58d6a788cb519b580fbf377221d26600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152506001600a556001600b556001600c556001600d556002600e556002600f5560026010556002601155600a6012556c054d17db76321263eca00000006013556a295be96e640669720000006014556001601660156101000a81548160ff02191690831515021790555060006016806101000a81548160ff021916908315150217905550348015620001c757600080fd5b506000620001da6200078760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000303919062000be6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200036b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000391919062000be6565b6040518363ffffffff1660e01b8152600401620003b092919062000c29565b6020604051808303816000875af1158015620003d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f6919062000be6565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601354600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160086000620005326200078f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005f4600b54600a54620007b860201b90919060201c565b60108190555062000613600d54600c54620007b860201b90919060201c565b60118190555062000632600f54600e54620007b860201b90919060201c565b601281905550600160096000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060135460066000620006c96200078760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620007176200078760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60135460405162000778919062000c67565b60405180910390a35062000d71565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808284620007c9919062000cb3565b90508381101562000811576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008089062000d4f565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200089d57607f821691505b602082108103620008b357620008b262000855565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200091d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620008de565b620009298683620008de565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000976620009706200096a8462000941565b6200094b565b62000941565b9050919050565b6000819050919050565b620009928362000955565b620009aa620009a1826200097d565b848454620008eb565b825550505050565b600090565b620009c1620009b2565b620009ce81848462000987565b505050565b5b81811015620009f657620009ea600082620009b7565b600181019050620009d4565b5050565b601f82111562000a455762000a0f81620008b9565b62000a1a84620008ce565b8101602085101562000a2a578190505b62000a4262000a3985620008ce565b830182620009d3565b50505b505050565b600082821c905092915050565b600062000a6a6000198460080262000a4a565b1980831691505092915050565b600062000a85838362000a57565b9150826002028217905092915050565b62000aa0826200081b565b67ffffffffffffffff81111562000abc5762000abb62000826565b5b62000ac8825462000884565b62000ad5828285620009fa565b600060209050601f83116001811462000b0d576000841562000af8578287015190505b62000b04858262000a77565b86555062000b74565b601f19841662000b1d86620008b9565b60005b8281101562000b475784890151825560018201915060208501945060208101905062000b20565b8683101562000b67578489015162000b63601f89168262000a57565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000bae8262000b81565b9050919050565b62000bc08162000ba1565b811462000bcc57600080fd5b50565b60008151905062000be08162000bb5565b92915050565b60006020828403121562000bff5762000bfe62000b7c565b5b600062000c0f8482850162000bcf565b91505092915050565b62000c238162000ba1565b82525050565b600060408201905062000c40600083018562000c18565b62000c4f602083018462000c18565b9392505050565b62000c618162000941565b82525050565b600060208201905062000c7e600083018462000c56565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000cc08262000941565b915062000ccd8362000941565b925082820190508082111562000ce85762000ce762000c84565b5b92915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000d37601b8362000cee565b915062000d448262000cff565b602082019050919050565b6000602082019050818103600083015262000d6a8162000d28565b9050919050565b60805161385062000d94600039600081816109ed0152610a1901526138506000f3fe6080604052600436106101fd5760003560e01c806395d89b411161010d578063c816841b116100a0578063da00097d1161006f578063da00097d1461074a578063dc44b6a014610775578063dd62ed3e146107a0578063f0cd1dac146107dd578063f2fde38b1461080857610204565b8063c816841b1461069e578063c8607952146106c9578063d158272d146106f4578063d2d7ad831461071f57610204565b8063a9059cbb116100dc578063a9059cbb146105e4578063c311600014610621578063c49b9a801461064a578063c5d241891461067357610204565b806395d89b41146105285780639d8f770614610553578063a073d37f1461057c578063a457c2d7146105a757610204565b806339509351116101905780636e4ee8111161015f5780636e4ee8111461045357806370a082311461046a57806382eefb43146104a757806388790a68146104d25780638da5cb5b146104fd57610204565b806339509351146103855780634a74bb02146103c25780634cb80fd5146103ed5780635342acb41461041657610204565b806323b872dd116101cc57806323b872dd146102c757806327c8f835146103045780632b112e491461032f578063313ce5671461035a57610204565b806306fdde0314610209578063095ea7b3146102345780631694505e1461027157806318160ddd1461029c57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e610831565b60405161022b919061288a565b60405180910390f35b34801561024057600080fd5b5061025b60048036038101906102569190612945565b6108c3565b60405161026891906129a0565b60405180910390f35b34801561027d57600080fd5b506102866108e1565b6040516102939190612a1a565b60405180910390f35b3480156102a857600080fd5b506102b1610907565b6040516102be9190612a44565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e99190612a5f565b610911565b6040516102fb91906129a0565b60405180910390f35b34801561031057600080fd5b506103196109eb565b6040516103269190612ac1565b60405180910390f35b34801561033b57600080fd5b50610344610a0f565b6040516103519190612a44565b60405180910390f35b34801561036657600080fd5b5061036f610a53565b60405161037c9190612af8565b60405180910390f35b34801561039157600080fd5b506103ac60048036038101906103a79190612945565b610a6a565b6040516103b991906129a0565b60405180910390f35b3480156103ce57600080fd5b506103d7610b1d565b6040516103e491906129a0565b60405180910390f35b3480156103f957600080fd5b50610414600480360381019061040f9190612b13565b610b30565b005b34801561042257600080fd5b5061043d60048036038101906104389190612b13565b610c09565b60405161044a91906129a0565b60405180910390f35b34801561045f57600080fd5b50610468610c29565b005b34801561047657600080fd5b50610491600480360381019061048c9190612b13565b610d7c565b60405161049e9190612a44565b60405180910390f35b3480156104b357600080fd5b506104bc610dc5565b6040516104c99190612a44565b60405180910390f35b3480156104de57600080fd5b506104e7610dcb565b6040516104f49190612a44565b60405180910390f35b34801561050957600080fd5b50610512610dd1565b60405161051f9190612ac1565b60405180910390f35b34801561053457600080fd5b5061053d610dfa565b60405161054a919061288a565b60405180910390f35b34801561055f57600080fd5b5061057a60048036038101906105759190612b6c565b610e8c565b005b34801561058857600080fd5b50610591610f7c565b60405161059e9190612a44565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c99190612945565b610f86565b6040516105db91906129a0565b60405180910390f35b3480156105f057600080fd5b5061060b60048036038101906106069190612945565b611053565b60405161061891906129a0565b60405180910390f35b34801561062d57600080fd5b5061064860048036038101906106439190612bac565b611072565b005b34801561065657600080fd5b50610671600480360381019061066c9190612c13565b6112ca565b005b34801561067f57600080fd5b506106886113b3565b6040516106959190612a44565b60405180910390f35b3480156106aa57600080fd5b506106b36113b9565b6040516106c09190612ac1565b60405180910390f35b3480156106d557600080fd5b506106de6113df565b6040516106eb9190612a44565b60405180910390f35b34801561070057600080fd5b506107096113e5565b6040516107169190612c61565b60405180910390f35b34801561072b57600080fd5b5061073461140b565b6040516107419190612a44565b60405180910390f35b34801561075657600080fd5b5061075f611411565b60405161076c91906129a0565b60405180910390f35b34801561078157600080fd5b5061078a611422565b6040516107979190612a44565b60405180910390f35b3480156107ac57600080fd5b506107c760048036038101906107c29190612c7c565b611428565b6040516107d49190612a44565b60405180910390f35b3480156107e957600080fd5b506107f26114af565b6040516107ff9190612a44565b60405180910390f35b34801561081457600080fd5b5061082f600480360381019061082a9190612b13565b6114b5565b005b60606003805461084090612ceb565b80601f016020809104026020016040519081016040528092919081815260200182805461086c90612ceb565b80156108b95780601f1061088e576101008083540402835291602001916108b9565b820191906000526020600020905b81548152906001019060200180831161089c57829003601f168201915b5050505050905090565b60006108d76108d0611676565b848461167e565b6001905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601354905090565b600061091e848484611847565b506109e08461092b611676565b6109db856040518060600160405280602881526020016137ce60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610991611676565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ca49092919063ffffffff16565b61167e565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610a4e610a3d7f0000000000000000000000000000000000000000000000000000000000000000610d7c565b601354611d0890919063ffffffff16565b905090565b6000600560009054906101000a900460ff16905090565b6000610b13610a77611676565b84610b0e8560076000610a88611676565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5290919063ffffffff16565b61167e565b6001905092915050565b601660159054906101000a900460ff1681565b610b38611676565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbc90612d68565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60086020528060005260406000206000915054906101000a900460ff1681565b610c31611676565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb590612d68565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60115481565b600c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e0990612ceb565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3590612ceb565b8015610e825780601f10610e5757610100808354040283529160200191610e82565b820191906000526020600020905b815481529060010190602001808311610e6557829003601f168201915b5050505050905090565b610e94611676565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1890612d68565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601454905090565b6000611049610f93611676565b84611044856040518060600160405280602581526020016137f66025913960076000610fbd611676565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ca49092919063ffffffff16565b61167e565b6001905092915050565b6000611067611060611676565b8484611847565b506001905092915050565b61107a611676565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fe90612d68565b60405180910390fd5b600284111561114b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114290612dfa565b60405180910390fd5b600883111561118f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118690612e8c565b60405180910390fd5b60028211156111d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ca90612f1e565b60405180910390fd5b6008811115611217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120e90612fb0565b60405180910390fd5b83600a8190555082600b8190555061123c600b54600a54611d5290919063ffffffff16565b60108190555081600c8190555080600d81905550611267600d54600c54611d5290919063ffffffff16565b601181905550611284600c54600a54611d5290919063ffffffff16565b600e819055506112a1600d54600b54611d5290919063ffffffff16565b600f819055506112be600f54600e54611d5290919063ffffffff16565b60128190555050505050565b6112d2611676565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135690612d68565b60405180910390fd5b80601660156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516113a891906129a0565b60405180910390a150565b600b5481565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b60168054906101000a900460ff1681565b600a5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60105481565b6114bd611676565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461154a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154190612d68565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b090613042565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e4906130d4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361175c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175390613166565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161183a9190612a44565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036118b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ae906131f8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191d9061328a565b60405180910390fd5b601660149054906101000a900460ff161561194d57611946848484611db0565b9050611c9d565b600061195830610d7c565b90506000601454821015905080801561197e5750601660149054906101000a900460ff16155b80156119d45750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119ec5750601660159054906101000a900460ff165b15611a145760168054906101000a900460ff1615611a0a5760145491505b611a1382611f83565b5b611a9d846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ca49092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b835750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b9757611b92878787612100565b611b99565b845b9050611bed81600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5290919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c8d9190612a44565b60405180910390a3600193505050505b9392505050565b6000838311158290611cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce3919061288a565b60405180910390fd5b5060008385611cfb91906132d9565b9050809150509392505050565b6000611d4a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ca4565b905092915050565b6000808284611d61919061330d565b905083811015611da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9d9061338d565b60405180910390fd5b8091505092915050565b6000611e3b826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ca49092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ed082600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5290919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f709190612a44565b60405180910390a3600190509392505050565b6001601660146101000a81548160ff0219169083151502179055506000611fdc6002611fce601254611fc0600e548761232790919063ffffffff16565b6123a190919063ffffffff16565b6123a190919063ffffffff16565b90506000611ff38284611d0890919063ffffffff16565b9050611ffe816123eb565b6000479050600061202f61201e6002600e546123a190919063ffffffff16565b601254611d0890919063ffffffff16565b9050600061206d600261205f84612051600e548861232790919063ffffffff16565b6123a190919063ffffffff16565b6123a190919063ffffffff16565b905060006120848285611d0890919063ffffffff16565b905060008111156120bc576120bb600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612667565b5b6000821180156120cc5750600086115b156120dc576120db86836126b2565b5b5050505050506000601660146101000a81548160ff02191690831515021790555050565b60008060009050600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156121885761218160646121736010548661232790919063ffffffff16565b6123a190919063ffffffff16565b9050612206565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156122055761220260646121f46011548661232790919063ffffffff16565b6123a190919063ffffffff16565b90505b5b600081111561230a5761226181600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5290919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123019190612a44565b60405180910390a35b61231d8184611d0890919063ffffffff16565b9150509392505050565b6000808303612339576000905061239b565b6000828461234791906133ad565b9050828482612356919061341e565b14612396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238d906134c1565b60405180910390fd5b809150505b92915050565b60006123e383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612797565b905092915050565b6000600267ffffffffffffffff811115612408576124076134e1565b5b6040519080825280602002602001820160405280156124365781602001602082028036833780820191505090505b509050308160008151811061244e5761244d613510565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125199190613554565b8160018151811061252d5761252c613510565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061259430601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461167e565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016125f895949392919061367a565b600060405180830381600087803b15801561261257600080fd5b505af1158015612626573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161265b9291906136d4565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156126ad573d6000803e3d6000fd5b505050565b6126df30601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461167e565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061272b610dd1565b426040518863ffffffff1660e01b815260040161274d96959493929190613704565b60606040518083038185885af115801561276b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612790919061377a565b5050505050565b600080831182906127de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d5919061288a565b60405180910390fd5b50600083856127ed919061341e565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612834578082015181840152602081019050612819565b60008484015250505050565b6000601f19601f8301169050919050565b600061285c826127fa565b6128668185612805565b9350612876818560208601612816565b61287f81612840565b840191505092915050565b600060208201905081810360008301526128a48184612851565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128dc826128b1565b9050919050565b6128ec816128d1565b81146128f757600080fd5b50565b600081359050612909816128e3565b92915050565b6000819050919050565b6129228161290f565b811461292d57600080fd5b50565b60008135905061293f81612919565b92915050565b6000806040838503121561295c5761295b6128ac565b5b600061296a858286016128fa565b925050602061297b85828601612930565b9150509250929050565b60008115159050919050565b61299a81612985565b82525050565b60006020820190506129b56000830184612991565b92915050565b6000819050919050565b60006129e06129db6129d6846128b1565b6129bb565b6128b1565b9050919050565b60006129f2826129c5565b9050919050565b6000612a04826129e7565b9050919050565b612a14816129f9565b82525050565b6000602082019050612a2f6000830184612a0b565b92915050565b612a3e8161290f565b82525050565b6000602082019050612a596000830184612a35565b92915050565b600080600060608486031215612a7857612a776128ac565b5b6000612a86868287016128fa565b9350506020612a97868287016128fa565b9250506040612aa886828701612930565b9150509250925092565b612abb816128d1565b82525050565b6000602082019050612ad66000830184612ab2565b92915050565b600060ff82169050919050565b612af281612adc565b82525050565b6000602082019050612b0d6000830184612ae9565b92915050565b600060208284031215612b2957612b286128ac565b5b6000612b37848285016128fa565b91505092915050565b612b4981612985565b8114612b5457600080fd5b50565b600081359050612b6681612b40565b92915050565b60008060408385031215612b8357612b826128ac565b5b6000612b91858286016128fa565b9250506020612ba285828601612b57565b9150509250929050565b60008060008060808587031215612bc657612bc56128ac565b5b6000612bd487828801612930565b9450506020612be587828801612930565b9350506040612bf687828801612930565b9250506060612c0787828801612930565b91505092959194509250565b600060208284031215612c2957612c286128ac565b5b6000612c3784828501612b57565b91505092915050565b6000612c4b826128b1565b9050919050565b612c5b81612c40565b82525050565b6000602082019050612c766000830184612c52565b92915050565b60008060408385031215612c9357612c926128ac565b5b6000612ca1858286016128fa565b9250506020612cb2858286016128fa565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612d0357607f821691505b602082108103612d1657612d15612cbc565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612d52602083612805565b9150612d5d82612d1c565b602082019050919050565b60006020820190508181036000830152612d8181612d45565b9050919050565b7f427579206c6971756964697479205461782063616e206f6e6c7920626520657160008201527f75616c20746f283d29206f72206c657373207468616e20322500000000000000602082015250565b6000612de4603983612805565b9150612def82612d88565b604082019050919050565b60006020820190508181036000830152612e1381612dd7565b9050919050565b7f427579204d61726b6574696e67205461782063616e206f6e6c7920626520657160008201527f75616c20746f283d29206f72206c657373207468616e20382500000000000000602082015250565b6000612e76603983612805565b9150612e8182612e1a565b604082019050919050565b60006020820190508181036000830152612ea581612e69565b9050919050565b7f53656c6c206c6971756964697479205461782063616e206f6e6c79206265206560008201527f7175616c20746f283d29206f72206c657373207468616e203225000000000000602082015250565b6000612f08603a83612805565b9150612f1382612eac565b604082019050919050565b60006020820190508181036000830152612f3781612efb565b9050919050565b7f53656c6c204d61726b6574696e67205461782063616e206f6e6c79206265206560008201527f7175616c20746f283d29206f72206c657373207468616e203825000000000000602082015250565b6000612f9a603a83612805565b9150612fa582612f3e565b604082019050919050565b60006020820190508181036000830152612fc981612f8d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061302c602683612805565b915061303782612fd0565b604082019050919050565b6000602082019050818103600083015261305b8161301f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006130be602483612805565b91506130c982613062565b604082019050919050565b600060208201905081810360008301526130ed816130b1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613150602283612805565b915061315b826130f4565b604082019050919050565b6000602082019050818103600083015261317f81613143565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006131e2602583612805565b91506131ed82613186565b604082019050919050565b60006020820190508181036000830152613211816131d5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613274602383612805565b915061327f82613218565b604082019050919050565b600060208201905081810360008301526132a381613267565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132e48261290f565b91506132ef8361290f565b9250828203905081811115613307576133066132aa565b5b92915050565b60006133188261290f565b91506133238361290f565b925082820190508082111561333b5761333a6132aa565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613377601b83612805565b915061338282613341565b602082019050919050565b600060208201905081810360008301526133a68161336a565b9050919050565b60006133b88261290f565b91506133c38361290f565b92508282026133d18161290f565b915082820484148315176133e8576133e76132aa565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006134298261290f565b91506134348361290f565b925082613444576134436133ef565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006134ab602183612805565b91506134b68261344f565b604082019050919050565b600060208201905081810360008301526134da8161349e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061354e816128e3565b92915050565b60006020828403121561356a576135696128ac565b5b60006135788482850161353f565b91505092915050565b6000819050919050565b60006135a66135a161359c84613581565b6129bb565b61290f565b9050919050565b6135b68161358b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135f1816128d1565b82525050565b600061360383836135e8565b60208301905092915050565b6000602082019050919050565b6000613627826135bc565b61363181856135c7565b935061363c836135d8565b8060005b8381101561366d57815161365488826135f7565b975061365f8361360f565b925050600181019050613640565b5085935050505092915050565b600060a08201905061368f6000830188612a35565b61369c60208301876135ad565b81810360408301526136ae818661361c565b90506136bd6060830185612ab2565b6136ca6080830184612a35565b9695505050505050565b60006040820190506136e96000830185612a35565b81810360208301526136fb818461361c565b90509392505050565b600060c0820190506137196000830189612ab2565b6137266020830188612a35565b61373360408301876135ad565b61374060608301866135ad565b61374d6080830185612ab2565b61375a60a0830184612a35565b979650505050505050565b60008151905061377481612919565b92915050565b600080600060608486031215613793576137926128ac565b5b60006137a186828701613765565b93505060206137b286828701613765565b92505060406137c386828701613765565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122026925e7cd27db8b295f93e5421a4393994f7a90220d955b45a65565d38ba71b764736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101fd5760003560e01c806395d89b411161010d578063c816841b116100a0578063da00097d1161006f578063da00097d1461074a578063dc44b6a014610775578063dd62ed3e146107a0578063f0cd1dac146107dd578063f2fde38b1461080857610204565b8063c816841b1461069e578063c8607952146106c9578063d158272d146106f4578063d2d7ad831461071f57610204565b8063a9059cbb116100dc578063a9059cbb146105e4578063c311600014610621578063c49b9a801461064a578063c5d241891461067357610204565b806395d89b41146105285780639d8f770614610553578063a073d37f1461057c578063a457c2d7146105a757610204565b806339509351116101905780636e4ee8111161015f5780636e4ee8111461045357806370a082311461046a57806382eefb43146104a757806388790a68146104d25780638da5cb5b146104fd57610204565b806339509351146103855780634a74bb02146103c25780634cb80fd5146103ed5780635342acb41461041657610204565b806323b872dd116101cc57806323b872dd146102c757806327c8f835146103045780632b112e491461032f578063313ce5671461035a57610204565b806306fdde0314610209578063095ea7b3146102345780631694505e1461027157806318160ddd1461029c57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e610831565b60405161022b919061288a565b60405180910390f35b34801561024057600080fd5b5061025b60048036038101906102569190612945565b6108c3565b60405161026891906129a0565b60405180910390f35b34801561027d57600080fd5b506102866108e1565b6040516102939190612a1a565b60405180910390f35b3480156102a857600080fd5b506102b1610907565b6040516102be9190612a44565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e99190612a5f565b610911565b6040516102fb91906129a0565b60405180910390f35b34801561031057600080fd5b506103196109eb565b6040516103269190612ac1565b60405180910390f35b34801561033b57600080fd5b50610344610a0f565b6040516103519190612a44565b60405180910390f35b34801561036657600080fd5b5061036f610a53565b60405161037c9190612af8565b60405180910390f35b34801561039157600080fd5b506103ac60048036038101906103a79190612945565b610a6a565b6040516103b991906129a0565b60405180910390f35b3480156103ce57600080fd5b506103d7610b1d565b6040516103e491906129a0565b60405180910390f35b3480156103f957600080fd5b50610414600480360381019061040f9190612b13565b610b30565b005b34801561042257600080fd5b5061043d60048036038101906104389190612b13565b610c09565b60405161044a91906129a0565b60405180910390f35b34801561045f57600080fd5b50610468610c29565b005b34801561047657600080fd5b50610491600480360381019061048c9190612b13565b610d7c565b60405161049e9190612a44565b60405180910390f35b3480156104b357600080fd5b506104bc610dc5565b6040516104c99190612a44565b60405180910390f35b3480156104de57600080fd5b506104e7610dcb565b6040516104f49190612a44565b60405180910390f35b34801561050957600080fd5b50610512610dd1565b60405161051f9190612ac1565b60405180910390f35b34801561053457600080fd5b5061053d610dfa565b60405161054a919061288a565b60405180910390f35b34801561055f57600080fd5b5061057a60048036038101906105759190612b6c565b610e8c565b005b34801561058857600080fd5b50610591610f7c565b60405161059e9190612a44565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c99190612945565b610f86565b6040516105db91906129a0565b60405180910390f35b3480156105f057600080fd5b5061060b60048036038101906106069190612945565b611053565b60405161061891906129a0565b60405180910390f35b34801561062d57600080fd5b5061064860048036038101906106439190612bac565b611072565b005b34801561065657600080fd5b50610671600480360381019061066c9190612c13565b6112ca565b005b34801561067f57600080fd5b506106886113b3565b6040516106959190612a44565b60405180910390f35b3480156106aa57600080fd5b506106b36113b9565b6040516106c09190612ac1565b60405180910390f35b3480156106d557600080fd5b506106de6113df565b6040516106eb9190612a44565b60405180910390f35b34801561070057600080fd5b506107096113e5565b6040516107169190612c61565b60405180910390f35b34801561072b57600080fd5b5061073461140b565b6040516107419190612a44565b60405180910390f35b34801561075657600080fd5b5061075f611411565b60405161076c91906129a0565b60405180910390f35b34801561078157600080fd5b5061078a611422565b6040516107979190612a44565b60405180910390f35b3480156107ac57600080fd5b506107c760048036038101906107c29190612c7c565b611428565b6040516107d49190612a44565b60405180910390f35b3480156107e957600080fd5b506107f26114af565b6040516107ff9190612a44565b60405180910390f35b34801561081457600080fd5b5061082f600480360381019061082a9190612b13565b6114b5565b005b60606003805461084090612ceb565b80601f016020809104026020016040519081016040528092919081815260200182805461086c90612ceb565b80156108b95780601f1061088e576101008083540402835291602001916108b9565b820191906000526020600020905b81548152906001019060200180831161089c57829003601f168201915b5050505050905090565b60006108d76108d0611676565b848461167e565b6001905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601354905090565b600061091e848484611847565b506109e08461092b611676565b6109db856040518060600160405280602881526020016137ce60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610991611676565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ca49092919063ffffffff16565b61167e565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b6000610a4e610a3d7f000000000000000000000000000000000000000000000000000000000000dead610d7c565b601354611d0890919063ffffffff16565b905090565b6000600560009054906101000a900460ff16905090565b6000610b13610a77611676565b84610b0e8560076000610a88611676565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5290919063ffffffff16565b61167e565b6001905092915050565b601660159054906101000a900460ff1681565b610b38611676565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbc90612d68565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60086020528060005260406000206000915054906101000a900460ff1681565b610c31611676565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb590612d68565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60115481565b600c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e0990612ceb565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3590612ceb565b8015610e825780601f10610e5757610100808354040283529160200191610e82565b820191906000526020600020905b815481529060010190602001808311610e6557829003601f168201915b5050505050905090565b610e94611676565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1890612d68565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601454905090565b6000611049610f93611676565b84611044856040518060600160405280602581526020016137f66025913960076000610fbd611676565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ca49092919063ffffffff16565b61167e565b6001905092915050565b6000611067611060611676565b8484611847565b506001905092915050565b61107a611676565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fe90612d68565b60405180910390fd5b600284111561114b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114290612dfa565b60405180910390fd5b600883111561118f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118690612e8c565b60405180910390fd5b60028211156111d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ca90612f1e565b60405180910390fd5b6008811115611217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120e90612fb0565b60405180910390fd5b83600a8190555082600b8190555061123c600b54600a54611d5290919063ffffffff16565b60108190555081600c8190555080600d81905550611267600d54600c54611d5290919063ffffffff16565b601181905550611284600c54600a54611d5290919063ffffffff16565b600e819055506112a1600d54600b54611d5290919063ffffffff16565b600f819055506112be600f54600e54611d5290919063ffffffff16565b60128190555050505050565b6112d2611676565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135690612d68565b60405180910390fd5b80601660156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516113a891906129a0565b60405180910390a150565b600b5481565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b60168054906101000a900460ff1681565b600a5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60105481565b6114bd611676565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461154a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154190612d68565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b090613042565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e4906130d4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361175c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175390613166565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161183a9190612a44565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036118b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ae906131f8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191d9061328a565b60405180910390fd5b601660149054906101000a900460ff161561194d57611946848484611db0565b9050611c9d565b600061195830610d7c565b90506000601454821015905080801561197e5750601660149054906101000a900460ff16155b80156119d45750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119ec5750601660159054906101000a900460ff165b15611a145760168054906101000a900460ff1615611a0a5760145491505b611a1382611f83565b5b611a9d846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ca49092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b835750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b9757611b92878787612100565b611b99565b845b9050611bed81600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5290919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c8d9190612a44565b60405180910390a3600193505050505b9392505050565b6000838311158290611cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce3919061288a565b60405180910390fd5b5060008385611cfb91906132d9565b9050809150509392505050565b6000611d4a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ca4565b905092915050565b6000808284611d61919061330d565b905083811015611da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9d9061338d565b60405180910390fd5b8091505092915050565b6000611e3b826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ca49092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ed082600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5290919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f709190612a44565b60405180910390a3600190509392505050565b6001601660146101000a81548160ff0219169083151502179055506000611fdc6002611fce601254611fc0600e548761232790919063ffffffff16565b6123a190919063ffffffff16565b6123a190919063ffffffff16565b90506000611ff38284611d0890919063ffffffff16565b9050611ffe816123eb565b6000479050600061202f61201e6002600e546123a190919063ffffffff16565b601254611d0890919063ffffffff16565b9050600061206d600261205f84612051600e548861232790919063ffffffff16565b6123a190919063ffffffff16565b6123a190919063ffffffff16565b905060006120848285611d0890919063ffffffff16565b905060008111156120bc576120bb600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612667565b5b6000821180156120cc5750600086115b156120dc576120db86836126b2565b5b5050505050506000601660146101000a81548160ff02191690831515021790555050565b60008060009050600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156121885761218160646121736010548661232790919063ffffffff16565b6123a190919063ffffffff16565b9050612206565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156122055761220260646121f46011548661232790919063ffffffff16565b6123a190919063ffffffff16565b90505b5b600081111561230a5761226181600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5290919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123019190612a44565b60405180910390a35b61231d8184611d0890919063ffffffff16565b9150509392505050565b6000808303612339576000905061239b565b6000828461234791906133ad565b9050828482612356919061341e565b14612396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238d906134c1565b60405180910390fd5b809150505b92915050565b60006123e383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612797565b905092915050565b6000600267ffffffffffffffff811115612408576124076134e1565b5b6040519080825280602002602001820160405280156124365781602001602082028036833780820191505090505b509050308160008151811061244e5761244d613510565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125199190613554565b8160018151811061252d5761252c613510565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061259430601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461167e565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016125f895949392919061367a565b600060405180830381600087803b15801561261257600080fd5b505af1158015612626573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161265b9291906136d4565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156126ad573d6000803e3d6000fd5b505050565b6126df30601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461167e565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061272b610dd1565b426040518863ffffffff1660e01b815260040161274d96959493929190613704565b60606040518083038185885af115801561276b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612790919061377a565b5050505050565b600080831182906127de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d5919061288a565b60405180910390fd5b50600083856127ed919061341e565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612834578082015181840152602081019050612819565b60008484015250505050565b6000601f19601f8301169050919050565b600061285c826127fa565b6128668185612805565b9350612876818560208601612816565b61287f81612840565b840191505092915050565b600060208201905081810360008301526128a48184612851565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128dc826128b1565b9050919050565b6128ec816128d1565b81146128f757600080fd5b50565b600081359050612909816128e3565b92915050565b6000819050919050565b6129228161290f565b811461292d57600080fd5b50565b60008135905061293f81612919565b92915050565b6000806040838503121561295c5761295b6128ac565b5b600061296a858286016128fa565b925050602061297b85828601612930565b9150509250929050565b60008115159050919050565b61299a81612985565b82525050565b60006020820190506129b56000830184612991565b92915050565b6000819050919050565b60006129e06129db6129d6846128b1565b6129bb565b6128b1565b9050919050565b60006129f2826129c5565b9050919050565b6000612a04826129e7565b9050919050565b612a14816129f9565b82525050565b6000602082019050612a2f6000830184612a0b565b92915050565b612a3e8161290f565b82525050565b6000602082019050612a596000830184612a35565b92915050565b600080600060608486031215612a7857612a776128ac565b5b6000612a86868287016128fa565b9350506020612a97868287016128fa565b9250506040612aa886828701612930565b9150509250925092565b612abb816128d1565b82525050565b6000602082019050612ad66000830184612ab2565b92915050565b600060ff82169050919050565b612af281612adc565b82525050565b6000602082019050612b0d6000830184612ae9565b92915050565b600060208284031215612b2957612b286128ac565b5b6000612b37848285016128fa565b91505092915050565b612b4981612985565b8114612b5457600080fd5b50565b600081359050612b6681612b40565b92915050565b60008060408385031215612b8357612b826128ac565b5b6000612b91858286016128fa565b9250506020612ba285828601612b57565b9150509250929050565b60008060008060808587031215612bc657612bc56128ac565b5b6000612bd487828801612930565b9450506020612be587828801612930565b9350506040612bf687828801612930565b9250506060612c0787828801612930565b91505092959194509250565b600060208284031215612c2957612c286128ac565b5b6000612c3784828501612b57565b91505092915050565b6000612c4b826128b1565b9050919050565b612c5b81612c40565b82525050565b6000602082019050612c766000830184612c52565b92915050565b60008060408385031215612c9357612c926128ac565b5b6000612ca1858286016128fa565b9250506020612cb2858286016128fa565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612d0357607f821691505b602082108103612d1657612d15612cbc565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612d52602083612805565b9150612d5d82612d1c565b602082019050919050565b60006020820190508181036000830152612d8181612d45565b9050919050565b7f427579206c6971756964697479205461782063616e206f6e6c7920626520657160008201527f75616c20746f283d29206f72206c657373207468616e20322500000000000000602082015250565b6000612de4603983612805565b9150612def82612d88565b604082019050919050565b60006020820190508181036000830152612e1381612dd7565b9050919050565b7f427579204d61726b6574696e67205461782063616e206f6e6c7920626520657160008201527f75616c20746f283d29206f72206c657373207468616e20382500000000000000602082015250565b6000612e76603983612805565b9150612e8182612e1a565b604082019050919050565b60006020820190508181036000830152612ea581612e69565b9050919050565b7f53656c6c206c6971756964697479205461782063616e206f6e6c79206265206560008201527f7175616c20746f283d29206f72206c657373207468616e203225000000000000602082015250565b6000612f08603a83612805565b9150612f1382612eac565b604082019050919050565b60006020820190508181036000830152612f3781612efb565b9050919050565b7f53656c6c204d61726b6574696e67205461782063616e206f6e6c79206265206560008201527f7175616c20746f283d29206f72206c657373207468616e203825000000000000602082015250565b6000612f9a603a83612805565b9150612fa582612f3e565b604082019050919050565b60006020820190508181036000830152612fc981612f8d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061302c602683612805565b915061303782612fd0565b604082019050919050565b6000602082019050818103600083015261305b8161301f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006130be602483612805565b91506130c982613062565b604082019050919050565b600060208201905081810360008301526130ed816130b1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613150602283612805565b915061315b826130f4565b604082019050919050565b6000602082019050818103600083015261317f81613143565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006131e2602583612805565b91506131ed82613186565b604082019050919050565b60006020820190508181036000830152613211816131d5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613274602383612805565b915061327f82613218565b604082019050919050565b600060208201905081810360008301526132a381613267565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132e48261290f565b91506132ef8361290f565b9250828203905081811115613307576133066132aa565b5b92915050565b60006133188261290f565b91506133238361290f565b925082820190508082111561333b5761333a6132aa565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613377601b83612805565b915061338282613341565b602082019050919050565b600060208201905081810360008301526133a68161336a565b9050919050565b60006133b88261290f565b91506133c38361290f565b92508282026133d18161290f565b915082820484148315176133e8576133e76132aa565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006134298261290f565b91506134348361290f565b925082613444576134436133ef565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006134ab602183612805565b91506134b68261344f565b604082019050919050565b600060208201905081810360008301526134da8161349e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061354e816128e3565b92915050565b60006020828403121561356a576135696128ac565b5b60006135788482850161353f565b91505092915050565b6000819050919050565b60006135a66135a161359c84613581565b6129bb565b61290f565b9050919050565b6135b68161358b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135f1816128d1565b82525050565b600061360383836135e8565b60208301905092915050565b6000602082019050919050565b6000613627826135bc565b61363181856135c7565b935061363c836135d8565b8060005b8381101561366d57815161365488826135f7565b975061365f8361360f565b925050600181019050613640565b5085935050505092915050565b600060a08201905061368f6000830188612a35565b61369c60208301876135ad565b81810360408301526136ae818661361c565b90506136bd6060830185612ab2565b6136ca6080830184612a35565b9695505050505050565b60006040820190506136e96000830185612a35565b81810360208301526136fb818461361c565b90509392505050565b600060c0820190506137196000830189612ab2565b6137266020830188612a35565b61373360408301876135ad565b61374060608301866135ad565b61374d6080830185612ab2565b61375a60a0830184612a35565b979650505050505050565b60008151905061377481612919565b92915050565b600080600060608486031215613793576137926128ac565b5b60006137a186828701613765565b93505060206137b286828701613765565b92505060406137c386828701613765565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122026925e7cd27db8b295f93e5421a4393994f7a90220d955b45a65565d38ba71b764736f6c63430008130033

Deployed Bytecode Sourcemap

13759:11645:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16725:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18021:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15088:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17002:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20680:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14133:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20143:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16911:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17390:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15203:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19677:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14354:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5520:148;;;;;;;;;;;;;:::i;:::-;;17110:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14787:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14556:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5295:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16816:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19824:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17893:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17616:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20505:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18535:1134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19958:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14508:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15136:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14599:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14006:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14990:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15250:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14466:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17237:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14730:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5676:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16725:83;16762:13;16795:5;16788:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16725:83;:::o;18021:161::-;18096:4;18113:39;18122:12;:10;:12::i;:::-;18136:7;18145:6;18113:8;:39::i;:::-;18170:4;18163:11;;18021:161;;;;:::o;15088:41::-;;;;;;;;;;;;;:::o;17002:100::-;17055:7;17082:12;;17075:19;;17002:100;:::o;20680:313::-;20778:4;20795:36;20805:6;20813:9;20824:6;20795:9;:36::i;:::-;;20842:121;20851:6;20859:12;:10;:12::i;:::-;20873:89;20911:6;20873:89;;;;;;;;;;;;;;;;;:11;:19;20885:6;20873:19;;;;;;;;;;;;;;;:33;20893:12;:10;:12::i;:::-;20873:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;20842:8;:121::i;:::-;20981:4;20974:11;;20680:313;;;;;:::o;14133:81::-;;;:::o;20143:128::-;20196:7;20223:40;20240:22;20250:11;20240:9;:22::i;:::-;20223:12;;:16;;:40;;;;:::i;:::-;20216:47;;20143:128;:::o;16911:83::-;16952:5;16977:9;;;;;;;;;;;16970:16;;16911:83;:::o;17390:218::-;17478:4;17495:83;17504:12;:10;:12::i;:::-;17518:7;17527:50;17566:10;17527:11;:25;17539:12;:10;:12::i;:::-;17527:25;;;;;;;;;;;;;;;:34;17553:7;17527:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;17495:8;:83::i;:::-;17596:4;17589:11;;17390:218;;;;:::o;15203:40::-;;;;;;;;;;;;;:::o;19677:139::-;5439:12;:10;:12::i;:::-;5429:22;;:6;;;;;;;;;;:22;;;5421:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19797:10:::1;19764:22;;:44;;;;;;;;;;;;;;;;;;19677:139:::0;:::o;14354:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;5520:148::-;5439:12;:10;:12::i;:::-;5429:22;;:6;;;;;;;;;;:22;;;5421:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5627:1:::1;5590:40;;5611:6;::::0;::::1;;;;;;;;5590:40;;;;;;;;;;;;5658:1;5641:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5520:148::o:0;17110:119::-;17176:7;17203:9;:18;17213:7;17203:18;;;;;;;;;;;;;;;;17196:25;;17110:119;;;:::o;14787:37::-;;;;:::o;14556:36::-;;;;:::o;5295:79::-;5333:7;5360:6;;;;;;;;;;;5353:13;;5295:79;:::o;16816:87::-;16855:13;16888:7;16881:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16816:87;:::o;19824:126::-;5439:12;:10;:12::i;:::-;5429:22;;:6;;;;;;;;;;:22;;;5421:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19936:6:::1;19908:17;:25;19926:6;19908:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;19824:126:::0;;:::o;17893:120::-;17955:7;17982:23;;17975:30;;17893:120;:::o;17616:269::-;17709:4;17726:129;17735:12;:10;:12::i;:::-;17749:7;17758:96;17797:15;17758:96;;;;;;;;;;;;;;;;;:11;:25;17770:12;:10;:12::i;:::-;17758:25;;;;;;;;;;;;;;;:34;17784:7;17758:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;17726:8;:129::i;:::-;17873:4;17866:11;;17616:269;;;;:::o;20505:167::-;20583:4;20600:42;20610:12;:10;:12::i;:::-;20624:9;20635:6;20600:9;:42::i;:::-;;20660:4;20653:11;;20505:167;;;;:::o;18535:1134::-;5439:12;:10;:12::i;:::-;5429:22;;:6;;;;;;;;;;:22;;;5421:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18735:1:::1;18713:18;:23;;18705:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;18839:1;18817:18;:23;;18809:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;18944:1;18921:19;:24;;18913:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;19050:1;19027:19;:24;;19019:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;19144:18;19125:16;:37;;;;19192:18;19173:16;:37;;;;19241:38;19262:16;;19241;;:20;;:38;;;;:::i;:::-;19221:17;:58;;;;19310:19;19290:17;:39;;;;19360:19;19340:17;:39;;;;19411:40;19433:17;;19411;;:21;;:40;;;;:::i;:::-;19390:18;:61;;;;19480:39;19501:17;;19480:16;;:20;;:39;;;;:::i;:::-;19462:15;:57;;;;19548:39;19569:17;;19548:16;;:20;;:39;;;;:::i;:::-;19530:15;:57;;;;19625:36;19645:15;;19625;;:19;;:36;;;;:::i;:::-;19598:24;:63;;;;18535:1134:::0;;;;:::o;19958:171::-;5439:12;:10;:12::i;:::-;5429:22;;:6;;;;;;;;;;:22;;;5421:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20059:8:::1;20035:21;;:32;;;;;;;;;;;;;;;;;;20083:38;20112:8;20083:38;;;;;;:::i;:::-;;;;;;;;19958:171:::0;:::o;14508:35::-;;;;:::o;15136:26::-;;;;;;;;;;;;;:::o;14599:36::-;;;;:::o;14006:99::-;;;;;;;;;;;;;:::o;14990:60::-;;;;:::o;15250:45::-;;;;;;;;;;;;:::o;14466:35::-;;;;:::o;17237:143::-;17318:7;17345:11;:18;17357:5;17345:18;;;;;;;;;;;;;;;:27;17364:7;17345:27;;;;;;;;;;;;;;;;17338:34;;17237:143;;;;:::o;14730:36::-;;;;:::o;5676:244::-;5439:12;:10;:12::i;:::-;5429:22;;:6;;;;;;;;;;:22;;;5421:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5785:1:::1;5765:22;;:8;:22;;::::0;5757:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;5875:8;5846:38;;5867:6;::::0;::::1;;;;;;;;5846:38;;;;;;;;;;;;5904:8;5895:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;5676:244:::0;:::o;96:115::-;149:15;192:10;177:26;;96:115;:::o;18190:337::-;18300:1;18283:19;;:5;:19;;;18275:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18381:1;18362:21;;:7;:21;;;18354:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18465:6;18435:11;:18;18447:5;18435:18;;;;;;;;;;;;;;;:27;18454:7;18435:27;;;;;;;;;;;;;;;:36;;;;18503:7;18487:32;;18496:5;18487:32;;;18512:6;18487:32;;;;;;:::i;:::-;;;;;;;;18190:337;;;:::o;21001:1372::-;21088:4;21133:1;21115:20;;:6;:20;;;21107:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21217:1;21196:23;;:9;:23;;;21188:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21275:16;;;;;;;;;;;21272:1094;;;21325:41;21340:6;21348:9;21359:6;21325:14;:41::i;:::-;21318:48;;;;21272:1094;21431:28;21462:24;21480:4;21462:9;:24::i;:::-;21431:55;;21501:28;21556:23;;21532:20;:47;;21501:78;;21612:23;:44;;;;;21640:16;;;;;;;;;;;21639:17;21612:44;:69;;;;;21661:12;:20;21674:6;21661:20;;;;;;;;;;;;;;;;;;;;;;;;;21660:21;21612:69;:94;;;;;21685:21;;;;;;;;;;;21612:94;21608:305;;;21744:25;;;;;;;;;;21741:97;;;21815:23;;21792:46;;21741:97;21857:36;21872:20;21857:14;:36::i;:::-;21608:305;21949:53;21971:6;21949:53;;;;;;;;;;;;;;;;;:9;:17;21959:6;21949:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;21929:9;:17;21939:6;21929:17;;;;;;;;;;;;;;;:73;;;;22019:19;22042:17;:25;22060:6;22042:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;22071:17;:28;22089:9;22071:28;;;;;;;;;;;;;;;;;;;;;;;;;22042:57;22041:148;;22155:34;22163:6;22171:9;22182:6;22155:7;:34::i;:::-;22041:148;;;22146:6;22041:148;22019:170;;22229:37;22254:11;22229:9;:20;22239:9;22229:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;22206:9;:20;22216:9;22206:20;;;;;;;;;;;;;;;:60;;;;22305:9;22288:40;;22297:6;22288:40;;;22316:11;22288:40;;;;;;:::i;:::-;;;;;;;;22350:4;22343:11;;;;;21001:1372;;;;;;:::o;1378:192::-;1464:7;1497:1;1492;:6;;1500:12;1484:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1524:9;1540:1;1536;:5;;;;:::i;:::-;1524:17;;1561:1;1554:8;;;1378:192;;;;;:::o;1234:136::-;1292:7;1319:43;1323:1;1326;1319:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1312:50;;1234:136;;;;:::o;1045:181::-;1103:7;1123:9;1139:1;1135;:5;;;;:::i;:::-;1123:17;;1164:1;1159;:6;;1151:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1217:1;1210:8;;;1045:181;;;;:::o;22381:330::-;22474:4;22511:53;22533:6;22511:53;;;;;;;;;;;;;;;;;:9;:17;22521:6;22511:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;22491:9;:17;22501:6;22491:17;;;;;;;;;;;;;;;:73;;;;22598:32;22623:6;22598:9;:20;22608:9;22598:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;22575:9;:20;22585:9;22575:20;;;;;;;;;;;;;;;:55;;;;22663:9;22646:35;;22655:6;22646:35;;;22674:6;22646:35;;;;;;:::i;:::-;;;;;;;;22699:4;22692:11;;22381:330;;;;;:::o;22719:847::-;15737:4;15718:16;;:23;;;;;;;;;;;;;;;;;;22801:19:::1;22823:65;22886:1;22823:58;22856:24;;22823:28;22835:15;;22823:7;:11;;:28;;;;:::i;:::-;:32;;:58;;;;:::i;:::-;:62;;:65;;;;:::i;:::-;22801:87;;22899:21;22923:24;22935:11;22923:7;:11;;:24;;;;:::i;:::-;22899:48;;22960:31;22977:13;22960:16;:31::i;:::-;23002:22;23027:21;23002:46;;23061:19;23083:52;23112:22;23132:1;23112:15;;:19;;:22;;;;:::i;:::-;23083:24;;:28;;:52;;;;:::i;:::-;23061:74;;23156:26;23185:59;23242:1;23185:52;23225:11;23185:35;23204:15;;23185:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;23156:88;;23257:26;23286:38;23305:18;23286:14;:18;;:38;;;;:::i;:::-;23257:67;;23361:1;23340:18;:22;23337:104;;;23377:64;23398:22;;;;;;;;;;;23422:18;23377:20;:64::i;:::-;23337:104;23478:1;23457:18;:22;:41;;;;;23497:1;23483:11;:15;23457:41;23454:104;;;23513:45;23526:11;23539:18;23513:12;:45::i;:::-;23454:104;22780:786;;;;;;15783:5:::0;15764:16;;:24;;;;;;;;;;;;;;;;;;22719:847;:::o;24773:622::-;24859:7;24889:17;24909:1;24889:21;;24934:12;:20;24947:6;24934:20;;;;;;;;;;;;;;;;;;;;;;;;;24931:223;;;24983:38;25017:3;24983:29;24994:17;;24983:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;24971:50;;24931:223;;;25051:12;:23;25064:9;25051:23;;;;;;;;;;;;;;;;;;;;;;;;;25048:106;;;25103:39;25138:3;25103:30;25114:18;;25103:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;25091:51;;25048:106;24931:223;25189:1;25177:9;:13;25174:173;;;25234:39;25263:9;25234;:24;25252:4;25234:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;25207:9;:24;25225:4;25207:24;;;;;;;;;;;;;;;:66;;;;25318:4;25293:42;;25302:6;25293:42;;;25325:9;25293:42;;;;;;:::i;:::-;;;;;;;;25174:173;25366:21;25377:9;25366:6;:10;;:21;;;;:::i;:::-;25359:28;;;24773:622;;;;;:::o;1578:250::-;1636:7;1665:1;1660;:6;1656:47;;1690:1;1683:8;;;;1656:47;1715:9;1731:1;1727;:5;;;;:::i;:::-;1715:17;;1760:1;1755;1751;:5;;;;:::i;:::-;:10;1743:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1819:1;1812:8;;;1578:250;;;;;:::o;1836:132::-;1894:7;1921:39;1925:1;1928;1921:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1914:46;;1836:132;;;;:::o;23578:666::-;23704:21;23742:1;23728:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23704:40;;23773:4;23755;23760:1;23755:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23799:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23789:4;23794:1;23789:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;23834:62;23851:4;23866:15;;;;;;;;;;;23884:11;23834:8;:62::i;:::-;23935:15;;;;;;;;;;;:66;;;24016:11;24042:1;24086:4;24113;24149:15;23935:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24201:35;24218:11;24231:4;24201:35;;;;;;;:::i;:::-;;;;;;;;23633:611;23578:666;:::o;20279:126::-;20371:9;:18;;:26;20390:6;20371:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20279:126;;:::o;24252:513::-;24400:62;24417:4;24432:15;;;;;;;;;;;24450:11;24400:8;:62::i;:::-;24505:15;;;;;;;;;;;:31;;;24544:9;24577:4;24597:11;24623:1;24666;24709:7;:5;:7::i;:::-;24731:15;24505:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24252:513;;:::o;1976:278::-;2062:7;2094:1;2090;:5;2097:12;2082:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2121:9;2137:1;2133;:5;;;;:::i;:::-;2121:17;;2245:1;2238:8;;;1976:278;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:153::-;3869:9;3902:37;3933:5;3902:37;:::i;:::-;3889:50;;3792:153;;;:::o;3951:185::-;4065:64;4123:5;4065:64;:::i;:::-;4060:3;4053:77;3951:185;;:::o;4142:276::-;4262:4;4300:2;4289:9;4285:18;4277:26;;4313:98;4408:1;4397:9;4393:17;4384:6;4313:98;:::i;:::-;4142:276;;;;:::o;4424:118::-;4511:24;4529:5;4511:24;:::i;:::-;4506:3;4499:37;4424:118;;:::o;4548:222::-;4641:4;4679:2;4668:9;4664:18;4656:26;;4692:71;4760:1;4749:9;4745:17;4736:6;4692:71;:::i;:::-;4548:222;;;;:::o;4776:619::-;4853:6;4861;4869;4918:2;4906:9;4897:7;4893:23;4889:32;4886:119;;;4924:79;;:::i;:::-;4886:119;5044:1;5069:53;5114:7;5105:6;5094:9;5090:22;5069:53;:::i;:::-;5059:63;;5015:117;5171:2;5197:53;5242:7;5233:6;5222:9;5218:22;5197:53;:::i;:::-;5187:63;;5142:118;5299:2;5325:53;5370:7;5361:6;5350:9;5346:22;5325:53;:::i;:::-;5315:63;;5270:118;4776:619;;;;;:::o;5401:118::-;5488:24;5506:5;5488:24;:::i;:::-;5483:3;5476:37;5401:118;;:::o;5525:222::-;5618:4;5656:2;5645:9;5641:18;5633:26;;5669:71;5737:1;5726:9;5722:17;5713:6;5669:71;:::i;:::-;5525:222;;;;:::o;5753:86::-;5788:7;5828:4;5821:5;5817:16;5806:27;;5753:86;;;:::o;5845:112::-;5928:22;5944:5;5928:22;:::i;:::-;5923:3;5916:35;5845:112;;:::o;5963:214::-;6052:4;6090:2;6079:9;6075:18;6067:26;;6103:67;6167:1;6156:9;6152:17;6143:6;6103:67;:::i;:::-;5963:214;;;;:::o;6183:329::-;6242:6;6291:2;6279:9;6270:7;6266:23;6262:32;6259:119;;;6297:79;;:::i;:::-;6259:119;6417:1;6442:53;6487:7;6478:6;6467:9;6463:22;6442:53;:::i;:::-;6432:63;;6388:117;6183:329;;;;:::o;6518:116::-;6588:21;6603:5;6588:21;:::i;:::-;6581:5;6578:32;6568:60;;6624:1;6621;6614:12;6568:60;6518:116;:::o;6640:133::-;6683:5;6721:6;6708:20;6699:29;;6737:30;6761:5;6737:30;:::i;:::-;6640:133;;;;:::o;6779:468::-;6844:6;6852;6901:2;6889:9;6880:7;6876:23;6872:32;6869:119;;;6907:79;;:::i;:::-;6869:119;7027:1;7052:53;7097:7;7088:6;7077:9;7073:22;7052:53;:::i;:::-;7042:63;;6998:117;7154:2;7180:50;7222:7;7213:6;7202:9;7198:22;7180:50;:::i;:::-;7170:60;;7125:115;6779:468;;;;;:::o;7253:765::-;7339:6;7347;7355;7363;7412:3;7400:9;7391:7;7387:23;7383:33;7380:120;;;7419:79;;:::i;:::-;7380:120;7539:1;7564:53;7609:7;7600:6;7589:9;7585:22;7564:53;:::i;:::-;7554:63;;7510:117;7666:2;7692:53;7737:7;7728:6;7717:9;7713:22;7692:53;:::i;:::-;7682:63;;7637:118;7794:2;7820:53;7865:7;7856:6;7845:9;7841:22;7820:53;:::i;:::-;7810:63;;7765:118;7922:2;7948:53;7993:7;7984:6;7973:9;7969:22;7948:53;:::i;:::-;7938:63;;7893:118;7253:765;;;;;;;:::o;8024:323::-;8080:6;8129:2;8117:9;8108:7;8104:23;8100:32;8097:119;;;8135:79;;:::i;:::-;8097:119;8255:1;8280:50;8322:7;8313:6;8302:9;8298:22;8280:50;:::i;:::-;8270:60;;8226:114;8024:323;;;;:::o;8353:104::-;8398:7;8427:24;8445:5;8427:24;:::i;:::-;8416:35;;8353:104;;;:::o;8463:142::-;8566:32;8592:5;8566:32;:::i;:::-;8561:3;8554:45;8463:142;;:::o;8611:254::-;8720:4;8758:2;8747:9;8743:18;8735:26;;8771:87;8855:1;8844:9;8840:17;8831:6;8771:87;:::i;:::-;8611:254;;;;:::o;8871:474::-;8939:6;8947;8996:2;8984:9;8975:7;8971:23;8967:32;8964:119;;;9002:79;;:::i;:::-;8964:119;9122:1;9147:53;9192:7;9183:6;9172:9;9168:22;9147:53;:::i;:::-;9137:63;;9093:117;9249:2;9275:53;9320:7;9311:6;9300:9;9296:22;9275:53;:::i;:::-;9265:63;;9220:118;8871:474;;;;;:::o;9351:180::-;9399:77;9396:1;9389:88;9496:4;9493:1;9486:15;9520:4;9517:1;9510:15;9537:320;9581:6;9618:1;9612:4;9608:12;9598:22;;9665:1;9659:4;9655:12;9686:18;9676:81;;9742:4;9734:6;9730:17;9720:27;;9676:81;9804:2;9796:6;9793:14;9773:18;9770:38;9767:84;;9823:18;;:::i;:::-;9767:84;9588:269;9537:320;;;:::o;9863:182::-;10003:34;9999:1;9991:6;9987:14;9980:58;9863:182;:::o;10051:366::-;10193:3;10214:67;10278:2;10273:3;10214:67;:::i;:::-;10207:74;;10290:93;10379:3;10290:93;:::i;:::-;10408:2;10403:3;10399:12;10392:19;;10051:366;;;:::o;10423:419::-;10589:4;10627:2;10616:9;10612:18;10604:26;;10676:9;10670:4;10666:20;10662:1;10651:9;10647:17;10640:47;10704:131;10830:4;10704:131;:::i;:::-;10696:139;;10423:419;;;:::o;10848:244::-;10988:34;10984:1;10976:6;10972:14;10965:58;11057:27;11052:2;11044:6;11040:15;11033:52;10848:244;:::o;11098:366::-;11240:3;11261:67;11325:2;11320:3;11261:67;:::i;:::-;11254:74;;11337:93;11426:3;11337:93;:::i;:::-;11455:2;11450:3;11446:12;11439:19;;11098:366;;;:::o;11470:419::-;11636:4;11674:2;11663:9;11659:18;11651:26;;11723:9;11717:4;11713:20;11709:1;11698:9;11694:17;11687:47;11751:131;11877:4;11751:131;:::i;:::-;11743:139;;11470:419;;;:::o;11895:244::-;12035:34;12031:1;12023:6;12019:14;12012:58;12104:27;12099:2;12091:6;12087:15;12080:52;11895:244;:::o;12145:366::-;12287:3;12308:67;12372:2;12367:3;12308:67;:::i;:::-;12301:74;;12384:93;12473:3;12384:93;:::i;:::-;12502:2;12497:3;12493:12;12486:19;;12145:366;;;:::o;12517:419::-;12683:4;12721:2;12710:9;12706:18;12698:26;;12770:9;12764:4;12760:20;12756:1;12745:9;12741:17;12734:47;12798:131;12924:4;12798:131;:::i;:::-;12790:139;;12517:419;;;:::o;12942:245::-;13082:34;13078:1;13070:6;13066:14;13059:58;13151:28;13146:2;13138:6;13134:15;13127:53;12942:245;:::o;13193:366::-;13335:3;13356:67;13420:2;13415:3;13356:67;:::i;:::-;13349:74;;13432:93;13521:3;13432:93;:::i;:::-;13550:2;13545:3;13541:12;13534:19;;13193:366;;;:::o;13565:419::-;13731:4;13769:2;13758:9;13754:18;13746:26;;13818:9;13812:4;13808:20;13804:1;13793:9;13789:17;13782:47;13846:131;13972:4;13846:131;:::i;:::-;13838:139;;13565:419;;;:::o;13990:245::-;14130:34;14126:1;14118:6;14114:14;14107:58;14199:28;14194:2;14186:6;14182:15;14175:53;13990:245;:::o;14241:366::-;14383:3;14404:67;14468:2;14463:3;14404:67;:::i;:::-;14397:74;;14480:93;14569:3;14480:93;:::i;:::-;14598:2;14593:3;14589:12;14582:19;;14241:366;;;:::o;14613:419::-;14779:4;14817:2;14806:9;14802:18;14794:26;;14866:9;14860:4;14856:20;14852:1;14841:9;14837:17;14830:47;14894:131;15020:4;14894:131;:::i;:::-;14886:139;;14613:419;;;:::o;15038:225::-;15178:34;15174:1;15166:6;15162:14;15155:58;15247:8;15242:2;15234:6;15230:15;15223:33;15038:225;:::o;15269:366::-;15411:3;15432:67;15496:2;15491:3;15432:67;:::i;:::-;15425:74;;15508:93;15597:3;15508:93;:::i;:::-;15626:2;15621:3;15617:12;15610:19;;15269:366;;;:::o;15641:419::-;15807:4;15845:2;15834:9;15830:18;15822:26;;15894:9;15888:4;15884:20;15880:1;15869:9;15865:17;15858:47;15922:131;16048:4;15922:131;:::i;:::-;15914:139;;15641:419;;;:::o;16066:223::-;16206:34;16202:1;16194:6;16190:14;16183:58;16275:6;16270:2;16262:6;16258:15;16251:31;16066:223;:::o;16295:366::-;16437:3;16458:67;16522:2;16517:3;16458:67;:::i;:::-;16451:74;;16534:93;16623:3;16534:93;:::i;:::-;16652:2;16647:3;16643:12;16636:19;;16295:366;;;:::o;16667:419::-;16833:4;16871:2;16860:9;16856:18;16848:26;;16920:9;16914:4;16910:20;16906:1;16895:9;16891:17;16884:47;16948:131;17074:4;16948:131;:::i;:::-;16940:139;;16667:419;;;:::o;17092:221::-;17232:34;17228:1;17220:6;17216:14;17209:58;17301:4;17296:2;17288:6;17284:15;17277:29;17092:221;:::o;17319:366::-;17461:3;17482:67;17546:2;17541:3;17482:67;:::i;:::-;17475:74;;17558:93;17647:3;17558:93;:::i;:::-;17676:2;17671:3;17667:12;17660:19;;17319:366;;;:::o;17691:419::-;17857:4;17895:2;17884:9;17880:18;17872:26;;17944:9;17938:4;17934:20;17930:1;17919:9;17915:17;17908:47;17972:131;18098:4;17972:131;:::i;:::-;17964:139;;17691:419;;;:::o;18116:224::-;18256:34;18252:1;18244:6;18240:14;18233:58;18325:7;18320:2;18312:6;18308:15;18301:32;18116:224;:::o;18346:366::-;18488:3;18509:67;18573:2;18568:3;18509:67;:::i;:::-;18502:74;;18585:93;18674:3;18585:93;:::i;:::-;18703:2;18698:3;18694:12;18687:19;;18346:366;;;:::o;18718:419::-;18884:4;18922:2;18911:9;18907:18;18899:26;;18971:9;18965:4;18961:20;18957:1;18946:9;18942:17;18935:47;18999:131;19125:4;18999:131;:::i;:::-;18991:139;;18718:419;;;:::o;19143:222::-;19283:34;19279:1;19271:6;19267:14;19260:58;19352:5;19347:2;19339:6;19335:15;19328:30;19143:222;:::o;19371:366::-;19513:3;19534:67;19598:2;19593:3;19534:67;:::i;:::-;19527:74;;19610:93;19699:3;19610:93;:::i;:::-;19728:2;19723:3;19719:12;19712:19;;19371:366;;;:::o;19743:419::-;19909:4;19947:2;19936:9;19932:18;19924:26;;19996:9;19990:4;19986:20;19982:1;19971:9;19967:17;19960:47;20024:131;20150:4;20024:131;:::i;:::-;20016:139;;19743:419;;;:::o;20168:180::-;20216:77;20213:1;20206:88;20313:4;20310:1;20303:15;20337:4;20334:1;20327:15;20354:194;20394:4;20414:20;20432:1;20414:20;:::i;:::-;20409:25;;20448:20;20466:1;20448:20;:::i;:::-;20443:25;;20492:1;20489;20485:9;20477:17;;20516:1;20510:4;20507:11;20504:37;;;20521:18;;:::i;:::-;20504:37;20354:194;;;;:::o;20554:191::-;20594:3;20613:20;20631:1;20613:20;:::i;:::-;20608:25;;20647:20;20665:1;20647:20;:::i;:::-;20642:25;;20690:1;20687;20683:9;20676:16;;20711:3;20708:1;20705:10;20702:36;;;20718:18;;:::i;:::-;20702:36;20554:191;;;;:::o;20751:177::-;20891:29;20887:1;20879:6;20875:14;20868:53;20751:177;:::o;20934:366::-;21076:3;21097:67;21161:2;21156:3;21097:67;:::i;:::-;21090:74;;21173:93;21262:3;21173:93;:::i;:::-;21291:2;21286:3;21282:12;21275:19;;20934:366;;;:::o;21306:419::-;21472:4;21510:2;21499:9;21495:18;21487:26;;21559:9;21553:4;21549:20;21545:1;21534:9;21530:17;21523:47;21587:131;21713:4;21587:131;:::i;:::-;21579:139;;21306:419;;;:::o;21731:410::-;21771:7;21794:20;21812:1;21794:20;:::i;:::-;21789:25;;21828:20;21846:1;21828:20;:::i;:::-;21823:25;;21883:1;21880;21876:9;21905:30;21923:11;21905:30;:::i;:::-;21894:41;;22084:1;22075:7;22071:15;22068:1;22065:22;22045:1;22038:9;22018:83;21995:139;;22114:18;;:::i;:::-;21995:139;21779:362;21731:410;;;;:::o;22147:180::-;22195:77;22192:1;22185:88;22292:4;22289:1;22282:15;22316:4;22313:1;22306:15;22333:185;22373:1;22390:20;22408:1;22390:20;:::i;:::-;22385:25;;22424:20;22442:1;22424:20;:::i;:::-;22419:25;;22463:1;22453:35;;22468:18;;:::i;:::-;22453:35;22510:1;22507;22503:9;22498:14;;22333:185;;;;:::o;22524:220::-;22664:34;22660:1;22652:6;22648:14;22641:58;22733:3;22728:2;22720:6;22716:15;22709:28;22524:220;:::o;22750:366::-;22892:3;22913:67;22977:2;22972:3;22913:67;:::i;:::-;22906:74;;22989:93;23078:3;22989:93;:::i;:::-;23107:2;23102:3;23098:12;23091:19;;22750:366;;;:::o;23122:419::-;23288:4;23326:2;23315:9;23311:18;23303:26;;23375:9;23369:4;23365:20;23361:1;23350:9;23346:17;23339:47;23403:131;23529:4;23403:131;:::i;:::-;23395:139;;23122:419;;;:::o;23547:180::-;23595:77;23592:1;23585:88;23692:4;23689:1;23682:15;23716:4;23713:1;23706:15;23733:180;23781:77;23778:1;23771:88;23878:4;23875:1;23868:15;23902:4;23899:1;23892:15;23919:143;23976:5;24007:6;24001:13;23992:22;;24023:33;24050:5;24023:33;:::i;:::-;23919:143;;;;:::o;24068:351::-;24138:6;24187:2;24175:9;24166:7;24162:23;24158:32;24155:119;;;24193:79;;:::i;:::-;24155:119;24313:1;24338:64;24394:7;24385:6;24374:9;24370:22;24338:64;:::i;:::-;24328:74;;24284:128;24068:351;;;;:::o;24425:85::-;24470:7;24499:5;24488:16;;24425:85;;;:::o;24516:158::-;24574:9;24607:61;24625:42;24634:32;24660:5;24634:32;:::i;:::-;24625:42;:::i;:::-;24607:61;:::i;:::-;24594:74;;24516:158;;;:::o;24680:147::-;24775:45;24814:5;24775:45;:::i;:::-;24770:3;24763:58;24680:147;;:::o;24833:114::-;24900:6;24934:5;24928:12;24918:22;;24833:114;;;:::o;24953:184::-;25052:11;25086:6;25081:3;25074:19;25126:4;25121:3;25117:14;25102:29;;24953:184;;;;:::o;25143:132::-;25210:4;25233:3;25225:11;;25263:4;25258:3;25254:14;25246:22;;25143:132;;;:::o;25281:108::-;25358:24;25376:5;25358:24;:::i;:::-;25353:3;25346:37;25281:108;;:::o;25395:179::-;25464:10;25485:46;25527:3;25519:6;25485:46;:::i;:::-;25563:4;25558:3;25554:14;25540:28;;25395:179;;;;:::o;25580:113::-;25650:4;25682;25677:3;25673:14;25665:22;;25580:113;;;:::o;25729:732::-;25848:3;25877:54;25925:5;25877:54;:::i;:::-;25947:86;26026:6;26021:3;25947:86;:::i;:::-;25940:93;;26057:56;26107:5;26057:56;:::i;:::-;26136:7;26167:1;26152:284;26177:6;26174:1;26171:13;26152:284;;;26253:6;26247:13;26280:63;26339:3;26324:13;26280:63;:::i;:::-;26273:70;;26366:60;26419:6;26366:60;:::i;:::-;26356:70;;26212:224;26199:1;26196;26192:9;26187:14;;26152:284;;;26156:14;26452:3;26445:10;;25853:608;;;25729:732;;;;:::o;26467:831::-;26730:4;26768:3;26757:9;26753:19;26745:27;;26782:71;26850:1;26839:9;26835:17;26826:6;26782:71;:::i;:::-;26863:80;26939:2;26928:9;26924:18;26915:6;26863:80;:::i;:::-;26990:9;26984:4;26980:20;26975:2;26964:9;26960:18;26953:48;27018:108;27121:4;27112:6;27018:108;:::i;:::-;27010:116;;27136:72;27204:2;27193:9;27189:18;27180:6;27136:72;:::i;:::-;27218:73;27286:3;27275:9;27271:19;27262:6;27218:73;:::i;:::-;26467:831;;;;;;;;:::o;27304:483::-;27475:4;27513:2;27502:9;27498:18;27490:26;;27526:71;27594:1;27583:9;27579:17;27570:6;27526:71;:::i;:::-;27644:9;27638:4;27634:20;27629:2;27618:9;27614:18;27607:48;27672:108;27775:4;27766:6;27672:108;:::i;:::-;27664:116;;27304:483;;;;;:::o;27793:807::-;28042:4;28080:3;28069:9;28065:19;28057:27;;28094:71;28162:1;28151:9;28147:17;28138:6;28094:71;:::i;:::-;28175:72;28243:2;28232:9;28228:18;28219:6;28175:72;:::i;:::-;28257:80;28333:2;28322:9;28318:18;28309:6;28257:80;:::i;:::-;28347;28423:2;28412:9;28408:18;28399:6;28347:80;:::i;:::-;28437:73;28505:3;28494:9;28490:19;28481:6;28437:73;:::i;:::-;28520;28588:3;28577:9;28573:19;28564:6;28520:73;:::i;:::-;27793:807;;;;;;;;;:::o;28606:143::-;28663:5;28694:6;28688:13;28679:22;;28710:33;28737:5;28710:33;:::i;:::-;28606:143;;;;:::o;28755:663::-;28843:6;28851;28859;28908:2;28896:9;28887:7;28883:23;28879:32;28876:119;;;28914:79;;:::i;:::-;28876:119;29034:1;29059:64;29115:7;29106:6;29095:9;29091:22;29059:64;:::i;:::-;29049:74;;29005:128;29172:2;29198:64;29254:7;29245:6;29234:9;29230:22;29198:64;:::i;:::-;29188:74;;29143:129;29311:2;29337:64;29393:7;29384:6;29373:9;29369:22;29337:64;:::i;:::-;29327:74;;29282:129;28755:663;;;;;:::o

Swarm Source

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