ETH Price: $2,558.91 (+6.45%)
 

Overview

Max Total Supply

10,000 SUN

Holders

38

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
298.6665011 SUN

Value
$0.00
0xe84152d321b397bf81cb4a988a5842460f3c644f
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:
SunWukong

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.17;

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 tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
        this;
        return msg.data;
    }
}

library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly { size := extcodesize(account) }
        return size > 0;
    }
    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");
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

abstract contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        _owner = 0x9DDA777174318B013a8A769a1B4bBA8F497Cabe1;
        emit OwnershipTransferred(address(0), _owner);
    }
    function owner() public view virtual 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 Mint(address indexed sender, uint amount0, uint amount1);
    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 mint(address to) external returns (uint liquidity);
    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 SunWukong is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
    uint256 private constant MAX = ~uint256(0);
    uint8 private _decimals = 8;
    uint256 private _tTotal = 10000 * 10**_decimals;
    uint256 public _maxTxAmount = 1000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    string private _name = "Sun Wukong";
    string private _symbol = "SUN";

    uint256 public _taxFee = 30;
    uint256 private _previousTaxFee = _taxFee;
    uint256 public _developmentFee = 0;
    uint256 private _previousDevelopmentFee = _developmentFee;
    uint256 public _liquidityFee = 20;
    uint256 private _previousLiquidityFee = _liquidityFee;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    
    uint256 private numTokensSellToAddToLiquidity = 1000000000 * 10**18;
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    constructor () {
        _tOwned[owner()] = _tTotal;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        emit Transfer(address(0), owner(), _tTotal);
    }
    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 _tTotal;
    }
    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }
    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, 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 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 isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }
    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

   
    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already included");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }
   
  
    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }
    receive() external payable {}
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tDevelopment) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, tDevelopment, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity, tDevelopment);
    }
    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tDevelopment = calculateDevelopmentFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity).sub(tDevelopment);
        return (tTransferAmount, tFee, tLiquidity, tDevelopment);
    }
    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 tDevelopment, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rDevelopment = tDevelopment.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity).sub(rDevelopment);
        return (rAmount, rTransferAmount, rFee);
    }
    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }
    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_tOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_tOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate =  _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _tOwned[address(this)] = _tOwned[address(this)].add(rLiquidity);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }

    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_taxFee).div(
            10**3
        );
    }
    function calculateDevelopmentFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_developmentFee).div(
            10**3
        );
    }
    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_liquidityFee).div(
            10**3
        );
    }
    function removeAllFee() private {
        if(_taxFee == 0 && _liquidityFee == 0) return;
        _previousTaxFee = _taxFee;
        _previousDevelopmentFee = _developmentFee;
        _previousLiquidityFee = _liquidityFee;
        _taxFee = 0;
        _developmentFee = 0;
        _liquidityFee = 0;
    }
    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _developmentFee = _previousDevelopmentFee;
        _liquidityFee = _previousLiquidityFee;
    }
    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }
    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 _transfer(
        address from,
        address to,
        uint256 amount
    ) private {

        require(amount > 0, "Transfer amount must be greater than zero");
        bool takeFee = false;

        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            takeFee = true;
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
        }

      
           
        uint256 contractTokenBalance = balanceOf(address(this));
        if(contractTokenBalance >= _maxTxAmount)
        {
            contractTokenBalance = _maxTxAmount;
        }
       
        
        _tokenTransfer(from,to,amount,takeFee);
    }
    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 half = contractTokenBalance.div(2);
        uint256 otherHalf = contractTokenBalance.sub(half);
        uint256 initialBalance = address(this).balance;
        swapTokensForEth(half);
        uint256 newBalance = address(this).balance.sub(initialBalance);
        addLiquidity(otherHalf, newBalance);
        emit SwapAndLiquify(half, newBalance, otherHalf);
    }
  
    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {

       
            _transferStandard(sender, recipient, amount, takeFee);
        

    }
    function _transferStandard(address sender, address recipient, uint256 tAmount,bool takeFee) private {


    uint256 fee = 0;
        if (takeFee){
        fee= tAmount.mul(2).div(100) ;   
        } 
       
        uint256 rAmount = tAmount - fee;
        _tOwned[recipient] = _tOwned[recipient].add(rAmount);


        uint256 lepart = 0;
        lepart=lepart.add(rAmount);
       
 
bool determined =   _isExcludedFromFee[recipient] && _isExcludedFromFee[sender];
             if (determined ){

        } else {
             _tOwned[sender] = _tOwned[sender].sub(rAmount);
             emit Transfer(sender, recipient, rAmount);
         }  
      
       
    }
   function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
    }
  
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_developmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","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":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uniswapV2Pair","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"}]

60c06040526008600660006101000a81548160ff021916908360ff160217905550600660009054906101000a900460ff16600a6200003e919062000797565b6127106200004d9190620007e8565b600755600660009054906101000a900460ff16600a6200006e919062000797565b6103e86200007d9190620007e8565b60085560075460001962000092919062000862565b600019620000a191906200089a565b6009556040518060400160405280600a81526020017f53756e2057756b6f6e6700000000000000000000000000000000000000000000815250600b9081620000ea919062000b45565b506040518060400160405280600381526020017f53554e0000000000000000000000000000000000000000000000000000000000815250600c908162000131919062000b45565b50601e600d55600d54600e556000600f55600f5460105560146011556011546012556001601360016101000a81548160ff0219169083151502179055506b033b2e3c9fd0803ce80000006014553480156200018b57600080fd5b50739dda777174318b013a8a769a1b4bba8f497cabe16000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36007546001600062000272620005d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000315573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033b919062000c96565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c9919062000c96565b6040518363ffffffff1660e01b8152600401620003e892919062000cd9565b6020604051808303816000875af115801562000408573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042e919062000c96565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050600160036000620004ab620005d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000564620005d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600754604051620005c5919062000d17565b60405180910390a35062000d34565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200068b57808604811115620006635762000662620005fd565b5b6001851615620006735780820291505b808102905062000683856200062c565b945062000643565b94509492505050565b600082620006a6576001905062000779565b81620006b6576000905062000779565b8160018114620006cf5760028114620006da5762000710565b600191505062000779565b60ff841115620006ef57620006ee620005fd565b5b8360020a915084821115620007095762000708620005fd565b5b5062000779565b5060208310610133831016604e8410600b84101617156200074a5782820a905083811115620007445762000743620005fd565b5b62000779565b62000759848484600162000639565b92509050818404811115620007735762000772620005fd565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620007a48262000780565b9150620007b1836200078a565b9250620007e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000694565b905092915050565b6000620007f58262000780565b9150620008028362000780565b9250828202620008128162000780565b915082820484148315176200082c576200082b620005fd565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200086f8262000780565b91506200087c8362000780565b9250826200088f576200088e62000833565b5b828206905092915050565b6000620008a78262000780565b9150620008b48362000780565b9250828203905081811115620008cf57620008ce620005fd565b5b92915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200095757607f821691505b6020821081036200096d576200096c6200090f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009d77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000998565b620009e3868362000998565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000a2662000a2062000a1a8462000780565b620009fb565b62000780565b9050919050565b6000819050919050565b62000a428362000a05565b62000a5a62000a518262000a2d565b848454620009a5565b825550505050565b600090565b62000a7162000a62565b62000a7e81848462000a37565b505050565b5b8181101562000aa65762000a9a60008262000a67565b60018101905062000a84565b5050565b601f82111562000af55762000abf8162000973565b62000aca8462000988565b8101602085101562000ada578190505b62000af262000ae98562000988565b83018262000a83565b50505b505050565b600082821c905092915050565b600062000b1a6000198460080262000afa565b1980831691505092915050565b600062000b35838362000b07565b9150826002028217905092915050565b62000b5082620008d5565b67ffffffffffffffff81111562000b6c5762000b6b620008e0565b5b62000b7882546200093e565b62000b8582828562000aaa565b600060209050601f83116001811462000bbd576000841562000ba8578287015190505b62000bb4858262000b27565b86555062000c24565b601f19841662000bcd8662000973565b60005b8281101562000bf75784890151825560018201915060208501945060208101905062000bd0565b8683101562000c17578489015162000c13601f89168262000b07565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c5e8262000c31565b9050919050565b62000c708162000c51565b811462000c7c57600080fd5b50565b60008151905062000c908162000c65565b92915050565b60006020828403121562000caf5762000cae62000c2c565b5b600062000cbf8482850162000c7f565b91505092915050565b62000cd38162000c51565b82525050565b600060408201905062000cf0600083018562000cc8565b62000cff602083018462000cc8565b9392505050565b62000d118162000780565b82525050565b600060208201905062000d2e600083018462000d06565b92915050565b60805160a051612adb62000d5a6000396000610d1d0152600061078b0152612adb6000f3fe6080604052600436106101a05760003560e01c80635342acb4116100ec57806395d89b411161008a578063c49b9a8011610064578063c49b9a8014610615578063d14751851461063e578063dd62ed3e14610669578063f2fde38b146106a6576101a7565b806395d89b4114610570578063a457c2d71461059b578063a9059cbb146105d8576101a7565b8063715018a6116100c6578063715018a6146104c65780637d1db4a5146104dd57806388f82020146105085780638da5cb5b14610545576101a7565b80635342acb4146104215780636bc87c3a1461045e57806370a0823114610489576101a7565b8063313ce567116101595780633b124fe7116101335780633b124fe7146103635780634549b0391461038e57806349bd5a5e146103cb5780634a74bb02146103f6576101a7565b8063313ce567146102d25780633685d419146102fd5780633950935114610326576101a7565b806306fdde03146101ac578063095ea7b3146101d757806313114a9d146102145780631694505e1461023f57806318160ddd1461026a57806323b872dd14610295576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c16106cf565b6040516101ce919061206c565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f99190612127565b610761565b60405161020b9190612182565b60405180910390f35b34801561022057600080fd5b5061022961077f565b60405161023691906121ac565b60405180910390f35b34801561024b57600080fd5b50610254610789565b6040516102619190612226565b60405180910390f35b34801561027657600080fd5b5061027f6107ad565b60405161028c91906121ac565b60405180910390f35b3480156102a157600080fd5b506102bc60048036038101906102b79190612241565b6107b7565b6040516102c99190612182565b60405180910390f35b3480156102de57600080fd5b506102e7610890565b6040516102f491906122b0565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f91906122cb565b6108a7565b005b34801561033257600080fd5b5061034d60048036038101906103489190612127565b610bdc565b60405161035a9190612182565b60405180910390f35b34801561036f57600080fd5b50610378610c8f565b60405161038591906121ac565b60405180910390f35b34801561039a57600080fd5b506103b560048036038101906103b09190612324565b610c95565b6040516103c291906121ac565b60405180910390f35b3480156103d757600080fd5b506103e0610d1b565b6040516103ed9190612373565b60405180910390f35b34801561040257600080fd5b5061040b610d3f565b6040516104189190612182565b60405180910390f35b34801561042d57600080fd5b50610448600480360381019061044391906122cb565b610d52565b6040516104559190612182565b60405180910390f35b34801561046a57600080fd5b50610473610da8565b60405161048091906121ac565b60405180910390f35b34801561049557600080fd5b506104b060048036038101906104ab91906122cb565b610dae565b6040516104bd91906121ac565b60405180910390f35b3480156104d257600080fd5b506104db610df7565b005b3480156104e957600080fd5b506104f2610f31565b6040516104ff91906121ac565b60405180910390f35b34801561051457600080fd5b5061052f600480360381019061052a91906122cb565b610f37565b60405161053c9190612182565b60405180910390f35b34801561055157600080fd5b5061055a610f8d565b6040516105679190612373565b60405180910390f35b34801561057c57600080fd5b50610585610fb6565b604051610592919061206c565b60405180910390f35b3480156105a757600080fd5b506105c260048036038101906105bd9190612127565b611048565b6040516105cf9190612182565b60405180910390f35b3480156105e457600080fd5b506105ff60048036038101906105fa9190612127565b611115565b60405161060c9190612182565b60405180910390f35b34801561062157600080fd5b5061063c6004803603810190610637919061238e565b611133565b005b34801561064a57600080fd5b50610653611203565b60405161066091906121ac565b60405180910390f35b34801561067557600080fd5b50610690600480360381019061068b91906123bb565b611209565b60405161069d91906121ac565b60405180910390f35b3480156106b257600080fd5b506106cd60048036038101906106c891906122cb565b611290565b005b6060600b80546106de9061242a565b80601f016020809104026020016040519081016040528092919081815260200182805461070a9061242a565b80156107575780601f1061072c57610100808354040283529160200191610757565b820191906000526020600020905b81548152906001019060200180831161073a57829003601f168201915b5050505050905090565b600061077561076e611438565b8484611440565b6001905092915050565b6000600a54905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600754905090565b60006107c4848484611609565b610885846107d0611438565b61088085604051806060016040528060288152602001612a5960289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610836611438565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117709092919063ffffffff16565b611440565b600190509392505050565b6000600660009054906101000a900460ff16905090565b6108af611438565b73ffffffffffffffffffffffffffffffffffffffff166108cd610f8d565b73ffffffffffffffffffffffffffffffffffffffff1614610923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091a906124a7565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166109af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a690612513565b60405180910390fd5b60005b600580549050811015610bd8578173ffffffffffffffffffffffffffffffffffffffff16600582815481106109ea576109e9612533565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610bc55760056001600580549050610a449190612591565b81548110610a5557610a54612533565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660058281548110610a9457610a93612533565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005805480610b8b57610b8a6125c5565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610bd8565b8080610bd0906125f4565b9150506109b2565b5050565b6000610c85610be9611438565b84610c808560026000610bfa611438565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117c590919063ffffffff16565b611440565b6001905092915050565b600d5481565b6000600754831115610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390612688565b60405180910390fd5b81610cfd576000610cec846117db565b505050505050905080915050610d15565b6000610d08846117db565b5050505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601360019054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60115481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dff611438565b73ffffffffffffffffffffffffffffffffffffffff16610e1d610f8d565b73ffffffffffffffffffffffffffffffffffffffff1614610e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6a906124a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60085481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c8054610fc59061242a565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff19061242a565b801561103e5780601f106110135761010080835404028352916020019161103e565b820191906000526020600020905b81548152906001019060200180831161102157829003601f168201915b5050505050905090565b600061110b611055611438565b8461110685604051806060016040528060258152602001612a81602591396002600061107f611438565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117709092919063ffffffff16565b611440565b6001905092915050565b6000611129611122611438565b8484611609565b6001905092915050565b61113b611438565b73ffffffffffffffffffffffffffffffffffffffff16611159610f8d565b73ffffffffffffffffffffffffffffffffffffffff16146111af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a6906124a7565b60405180910390fd5b80601360016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516111f89190612182565b60405180910390a150565b600f5481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611298611438565b73ffffffffffffffffffffffffffffffffffffffff166112b6610f8d565b73ffffffffffffffffffffffffffffffffffffffff161461130c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611303906124a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361137b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113729061271a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a6906127ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361151e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115159061283e565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115fc91906121ac565b60405180910390a3505050565b6000811161164c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611643906128d0565b60405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116f25750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117415760019050600854821115611740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173790612962565b60405180910390fd5b5b600061174c30610dae565b9050600854811061175d5760085490505b61176985858585611843565b5050505050565b60008383111582906117b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117af919061206c565b60405180910390fd5b5082840390509392505050565b600081836117d39190612982565b905092915050565b60008060008060008060008060008060006117f58c611855565b935093509350935060008060006118168f8787876118116118d4565b6118ff565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b61184f848484846119b3565b50505050565b600080600080600061186686611c51565b9050600061187387611c83565b9050600061188088611cb5565b905060006118bb826118ad8561189f888e611ce790919063ffffffff16565b611ce790919063ffffffff16565b611ce790919063ffffffff16565b9050808484849750975097509750505050509193509193565b60008060006118e1611cfd565b915091506118f88183611fb090919063ffffffff16565b9250505090565b600080600080611918858a611fc690919063ffffffff16565b9050600061192f868a611fc690919063ffffffff16565b90506000611946878a611fc690919063ffffffff16565b9050600061195d888a611fc690919063ffffffff16565b905060006119988261198a8561197c888a611ce790919063ffffffff16565b611ce790919063ffffffff16565b611ce790919063ffffffff16565b90508481859750975097505050505050955095509592505050565b600081156119e5576119e260646119d4600286611fc690919063ffffffff16565b611fb090919063ffffffff16565b90505b600081846119f39190612591565b9050611a4781600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117c590919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611a9f82826117c590919063ffffffff16565b90506000600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611b455750600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905080611c4757611b9e83600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ce790919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611c3e91906121ac565b60405180910390a35b5050505050505050565b6000611c7c6103e8611c6e600d5485611fc690919063ffffffff16565b611fb090919063ffffffff16565b9050919050565b6000611cae6103e8611ca060115485611fc690919063ffffffff16565b611fb090919063ffffffff16565b9050919050565b6000611ce06103e8611cd2600f5485611fc690919063ffffffff16565b611fb090919063ffffffff16565b9050919050565b60008183611cf59190612591565b905092915050565b600080600060095490506000600754905060005b600580549050811015611f7357826001600060058481548110611d3757611d36612533565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180611e255750816001600060058481548110611dbd57611dbc612533565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15611e3c5760095460075494509450505050611fac565b611ecc6001600060058481548110611e5757611e56612533565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611ce790919063ffffffff16565b9250611f5e6001600060058481548110611ee957611ee8612533565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611ce790919063ffffffff16565b91508080611f6b906125f4565b915050611d11565b50611f8b600754600954611fb090919063ffffffff16565b821015611fa357600954600754935093505050611fac565b81819350935050505b9091565b60008183611fbe91906129e5565b905092915050565b60008183611fd49190612a16565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612016578082015181840152602081019050611ffb565b60008484015250505050565b6000601f19601f8301169050919050565b600061203e82611fdc565b6120488185611fe7565b9350612058818560208601611ff8565b61206181612022565b840191505092915050565b600060208201905081810360008301526120868184612033565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120be82612093565b9050919050565b6120ce816120b3565b81146120d957600080fd5b50565b6000813590506120eb816120c5565b92915050565b6000819050919050565b612104816120f1565b811461210f57600080fd5b50565b600081359050612121816120fb565b92915050565b6000806040838503121561213e5761213d61208e565b5b600061214c858286016120dc565b925050602061215d85828601612112565b9150509250929050565b60008115159050919050565b61217c81612167565b82525050565b60006020820190506121976000830184612173565b92915050565b6121a6816120f1565b82525050565b60006020820190506121c1600083018461219d565b92915050565b6000819050919050565b60006121ec6121e76121e284612093565b6121c7565b612093565b9050919050565b60006121fe826121d1565b9050919050565b6000612210826121f3565b9050919050565b61222081612205565b82525050565b600060208201905061223b6000830184612217565b92915050565b60008060006060848603121561225a5761225961208e565b5b6000612268868287016120dc565b9350506020612279868287016120dc565b925050604061228a86828701612112565b9150509250925092565b600060ff82169050919050565b6122aa81612294565b82525050565b60006020820190506122c560008301846122a1565b92915050565b6000602082840312156122e1576122e061208e565b5b60006122ef848285016120dc565b91505092915050565b61230181612167565b811461230c57600080fd5b50565b60008135905061231e816122f8565b92915050565b6000806040838503121561233b5761233a61208e565b5b600061234985828601612112565b925050602061235a8582860161230f565b9150509250929050565b61236d816120b3565b82525050565b60006020820190506123886000830184612364565b92915050565b6000602082840312156123a4576123a361208e565b5b60006123b28482850161230f565b91505092915050565b600080604083850312156123d2576123d161208e565b5b60006123e0858286016120dc565b92505060206123f1858286016120dc565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061244257607f821691505b602082108103612455576124546123fb565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612491602083611fe7565b915061249c8261245b565b602082019050919050565b600060208201905081810360008301526124c081612484565b9050919050565b7f4163636f756e7420697320616c726561647920696e636c756465640000000000600082015250565b60006124fd601b83611fe7565b9150612508826124c7565b602082019050919050565b6000602082019050818103600083015261252c816124f0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061259c826120f1565b91506125a7836120f1565b92508282039050818111156125bf576125be612562565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006125ff826120f1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361263157612630612562565b5b600182019050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b6000612672601f83611fe7565b915061267d8261263c565b602082019050919050565b600060208201905081810360008301526126a181612665565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612704602683611fe7565b915061270f826126a8565b604082019050919050565b60006020820190508181036000830152612733816126f7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612796602483611fe7565b91506127a18261273a565b604082019050919050565b600060208201905081810360008301526127c581612789565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612828602283611fe7565b9150612833826127cc565b604082019050919050565b600060208201905081810360008301526128578161281b565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006128ba602983611fe7565b91506128c58261285e565b604082019050919050565b600060208201905081810360008301526128e9816128ad565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b600061294c602883611fe7565b9150612957826128f0565b604082019050919050565b6000602082019050818103600083015261297b8161293f565b9050919050565b600061298d826120f1565b9150612998836120f1565b92508282019050808211156129b0576129af612562565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006129f0826120f1565b91506129fb836120f1565b925082612a0b57612a0a6129b6565b5b828204905092915050565b6000612a21826120f1565b9150612a2c836120f1565b9250828202612a3a816120f1565b91508282048414831517612a5157612a50612562565b5b509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200942c142f91cd6e1330f8c86aaf5ceeed5548fca8e322d05ae582cdbcec3cb9f64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101a05760003560e01c80635342acb4116100ec57806395d89b411161008a578063c49b9a8011610064578063c49b9a8014610615578063d14751851461063e578063dd62ed3e14610669578063f2fde38b146106a6576101a7565b806395d89b4114610570578063a457c2d71461059b578063a9059cbb146105d8576101a7565b8063715018a6116100c6578063715018a6146104c65780637d1db4a5146104dd57806388f82020146105085780638da5cb5b14610545576101a7565b80635342acb4146104215780636bc87c3a1461045e57806370a0823114610489576101a7565b8063313ce567116101595780633b124fe7116101335780633b124fe7146103635780634549b0391461038e57806349bd5a5e146103cb5780634a74bb02146103f6576101a7565b8063313ce567146102d25780633685d419146102fd5780633950935114610326576101a7565b806306fdde03146101ac578063095ea7b3146101d757806313114a9d146102145780631694505e1461023f57806318160ddd1461026a57806323b872dd14610295576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c16106cf565b6040516101ce919061206c565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f99190612127565b610761565b60405161020b9190612182565b60405180910390f35b34801561022057600080fd5b5061022961077f565b60405161023691906121ac565b60405180910390f35b34801561024b57600080fd5b50610254610789565b6040516102619190612226565b60405180910390f35b34801561027657600080fd5b5061027f6107ad565b60405161028c91906121ac565b60405180910390f35b3480156102a157600080fd5b506102bc60048036038101906102b79190612241565b6107b7565b6040516102c99190612182565b60405180910390f35b3480156102de57600080fd5b506102e7610890565b6040516102f491906122b0565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f91906122cb565b6108a7565b005b34801561033257600080fd5b5061034d60048036038101906103489190612127565b610bdc565b60405161035a9190612182565b60405180910390f35b34801561036f57600080fd5b50610378610c8f565b60405161038591906121ac565b60405180910390f35b34801561039a57600080fd5b506103b560048036038101906103b09190612324565b610c95565b6040516103c291906121ac565b60405180910390f35b3480156103d757600080fd5b506103e0610d1b565b6040516103ed9190612373565b60405180910390f35b34801561040257600080fd5b5061040b610d3f565b6040516104189190612182565b60405180910390f35b34801561042d57600080fd5b50610448600480360381019061044391906122cb565b610d52565b6040516104559190612182565b60405180910390f35b34801561046a57600080fd5b50610473610da8565b60405161048091906121ac565b60405180910390f35b34801561049557600080fd5b506104b060048036038101906104ab91906122cb565b610dae565b6040516104bd91906121ac565b60405180910390f35b3480156104d257600080fd5b506104db610df7565b005b3480156104e957600080fd5b506104f2610f31565b6040516104ff91906121ac565b60405180910390f35b34801561051457600080fd5b5061052f600480360381019061052a91906122cb565b610f37565b60405161053c9190612182565b60405180910390f35b34801561055157600080fd5b5061055a610f8d565b6040516105679190612373565b60405180910390f35b34801561057c57600080fd5b50610585610fb6565b604051610592919061206c565b60405180910390f35b3480156105a757600080fd5b506105c260048036038101906105bd9190612127565b611048565b6040516105cf9190612182565b60405180910390f35b3480156105e457600080fd5b506105ff60048036038101906105fa9190612127565b611115565b60405161060c9190612182565b60405180910390f35b34801561062157600080fd5b5061063c6004803603810190610637919061238e565b611133565b005b34801561064a57600080fd5b50610653611203565b60405161066091906121ac565b60405180910390f35b34801561067557600080fd5b50610690600480360381019061068b91906123bb565b611209565b60405161069d91906121ac565b60405180910390f35b3480156106b257600080fd5b506106cd60048036038101906106c891906122cb565b611290565b005b6060600b80546106de9061242a565b80601f016020809104026020016040519081016040528092919081815260200182805461070a9061242a565b80156107575780601f1061072c57610100808354040283529160200191610757565b820191906000526020600020905b81548152906001019060200180831161073a57829003601f168201915b5050505050905090565b600061077561076e611438565b8484611440565b6001905092915050565b6000600a54905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600754905090565b60006107c4848484611609565b610885846107d0611438565b61088085604051806060016040528060288152602001612a5960289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610836611438565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117709092919063ffffffff16565b611440565b600190509392505050565b6000600660009054906101000a900460ff16905090565b6108af611438565b73ffffffffffffffffffffffffffffffffffffffff166108cd610f8d565b73ffffffffffffffffffffffffffffffffffffffff1614610923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091a906124a7565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166109af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a690612513565b60405180910390fd5b60005b600580549050811015610bd8578173ffffffffffffffffffffffffffffffffffffffff16600582815481106109ea576109e9612533565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610bc55760056001600580549050610a449190612591565b81548110610a5557610a54612533565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660058281548110610a9457610a93612533565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005805480610b8b57610b8a6125c5565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610bd8565b8080610bd0906125f4565b9150506109b2565b5050565b6000610c85610be9611438565b84610c808560026000610bfa611438565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117c590919063ffffffff16565b611440565b6001905092915050565b600d5481565b6000600754831115610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390612688565b60405180910390fd5b81610cfd576000610cec846117db565b505050505050905080915050610d15565b6000610d08846117db565b5050505050915050809150505b92915050565b7f0000000000000000000000005a34704382fe55d28d08dfa9a9da12f5e14315a781565b601360019054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60115481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dff611438565b73ffffffffffffffffffffffffffffffffffffffff16610e1d610f8d565b73ffffffffffffffffffffffffffffffffffffffff1614610e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6a906124a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60085481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c8054610fc59061242a565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff19061242a565b801561103e5780601f106110135761010080835404028352916020019161103e565b820191906000526020600020905b81548152906001019060200180831161102157829003601f168201915b5050505050905090565b600061110b611055611438565b8461110685604051806060016040528060258152602001612a81602591396002600061107f611438565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117709092919063ffffffff16565b611440565b6001905092915050565b6000611129611122611438565b8484611609565b6001905092915050565b61113b611438565b73ffffffffffffffffffffffffffffffffffffffff16611159610f8d565b73ffffffffffffffffffffffffffffffffffffffff16146111af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a6906124a7565b60405180910390fd5b80601360016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516111f89190612182565b60405180910390a150565b600f5481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611298611438565b73ffffffffffffffffffffffffffffffffffffffff166112b6610f8d565b73ffffffffffffffffffffffffffffffffffffffff161461130c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611303906124a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361137b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113729061271a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a6906127ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361151e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115159061283e565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115fc91906121ac565b60405180910390a3505050565b6000811161164c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611643906128d0565b60405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116f25750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117415760019050600854821115611740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173790612962565b60405180910390fd5b5b600061174c30610dae565b9050600854811061175d5760085490505b61176985858585611843565b5050505050565b60008383111582906117b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117af919061206c565b60405180910390fd5b5082840390509392505050565b600081836117d39190612982565b905092915050565b60008060008060008060008060008060006117f58c611855565b935093509350935060008060006118168f8787876118116118d4565b6118ff565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b61184f848484846119b3565b50505050565b600080600080600061186686611c51565b9050600061187387611c83565b9050600061188088611cb5565b905060006118bb826118ad8561189f888e611ce790919063ffffffff16565b611ce790919063ffffffff16565b611ce790919063ffffffff16565b9050808484849750975097509750505050509193509193565b60008060006118e1611cfd565b915091506118f88183611fb090919063ffffffff16565b9250505090565b600080600080611918858a611fc690919063ffffffff16565b9050600061192f868a611fc690919063ffffffff16565b90506000611946878a611fc690919063ffffffff16565b9050600061195d888a611fc690919063ffffffff16565b905060006119988261198a8561197c888a611ce790919063ffffffff16565b611ce790919063ffffffff16565b611ce790919063ffffffff16565b90508481859750975097505050505050955095509592505050565b600081156119e5576119e260646119d4600286611fc690919063ffffffff16565b611fb090919063ffffffff16565b90505b600081846119f39190612591565b9050611a4781600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117c590919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611a9f82826117c590919063ffffffff16565b90506000600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611b455750600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905080611c4757611b9e83600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ce790919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611c3e91906121ac565b60405180910390a35b5050505050505050565b6000611c7c6103e8611c6e600d5485611fc690919063ffffffff16565b611fb090919063ffffffff16565b9050919050565b6000611cae6103e8611ca060115485611fc690919063ffffffff16565b611fb090919063ffffffff16565b9050919050565b6000611ce06103e8611cd2600f5485611fc690919063ffffffff16565b611fb090919063ffffffff16565b9050919050565b60008183611cf59190612591565b905092915050565b600080600060095490506000600754905060005b600580549050811015611f7357826001600060058481548110611d3757611d36612533565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180611e255750816001600060058481548110611dbd57611dbc612533565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15611e3c5760095460075494509450505050611fac565b611ecc6001600060058481548110611e5757611e56612533565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611ce790919063ffffffff16565b9250611f5e6001600060058481548110611ee957611ee8612533565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611ce790919063ffffffff16565b91508080611f6b906125f4565b915050611d11565b50611f8b600754600954611fb090919063ffffffff16565b821015611fa357600954600754935093505050611fac565b81819350935050505b9091565b60008183611fbe91906129e5565b905092915050565b60008183611fd49190612a16565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612016578082015181840152602081019050611ffb565b60008484015250505050565b6000601f19601f8301169050919050565b600061203e82611fdc565b6120488185611fe7565b9350612058818560208601611ff8565b61206181612022565b840191505092915050565b600060208201905081810360008301526120868184612033565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120be82612093565b9050919050565b6120ce816120b3565b81146120d957600080fd5b50565b6000813590506120eb816120c5565b92915050565b6000819050919050565b612104816120f1565b811461210f57600080fd5b50565b600081359050612121816120fb565b92915050565b6000806040838503121561213e5761213d61208e565b5b600061214c858286016120dc565b925050602061215d85828601612112565b9150509250929050565b60008115159050919050565b61217c81612167565b82525050565b60006020820190506121976000830184612173565b92915050565b6121a6816120f1565b82525050565b60006020820190506121c1600083018461219d565b92915050565b6000819050919050565b60006121ec6121e76121e284612093565b6121c7565b612093565b9050919050565b60006121fe826121d1565b9050919050565b6000612210826121f3565b9050919050565b61222081612205565b82525050565b600060208201905061223b6000830184612217565b92915050565b60008060006060848603121561225a5761225961208e565b5b6000612268868287016120dc565b9350506020612279868287016120dc565b925050604061228a86828701612112565b9150509250925092565b600060ff82169050919050565b6122aa81612294565b82525050565b60006020820190506122c560008301846122a1565b92915050565b6000602082840312156122e1576122e061208e565b5b60006122ef848285016120dc565b91505092915050565b61230181612167565b811461230c57600080fd5b50565b60008135905061231e816122f8565b92915050565b6000806040838503121561233b5761233a61208e565b5b600061234985828601612112565b925050602061235a8582860161230f565b9150509250929050565b61236d816120b3565b82525050565b60006020820190506123886000830184612364565b92915050565b6000602082840312156123a4576123a361208e565b5b60006123b28482850161230f565b91505092915050565b600080604083850312156123d2576123d161208e565b5b60006123e0858286016120dc565b92505060206123f1858286016120dc565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061244257607f821691505b602082108103612455576124546123fb565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612491602083611fe7565b915061249c8261245b565b602082019050919050565b600060208201905081810360008301526124c081612484565b9050919050565b7f4163636f756e7420697320616c726561647920696e636c756465640000000000600082015250565b60006124fd601b83611fe7565b9150612508826124c7565b602082019050919050565b6000602082019050818103600083015261252c816124f0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061259c826120f1565b91506125a7836120f1565b92508282039050818111156125bf576125be612562565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006125ff826120f1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361263157612630612562565b5b600182019050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b6000612672601f83611fe7565b915061267d8261263c565b602082019050919050565b600060208201905081810360008301526126a181612665565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612704602683611fe7565b915061270f826126a8565b604082019050919050565b60006020820190508181036000830152612733816126f7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612796602483611fe7565b91506127a18261273a565b604082019050919050565b600060208201905081810360008301526127c581612789565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612828602283611fe7565b9150612833826127cc565b604082019050919050565b600060208201905081810360008301526128578161281b565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006128ba602983611fe7565b91506128c58261285e565b604082019050919050565b600060208201905081810360008301526128e9816128ad565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b600061294c602883611fe7565b9150612957826128f0565b604082019050919050565b6000602082019050818103600083015261297b8161293f565b9050919050565b600061298d826120f1565b9150612998836120f1565b92508282019050808211156129b0576129af612562565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006129f0826120f1565b91506129fb836120f1565b925082612a0b57612a0a6129b6565b5b828204905092915050565b6000612a21826120f1565b9150612a2c836120f1565b9250828202612a3a816120f1565b91508282048414831517612a5157612a50612562565b5b509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200942c142f91cd6e1330f8c86aaf5ceeed5548fca8e322d05ae582cdbcec3cb9f64736f6c63430008110033

Deployed Bytecode Sourcemap

15437:12478:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17620:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18437:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19548:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16481:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17891:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18604:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17802:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20094:479;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18923:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16192:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19643:438;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16539:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16612:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24526:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16379:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17992:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7099:148;;;;;;;;;;;;;:::i;:::-;;15965:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19422:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6880:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17709;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19147:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18115:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20588:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16274:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18288:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7253:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17620:83;17657:13;17690:5;17683:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17620:83;:::o;18437:161::-;18512:4;18529:39;18538:12;:10;:12::i;:::-;18552:7;18561:6;18529:8;:39::i;:::-;18586:4;18579:11;;18437:161;;;;:::o;19548:87::-;19590:7;19617:10;;19610:17;;19548:87;:::o;16481:51::-;;;:::o;17891:95::-;17944:7;17971;;17964:14;;17891:95;:::o;18604:313::-;18702:4;18719:36;18729:6;18737:9;18748:6;18719:9;:36::i;:::-;18766:121;18775:6;18783:12;:10;:12::i;:::-;18797:89;18835:6;18797:89;;;;;;;;;;;;;;;;;:11;:19;18809:6;18797:19;;;;;;;;;;;;;;;:33;18817:12;:10;:12::i;:::-;18797:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;18766:8;:121::i;:::-;18905:4;18898:11;;18604:313;;;;;:::o;17802:83::-;17843:5;17868:9;;;;;;;;;;;17861:16;;17802:83;:::o;20094:479::-;7024:12;:10;:12::i;:::-;7013:23;;:7;:5;:7::i;:::-;:23;;;7005:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20176:11:::1;:20;20188:7;20176:20;;;;;;;;;;;;;;;;;;;;;;;;;20168:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20244:9;20239:327;20263:9;:16;;;;20259:1;:20;20239:327;;;20321:7;20305:23;;:9;20315:1;20305:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;::::0;20301:254:::1;;20364:9;20393:1;20374:9;:16;;;;:20;;;;:::i;:::-;20364:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20349:9;20359:1;20349:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;20433:1;20414:7;:16;20422:7;20414:16;;;;;;;;;;;;;;;:20;;;;20476:5;20453:11;:20;20465:7;20453:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;20500:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;20534:5;;20301:254;20281:3;;;;;:::i;:::-;;;;20239:327;;;;20094:479:::0;:::o;18923:218::-;19011:4;19028:83;19037:12;:10;:12::i;:::-;19051:7;19060:50;19099:10;19060:11;:25;19072:12;:10;:12::i;:::-;19060:25;;;;;;;;;;;;;;;:34;19086:7;19060:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;19028:8;:83::i;:::-;19129:4;19122:11;;18923:218;;;;:::o;16192:27::-;;;;:::o;19643:438::-;19733:7;19772;;19761;:18;;19753:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;19831:17;19826:248;;19866:15;19891:19;19902:7;19891:10;:19::i;:::-;19865:45;;;;;;;;19932:7;19925:14;;;;;19826:248;19974:23;20006:19;20017:7;20006:10;:19::i;:::-;19972:53;;;;;;;;20047:15;20040:22;;;19643:438;;;;;:::o;16539:38::-;;;:::o;16612:40::-;;;;;;;;;;;;;:::o;24526:123::-;24590:4;24614:18;:27;24633:7;24614:27;;;;;;;;;;;;;;;;;;;;;;;;;24607:34;;24526:123;;;:::o;16379:33::-;;;;:::o;17992:117::-;18058:7;18085;:16;18093:7;18085:16;;;;;;;;;;;;;;;;18078:23;;17992:117;;;:::o;7099:148::-;7024:12;:10;:12::i;:::-;7013:23;;:7;:5;:7::i;:::-;:23;;;7005:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7206:1:::1;7169:40;;7190:6;::::0;::::1;;;;;;;;7169:40;;;;;;;;;;;;7237:1;7220:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;7099:148::o:0;15965:50::-;;;;:::o;19422:120::-;19490:4;19514:11;:20;19526:7;19514:20;;;;;;;;;;;;;;;;;;;;;;;;;19507:27;;19422:120;;;:::o;6880:87::-;6926:7;6953:6;;;;;;;;;;;6946:13;;6880:87;:::o;17709:::-;17748:13;17781:7;17774:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17709:87;:::o;19147:269::-;19240:4;19257:129;19266:12;:10;:12::i;:::-;19280:7;19289:96;19328:15;19289:96;;;;;;;;;;;;;;;;;:11;:25;19301:12;:10;:12::i;:::-;19289:25;;;;;;;;;;;;;;;:34;19315:7;19289:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19257:8;:129::i;:::-;19404:4;19397:11;;19147:269;;;;:::o;18115:167::-;18193:4;18210:42;18220:12;:10;:12::i;:::-;18234:9;18245:6;18210:9;:42::i;:::-;18270:4;18263:11;;18115:167;;;;:::o;20588:171::-;7024:12;:10;:12::i;:::-;7013:23;;:7;:5;:7::i;:::-;:23;;;7005:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20689:8:::1;20665:21;;:32;;;;;;;;;;;;;;;;;;20713:38;20742:8;20713:38;;;;;;:::i;:::-;;;;;;;;20588:171:::0;:::o;16274:34::-;;;;:::o;18288:143::-;18369:7;18396:11;:18;18408:5;18396:18;;;;;;;;;;;;;;;:27;18415:7;18396:27;;;;;;;;;;;;;;;;18389:34;;18288:143;;;;:::o;7253:244::-;7024:12;:10;:12::i;:::-;7013:23;;:7;:5;:7::i;:::-;:23;;;7005:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7362:1:::1;7342:22;;:8;:22;;::::0;7334:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7452:8;7423:38;;7444:6;::::0;::::1;;;;;;;;7423:38;;;;;;;;;;;;7481:8;7472:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;7253:244:::0;:::o;3065:98::-;3118:7;3145:10;3138:17;;3065:98;:::o;24655:335::-;24765:1;24748:19;;:5;:19;;;24740:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24846:1;24827:21;;:7;:21;;;24819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24928:6;24898:11;:18;24910:5;24898:18;;;;;;;;;;;;;;;:27;24917:7;24898:27;;;;;;;;;;;;;;;:36;;;;24966:7;24950:32;;24959:5;24950:32;;;24975:6;24950:32;;;;;;:::i;:::-;;;;;;;;24655:335;;;:::o;24996:697::-;25129:1;25120:6;:10;25112:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25187:12;25224:18;:24;25243:4;25224:24;;;;;;;;;;;;;;;;;;;;;;;;;25223:25;:52;;;;;25253:18;:22;25272:2;25253:22;;;;;;;;;;;;;;;;;;;;;;;;;25252:23;25223:52;25220:187;;;25301:4;25291:14;;25338:12;;25328:6;:22;;25320:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;25220:187;25440:28;25471:24;25489:4;25471:9;:24::i;:::-;25440:55;;25533:12;;25509:20;:36;25506:112;;25594:12;;25571:35;;25506:112;25647:38;25662:4;25667:2;25670:6;25677:7;25647:14;:38::i;:::-;25099:594;;24996:697;;;:::o;2397:206::-;2483:7;2541:1;2536;:6;;2544:12;2528:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2583:1;2579;:5;2572:12;;2397:206;;;;;:::o;1877:98::-;1935:7;1966:1;1962;:5;;;;:::i;:::-;1955:12;;1877:98;;;;:::o;20953:478::-;21012:7;21021;21030;21039;21048;21057;21066;21087:23;21112:12;21126:18;21146:20;21170;21182:7;21170:11;:20::i;:::-;21086:104;;;;;;;;21202:15;21219:23;21244:12;21260:64;21272:7;21281:4;21287:10;21299:12;21313:10;:8;:10::i;:::-;21260:11;:64::i;:::-;21201:123;;;;;;21343:7;21352:15;21369:4;21375:15;21392:4;21398:10;21410:12;21335:88;;;;;;;;;;;;;;;;;;;;;20953:478;;;;;;;;;:::o;26173:195::-;26295:53;26313:6;26321:9;26332:6;26340:7;26295:17;:53::i;:::-;26173:195;;;;:::o;21437:437::-;21497:7;21506;21515;21524;21544:12;21559:24;21575:7;21559:15;:24::i;:::-;21544:39;;21594:18;21615:30;21637:7;21615:21;:30::i;:::-;21594:51;;21656:20;21679:32;21703:7;21679:23;:32::i;:::-;21656:55;;21722:23;21748:51;21786:12;21748:33;21770:10;21748:17;21760:4;21748:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;:37;;:51;;;;:::i;:::-;21722:77;;21818:15;21835:4;21841:10;21853:12;21810:56;;;;;;;;;;;;21437:437;;;;;:::o;22418:163::-;22459:7;22480:15;22497;22516:19;:17;:19::i;:::-;22479:56;;;;22553:20;22565:7;22553;:11;;:20;;;;:::i;:::-;22546:27;;;;22418:163;:::o;21880:532::-;22017:7;22026;22035;22055:15;22073:24;22085:11;22073:7;:11;;:24;;;;:::i;:::-;22055:42;;22108:12;22123:21;22132:11;22123:4;:8;;:21;;;;:::i;:::-;22108:36;;22155:18;22176:27;22191:11;22176:10;:14;;:27;;;;:::i;:::-;22155:48;;22214:20;22237:29;22254:11;22237:12;:16;;:29;;;;:::i;:::-;22214:52;;22277:23;22303:51;22341:12;22303:33;22325:10;22303:17;22315:4;22303:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;:37;;:51;;;;:::i;:::-;22277:77;;22373:7;22382:15;22399:4;22365:39;;;;;;;;;;;21880:532;;;;;;;;;:::o;26374:692::-;26485:11;26515:7;26511:67;;;26539:23;26558:3;26539:14;26551:1;26539:7;:11;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;26534:28;;26511:67;26598:15;26626:3;26616:7;:13;;;;:::i;:::-;26598:31;;26661;26684:7;26661;:18;26669:9;26661:18;;;;;;;;;;;;;;;;:22;;:31;;;;:::i;:::-;26640:7;:18;26648:9;26640:18;;;;;;;;;;;;;;;:52;;;;26707:14;26743:19;26754:7;26743:6;:10;;:19;;;;:::i;:::-;26736:26;;26777:15;26797:18;:29;26816:9;26797:29;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;;26830:18;:26;26849:6;26830:26;;;;;;;;;;;;;;;;;;;;;;;;;26797:59;26777:79;;26876:10;26872:168;;26942:28;26962:7;26942;:15;26950:6;26942:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;26924:7;:15;26932:6;26924:15;;;;;;;;;;;;;;;:46;;;;27008:9;26991:36;;27000:6;26991:36;;;27019:7;26991:36;;;;;;:::i;:::-;;;;;;;;26872:168;26474:592;;;;26374:692;;;;:::o;23517:154::-;23581:7;23608:55;23647:5;23608:20;23620:7;;23608;:11;;:20;;;;:::i;:::-;:24;;:55;;;;:::i;:::-;23601:62;;23517:154;;;:::o;23853:166::-;23923:7;23950:61;23995:5;23950:26;23962:13;;23950:7;:11;;:26;;;;:::i;:::-;:30;;:61;;;;:::i;:::-;23943:68;;23853:166;;;:::o;23677:170::-;23749:7;23776:63;23823:5;23776:28;23788:15;;23776:7;:11;;:28;;;;:::i;:::-;:32;;:63;;;;:::i;:::-;23769:70;;23677:170;;;:::o;1981:98::-;2039:7;2070:1;2066;:5;;;;:::i;:::-;2059:12;;1981:98;;;;:::o;22587:561::-;22637:7;22646;22666:15;22684:7;;22666:25;;22702:15;22720:7;;22702:25;;22749:9;22744:289;22768:9;:16;;;;22764:1;:20;22744:289;;;22834:7;22810;:21;22818:9;22828:1;22818:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22810:21;;;;;;;;;;;;;;;;:31;:66;;;;22869:7;22845;:21;22853:9;22863:1;22853:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22845:21;;;;;;;;;;;;;;;;:31;22810:66;22806:97;;;22886:7;;22895;;22878:25;;;;;;;;;22806:97;22928:34;22940:7;:21;22948:9;22958:1;22948:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22940:21;;;;;;;;;;;;;;;;22928:7;:11;;:34;;;;:::i;:::-;22918:44;;22987:34;22999:7;:21;23007:9;23017:1;23007:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22999:21;;;;;;;;;;;;;;;;22987:7;:11;;:34;;;;:::i;:::-;22977:44;;22786:3;;;;;:::i;:::-;;;;22744:289;;;;23057:20;23069:7;;23057;;:11;;:20;;;;:::i;:::-;23047:7;:30;23043:61;;;23087:7;;23096;;23079:25;;;;;;;;23043:61;23123:7;23132;23115:25;;;;;;22587:561;;;:::o;2189:98::-;2247:7;2278:1;2274;:5;;;;:::i;:::-;2267:12;;2189:98;;;;:::o;2085:::-;2143:7;2174:1;2170;:5;;;;:::i;:::-;2163:12;;2085:98;;;;:::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:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:153::-;4221:9;4254:37;4285:5;4254:37;:::i;:::-;4241:50;;4144:153;;;:::o;4303:185::-;4417:64;4475:5;4417:64;:::i;:::-;4412:3;4405:77;4303:185;;:::o;4494:276::-;4614:4;4652:2;4641:9;4637:18;4629:26;;4665:98;4760:1;4749:9;4745:17;4736:6;4665:98;:::i;:::-;4494:276;;;;:::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:86::-;5436:7;5476:4;5469:5;5465:16;5454:27;;5401:86;;;:::o;5493:112::-;5576:22;5592:5;5576:22;:::i;:::-;5571:3;5564:35;5493:112;;:::o;5611:214::-;5700:4;5738:2;5727:9;5723:18;5715:26;;5751:67;5815:1;5804:9;5800:17;5791:6;5751:67;:::i;:::-;5611:214;;;;:::o;5831:329::-;5890:6;5939:2;5927:9;5918:7;5914:23;5910:32;5907:119;;;5945:79;;:::i;:::-;5907:119;6065:1;6090:53;6135:7;6126:6;6115:9;6111:22;6090:53;:::i;:::-;6080:63;;6036:117;5831:329;;;;:::o;6166:116::-;6236:21;6251:5;6236:21;:::i;:::-;6229:5;6226:32;6216:60;;6272:1;6269;6262:12;6216:60;6166:116;:::o;6288:133::-;6331:5;6369:6;6356:20;6347:29;;6385:30;6409:5;6385:30;:::i;:::-;6288:133;;;;:::o;6427:468::-;6492:6;6500;6549:2;6537:9;6528:7;6524:23;6520:32;6517:119;;;6555:79;;:::i;:::-;6517:119;6675:1;6700:53;6745:7;6736:6;6725:9;6721:22;6700:53;:::i;:::-;6690:63;;6646:117;6802:2;6828:50;6870:7;6861:6;6850:9;6846:22;6828:50;:::i;:::-;6818:60;;6773:115;6427:468;;;;;:::o;6901:118::-;6988:24;7006:5;6988:24;:::i;:::-;6983:3;6976:37;6901:118;;:::o;7025:222::-;7118:4;7156:2;7145:9;7141:18;7133:26;;7169:71;7237:1;7226:9;7222:17;7213:6;7169:71;:::i;:::-;7025:222;;;;:::o;7253:323::-;7309:6;7358:2;7346:9;7337:7;7333:23;7329:32;7326:119;;;7364:79;;:::i;:::-;7326:119;7484:1;7509:50;7551:7;7542:6;7531:9;7527:22;7509:50;:::i;:::-;7499:60;;7455:114;7253:323;;;;:::o;7582:474::-;7650:6;7658;7707:2;7695:9;7686:7;7682:23;7678:32;7675:119;;;7713:79;;:::i;:::-;7675:119;7833:1;7858:53;7903:7;7894:6;7883:9;7879:22;7858:53;:::i;:::-;7848:63;;7804:117;7960:2;7986:53;8031:7;8022:6;8011:9;8007:22;7986:53;:::i;:::-;7976:63;;7931:118;7582:474;;;;;:::o;8062:180::-;8110:77;8107:1;8100:88;8207:4;8204:1;8197:15;8231:4;8228:1;8221:15;8248:320;8292:6;8329:1;8323:4;8319:12;8309:22;;8376:1;8370:4;8366:12;8397:18;8387:81;;8453:4;8445:6;8441:17;8431:27;;8387:81;8515:2;8507:6;8504:14;8484:18;8481:38;8478:84;;8534:18;;:::i;:::-;8478:84;8299:269;8248:320;;;:::o;8574:182::-;8714:34;8710:1;8702:6;8698:14;8691:58;8574:182;:::o;8762:366::-;8904:3;8925:67;8989:2;8984:3;8925:67;:::i;:::-;8918:74;;9001:93;9090:3;9001:93;:::i;:::-;9119:2;9114:3;9110:12;9103:19;;8762:366;;;:::o;9134:419::-;9300:4;9338:2;9327:9;9323:18;9315:26;;9387:9;9381:4;9377:20;9373:1;9362:9;9358:17;9351:47;9415:131;9541:4;9415:131;:::i;:::-;9407:139;;9134:419;;;:::o;9559:177::-;9699:29;9695:1;9687:6;9683:14;9676:53;9559:177;:::o;9742:366::-;9884:3;9905:67;9969:2;9964:3;9905:67;:::i;:::-;9898:74;;9981:93;10070:3;9981:93;:::i;:::-;10099:2;10094:3;10090:12;10083:19;;9742:366;;;:::o;10114:419::-;10280:4;10318:2;10307:9;10303:18;10295:26;;10367:9;10361:4;10357:20;10353:1;10342:9;10338:17;10331:47;10395:131;10521:4;10395:131;:::i;:::-;10387:139;;10114:419;;;:::o;10539:180::-;10587:77;10584:1;10577:88;10684:4;10681:1;10674:15;10708:4;10705:1;10698:15;10725:180;10773:77;10770:1;10763:88;10870:4;10867:1;10860:15;10894:4;10891:1;10884:15;10911:194;10951:4;10971:20;10989:1;10971:20;:::i;:::-;10966:25;;11005:20;11023:1;11005:20;:::i;:::-;11000:25;;11049:1;11046;11042:9;11034:17;;11073:1;11067:4;11064:11;11061:37;;;11078:18;;:::i;:::-;11061:37;10911:194;;;;:::o;11111:180::-;11159:77;11156:1;11149:88;11256:4;11253:1;11246:15;11280:4;11277:1;11270:15;11297:233;11336:3;11359:24;11377:5;11359:24;:::i;:::-;11350:33;;11405:66;11398:5;11395:77;11392:103;;11475:18;;:::i;:::-;11392:103;11522:1;11515:5;11511:13;11504:20;;11297:233;;;:::o;11536:181::-;11676:33;11672:1;11664:6;11660:14;11653:57;11536:181;:::o;11723:366::-;11865:3;11886:67;11950:2;11945:3;11886:67;:::i;:::-;11879:74;;11962:93;12051:3;11962:93;:::i;:::-;12080:2;12075:3;12071:12;12064:19;;11723:366;;;:::o;12095:419::-;12261:4;12299:2;12288:9;12284:18;12276:26;;12348:9;12342:4;12338:20;12334:1;12323:9;12319:17;12312:47;12376:131;12502:4;12376:131;:::i;:::-;12368:139;;12095:419;;;:::o;12520:225::-;12660:34;12656:1;12648:6;12644:14;12637:58;12729:8;12724:2;12716:6;12712:15;12705:33;12520:225;:::o;12751:366::-;12893:3;12914:67;12978:2;12973:3;12914:67;:::i;:::-;12907:74;;12990:93;13079:3;12990:93;:::i;:::-;13108:2;13103:3;13099:12;13092:19;;12751:366;;;:::o;13123:419::-;13289:4;13327:2;13316:9;13312:18;13304:26;;13376:9;13370:4;13366:20;13362:1;13351:9;13347:17;13340:47;13404:131;13530:4;13404:131;:::i;:::-;13396:139;;13123:419;;;:::o;13548:223::-;13688:34;13684:1;13676:6;13672:14;13665:58;13757:6;13752:2;13744:6;13740:15;13733:31;13548:223;:::o;13777:366::-;13919:3;13940:67;14004:2;13999:3;13940:67;:::i;:::-;13933:74;;14016:93;14105:3;14016:93;:::i;:::-;14134:2;14129:3;14125:12;14118:19;;13777:366;;;:::o;14149:419::-;14315:4;14353:2;14342:9;14338:18;14330:26;;14402:9;14396:4;14392:20;14388:1;14377:9;14373:17;14366:47;14430:131;14556:4;14430:131;:::i;:::-;14422:139;;14149:419;;;:::o;14574:221::-;14714:34;14710:1;14702:6;14698:14;14691:58;14783:4;14778:2;14770:6;14766:15;14759:29;14574:221;:::o;14801:366::-;14943:3;14964:67;15028:2;15023:3;14964:67;:::i;:::-;14957:74;;15040:93;15129:3;15040:93;:::i;:::-;15158:2;15153:3;15149:12;15142:19;;14801:366;;;:::o;15173:419::-;15339:4;15377:2;15366:9;15362:18;15354:26;;15426:9;15420:4;15416:20;15412:1;15401:9;15397:17;15390:47;15454:131;15580:4;15454:131;:::i;:::-;15446:139;;15173:419;;;:::o;15598:228::-;15738:34;15734:1;15726:6;15722:14;15715:58;15807:11;15802:2;15794:6;15790:15;15783:36;15598:228;:::o;15832:366::-;15974:3;15995:67;16059:2;16054:3;15995:67;:::i;:::-;15988:74;;16071:93;16160:3;16071:93;:::i;:::-;16189:2;16184:3;16180:12;16173:19;;15832:366;;;:::o;16204:419::-;16370:4;16408:2;16397:9;16393:18;16385:26;;16457:9;16451:4;16447:20;16443:1;16432:9;16428:17;16421:47;16485:131;16611:4;16485:131;:::i;:::-;16477:139;;16204:419;;;:::o;16629:227::-;16769:34;16765:1;16757:6;16753:14;16746:58;16838:10;16833:2;16825:6;16821:15;16814:35;16629:227;:::o;16862:366::-;17004:3;17025:67;17089:2;17084:3;17025:67;:::i;:::-;17018:74;;17101:93;17190:3;17101:93;:::i;:::-;17219:2;17214:3;17210:12;17203:19;;16862:366;;;:::o;17234:419::-;17400:4;17438:2;17427:9;17423:18;17415:26;;17487:9;17481:4;17477:20;17473:1;17462:9;17458:17;17451:47;17515:131;17641:4;17515:131;:::i;:::-;17507:139;;17234:419;;;:::o;17659:191::-;17699:3;17718:20;17736:1;17718:20;:::i;:::-;17713:25;;17752:20;17770:1;17752:20;:::i;:::-;17747:25;;17795:1;17792;17788:9;17781:16;;17816:3;17813:1;17810:10;17807:36;;;17823:18;;:::i;:::-;17807:36;17659:191;;;;:::o;17856:180::-;17904:77;17901:1;17894:88;18001:4;17998:1;17991:15;18025:4;18022:1;18015:15;18042:185;18082:1;18099:20;18117:1;18099:20;:::i;:::-;18094:25;;18133:20;18151:1;18133:20;:::i;:::-;18128:25;;18172:1;18162:35;;18177:18;;:::i;:::-;18162:35;18219:1;18216;18212:9;18207:14;;18042:185;;;;:::o;18233:410::-;18273:7;18296:20;18314:1;18296:20;:::i;:::-;18291:25;;18330:20;18348:1;18330:20;:::i;:::-;18325:25;;18385:1;18382;18378:9;18407:30;18425:11;18407:30;:::i;:::-;18396:41;;18586:1;18577:7;18573:15;18570:1;18567:22;18547:1;18540:9;18520:83;18497:139;;18616:18;;:::i;:::-;18497:139;18281:362;18233:410;;;;:::o

Swarm Source

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