ETH Price: $2,768.30 (+1.39%)
 

Overview

Max Total Supply

10,000,000,000 BITMAX

Holders

30

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
20,250,880.685456865 BITMAX

Value
$0.00
0xc7196fa619e6765b9438892a61d51ca067c73246
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:
BitMax

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-06-22
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

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 = _msgSender();
        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 BitMax is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    mapping (address => uint256) private _rOwned;
    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;
    address payable public _burnWalletAddress;
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 10000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    string private _name = "BitMax";
    string private _symbol = "BITMAX";
    uint8 private _decimals = 9;
    uint256 public _taxFee = 20;
    uint256 private _previousTaxFee = _taxFee;
    uint256 public _burnFee = 20;
    uint256 private _previousBurnFee = _burnFee;
    uint256 public _liquidityFee = 20;
    uint256 private _previousLiquidityFee = _liquidityFee;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    uint256 public _maxTxAmount = 100000000 * 10**9;
    uint256 public numTokensSellToAddToLiquidity = 10000000 * 10**9;
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity);
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    constructor (address payable burnWalletAddress) {
        _burnWalletAddress = burnWalletAddress;
        _rOwned[owner()] = _rTotal;
        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() external view returns (string memory) {
        return _name;
    }
    function symbol() external view returns (string memory) {
        return _symbol;
    }
    function decimals() external view returns (uint8) {
        return _decimals;
    }
    function totalSupply() external view override returns (uint256) {
        return _tTotal;
    }
    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address owner, address spender) external view override returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(address sender, address recipient, uint256 amount) external 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) external virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
    function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
    function isExcludedFromReward(address account) external view returns (bool) {
        return _isExcluded[account];
    }
    function totalFees() external view returns (uint256) {
        return _tFeeTotal;
    }
    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_taxFee).div(10**3);
    }
    function calculateBurnFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_burnFee).div(10**3);
    }
    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_liquidityFee).div(10**3);
    }
    function deliver(uint256 tAmount) external {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }
    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) external 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 tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }
    function excludeFromReward(address account) external onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }
    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 _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
    (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tBurn) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);        
        _takeLiquidity(tLiquidity);
        _takeBurn(tBurn, sender);
        _reflectFee(rFee, tFee);
    emit Transfer(sender, recipient, tTransferAmount);
    }
    function excludeFromFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    function includeInFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = false;
    }
    function setTaxFeePercent(uint256 taxFee) external onlyOwner() {
        require(taxFee <= 50, 'Tax fees can not be higher than 50 [5%]');
        _taxFee = taxFee;
    }
    function setBurnFeePercent(uint256 burnFee) external onlyOwner() {
        require(burnFee <= 50, 'Burn fees can not be higher than 50 [5%]');
        _burnFee = burnFee;
    }
    function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() {
        require(liquidityFee <= 50, 'Liquidity fees can not be higher than 50 [5%]');
        _liquidityFee = liquidityFee;
    }
    function _setBurnWalletAddress(address payable burnWalletAddress) external onlyOwner() {
        _burnWalletAddress = burnWalletAddress;
    }
    function setmaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }
    function setTokensSellToAddToLiquidity(uint256 TokensSellToAddToLiquidity) external onlyOwner() {
        numTokensSellToAddToLiquidity = TokensSellToAddToLiquidity;
    }
    function setSwapAndLiquifyEnabled(bool _enabled) external 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 tBurn) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, tBurn, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity, tBurn);
    }
    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tBurn = calculateBurnFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity).sub(tBurn);
        return (tTransferAmount, tFee, tLiquidity, tBurn);
    }
    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 tBurn, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rBurn = tBurn.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity).sub(rBurn);
        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 (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_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);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }
    function _takeBurn(uint256 tBurn, address sender) private {
        uint256 currentRate =  _getRate();
        uint256 rBurn = tBurn.mul(currentRate);
        _rOwned[_burnWalletAddress] = _rOwned[_burnWalletAddress].add(rBurn);
        if(_isExcluded[_burnWalletAddress])
            _tOwned[_burnWalletAddress] = _tOwned[_burnWalletAddress].add(tBurn);
        emit Transfer(sender, _burnWalletAddress, tBurn);
    }
    function removeAllFee() private {
        if(_taxFee == 0 && _liquidityFee == 0) return;
        _previousTaxFee = _taxFee;
        _previousBurnFee = _burnFee;
        _previousLiquidityFee = _liquidityFee;
        _taxFee = 0;
        _burnFee = 0;
        _liquidityFee = 0;
    }
    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _burnFee = _previousBurnFee;
        _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(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if(from != owner() && to != owner())
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
        uint256 contractTokenBalance = balanceOf(address(this));
        if(contractTokenBalance >= _maxTxAmount)
        {
            contractTokenBalance = _maxTxAmount;
        }
        bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            swapAndLiquifyEnabled
        ) {
            contractTokenBalance = numTokensSellToAddToLiquidity;
            swapAndLiquify(contractTokenBalance);
        }
        bool takeFee = true;
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            takeFee = false;
        }
        _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 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
        );
    }
    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
        if(!takeFee)
            removeAllFee();
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        if(!takeFee)
            restoreAllFee();
    }
    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tBurn) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _takeBurn(tBurn, sender);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tBurn) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);           
        _takeLiquidity(tLiquidity);
        _takeBurn(tBurn, sender);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tBurn) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        _takeLiquidity(tLiquidity);
        _takeBurn(tBurn, sender);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"burnWalletAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"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":"_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_burnWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":[{"internalType":"address payable","name":"burnWalletAddress","type":"address"}],"name":"_setBurnWalletAddress","outputs":[],"stateMutability":"nonpayable","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":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"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":"numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uint256","name":"burnFee","type":"uint256"}],"name":"setBurnFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"TokensSellToAddToLiquidity","type":"uint256"}],"name":"setTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setmaxTxAmount","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":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"}]

60c0604052678ac7230489e80000600881905562000020906000196200054c565b6200002e90600019620004eb565b60095560408051808201909152600680825265084d2e89ac2f60d31b60209092019182526200006091600b916200041f565b506040805180820190915260068082526508492a89a82b60d31b60209092019182526200009091600c916200041f565b50600d805460ff191660091790556014600e819055600f8190556010819055601181905560128190556013819055805461ff00191661010017905567016345785d8a0000601555662386f26fc10000601655348015620000ef57600080fd5b5060405162002f0b38038062002f0b8339810160408190526200011291620004c5565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600780546001600160a01b0319166001600160a01b03831617905560095460016000620001866000546001600160a01b031690565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001fd57600080fd5b505afa15801562000212573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002389190620004c5565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200028157600080fd5b505afa15801562000296573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bc9190620004c5565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200030557600080fd5b505af11580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003409190620004c5565b6001600160601b0319606091821b811660a0529082901b16608052600160046000620003746000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526004909252902080549091166001179055620003c76000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008546040516200040f91815260200190565b60405180910390a3505062000586565b8280546200042d906200050f565b90600052602060002090601f0160209004810192826200045157600085556200049c565b82601f106200046c57805160ff19168380011785556200049c565b828001600101855582156200049c579182015b828111156200049c5782518255916020019190600101906200047f565b50620004aa929150620004ae565b5090565b5b80821115620004aa5760008155600101620004af565b600060208284031215620004d7578081fd5b8151620004e4816200056d565b9392505050565b6000828210156200050a57634e487b7160e01b81526011600452602481fd5b500390565b600181811c908216806200052457607f821691505b602082108114156200054657634e487b7160e01b600052602260045260246000fd5b50919050565b6000826200056857634e487b7160e01b81526012600452602481fd5b500690565b6001600160a01b03811681146200058357600080fd5b50565b60805160601c60a05160601c61292f620005dc600039600081816104b201526116f80152600081816102f901528181611d7701528181611e4d01528181611e8901528181611efb0152611f22015261292f6000f3fe60806040526004361061023f5760003560e01c80635342acb41161012e578063a457c2d7116100ab578063d12a76881161006f578063d12a7688146106ef578063dd62ed3e14610705578063ea0769fe1461074b578063ea2f0b371461076b578063f2fde38b1461078b57600080fd5b8063a457c2d714610659578063a9059cbb14610679578063c0b0fda214610699578063c49b9a80146106af578063cea26958146106cf57600080fd5b80637d1db4a5116100f25780637d1db4a5146105b757806388f82020146105cd5780638da5cb5b146106065780638ee88c531461062457806395d89b411461064457600080fd5b80635342acb41461051357806365e47de21461054c5780636bc87c3a1461056c57806370a0823114610582578063715018a6146105a257600080fd5b806334f9c003116101bc578063437823ec11610180578063437823ec146104605780634549b0391461048057806349bd5a5e146104a05780634a74bb02146104d457806352390c02146104f357600080fd5b806334f9c003146103ca5780633685d419146103ea578063395093511461040a5780633b124fe71461042a5780633bd5d1731461044057600080fd5b806318160ddd1161020357806318160ddd146103335780631a9b30531461034857806323b872dd146103685780632d83811914610388578063313ce567146103a857600080fd5b8063061c82d01461024b57806306fdde031461026d578063095ea7b31461029857806313114a9d146102c85780631694505e146102e757600080fd5b3661024657005b600080fd5b34801561025757600080fd5b5061026b610266366004612652565b6107ab565b005b34801561027957600080fd5b50610282610844565b60405161028f91906126c2565b60405180910390f35b3480156102a457600080fd5b506102b86102b336600461260d565b6108d6565b604051901515815260200161028f565b3480156102d457600080fd5b50600a545b60405190815260200161028f565b3480156102f357600080fd5b5061031b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161028f565b34801561033f57600080fd5b506008546102d9565b34801561035457600080fd5b5060075461031b906001600160a01b031681565b34801561037457600080fd5b506102b86103833660046125cd565b6108ed565b34801561039457600080fd5b506102d96103a3366004612652565b610956565b3480156103b457600080fd5b50600d5460405160ff909116815260200161028f565b3480156103d657600080fd5b5061026b6103e5366004612652565b6109da565b3480156103f657600080fd5b5061026b61040536600461255d565b610a09565b34801561041657600080fd5b506102b861042536600461260d565b610bf8565b34801561043657600080fd5b506102d9600e5481565b34801561044c57600080fd5b5061026b61045b366004612652565b610c2e565b34801561046c57600080fd5b5061026b61047b36600461255d565b610d1a565b34801561048c57600080fd5b506102d961049b36600461266a565b610d68565b3480156104ac57600080fd5b5061031b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e057600080fd5b506014546102b890610100900460ff1681565b3480156104ff57600080fd5b5061026b61050e36600461255d565b610df7565b34801561051f57600080fd5b506102b861052e36600461255d565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561055857600080fd5b5061026b610567366004612652565b610f4a565b34801561057857600080fd5b506102d960125481565b34801561058e57600080fd5b506102d961059d36600461255d565b610f79565b3480156105ae57600080fd5b5061026b610fd8565b3480156105c357600080fd5b506102d960155481565b3480156105d957600080fd5b506102b86105e836600461255d565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561061257600080fd5b506000546001600160a01b031661031b565b34801561063057600080fd5b5061026b61063f366004612652565b61104c565b34801561065057600080fd5b506102826110e2565b34801561066557600080fd5b506102b861067436600461260d565b6110f1565b34801561068557600080fd5b506102b861069436600461260d565b611140565b3480156106a557600080fd5b506102d960105481565b3480156106bb57600080fd5b5061026b6106ca366004612638565b61114d565b3480156106db57600080fd5b5061026b6106ea366004612652565b6111cb565b3480156106fb57600080fd5b506102d960165481565b34801561071157600080fd5b506102d9610720366004612595565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561075757600080fd5b5061026b61076636600461255d565b61125c565b34801561077757600080fd5b5061026b61078636600461255d565b6112a8565b34801561079757600080fd5b5061026b6107a636600461255d565b6112f3565b6000546001600160a01b031633146107de5760405162461bcd60e51b81526004016107d590612715565b60405180910390fd5b603281111561083f5760405162461bcd60e51b815260206004820152602760248201527f54617820666565732063616e206e6f7420626520686967686572207468616e206044820152663530205b35255d60c81b60648201526084016107d5565b600e55565b6060600b805461085390612828565b80601f016020809104026020016040519081016040528092919081815260200182805461087f90612828565b80156108cc5780601f106108a1576101008083540402835291602001916108cc565b820191906000526020600020905b8154815290600101906020018083116108af57829003601f168201915b5050505050905090565b60006108e33384846113dd565b5060015b92915050565b60006108fa848484611501565b61094c8433610947856040518060600160405280602881526020016128ad602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906117b2565b6113dd565b5060019392505050565b60006009548211156109bd5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016107d5565b60006109c76117de565b90506109d38382611801565b9392505050565b6000546001600160a01b03163314610a045760405162461bcd60e51b81526004016107d590612715565b601655565b6000546001600160a01b03163314610a335760405162461bcd60e51b81526004016107d590612715565b6001600160a01b03811660009081526005602052604090205460ff16610a9b5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c75646564000000000060448201526064016107d5565b60005b600654811015610bf457816001600160a01b031660068281548110610ad357634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610be25760068054610afe90600190612811565b81548110610b1c57634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600680546001600160a01b039092169183908110610b5657634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556006805480610bbc57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610bec81612863565b915050610a9e565b5050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916108e3918590610947908661180d565b3360008181526005602052604090205460ff1615610ca35760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016107d5565b6000610cae83611819565b5050506001600160a01b038616600090815260016020526040902054939450610cdc93925084915050611874565b6001600160a01b038316600090815260016020526040902055600954610d029082611874565b600955600a54610d12908461180d565b600a55505050565b6000546001600160a01b03163314610d445760405162461bcd60e51b81526004016107d590612715565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600854831115610dbc5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016107d5565b81610ddc576000610dcc84611819565b509496506108e795505050505050565b6000610de784611819565b509396506108e795505050505050565b6000546001600160a01b03163314610e215760405162461bcd60e51b81526004016107d590612715565b6001600160a01b03811660009081526005602052604090205460ff1615610e8a5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016107d5565b6001600160a01b03811660009081526001602052604090205415610ee4576001600160a01b038116600090815260016020526040902054610eca90610956565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6000546001600160a01b03163314610f745760405162461bcd60e51b81526004016107d590612715565b601555565b6001600160a01b03811660009081526005602052604081205460ff1615610fb657506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546108e790610956565b6000546001600160a01b031633146110025760405162461bcd60e51b81526004016107d590612715565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146110765760405162461bcd60e51b81526004016107d590612715565b60328111156110dd5760405162461bcd60e51b815260206004820152602d60248201527f4c697175696469747920666565732063616e206e6f742062652068696768657260448201526c207468616e203530205b35255d60981b60648201526084016107d5565b601255565b6060600c805461085390612828565b60006108e33384610947856040518060600160405280602581526020016128d5602591393360009081526003602090815260408083206001600160a01b038d16845290915290205491906117b2565b60006108e3338484611501565b6000546001600160a01b031633146111775760405162461bcd60e51b81526004016107d590612715565b601480548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906111c090831515815260200190565b60405180910390a150565b6000546001600160a01b031633146111f55760405162461bcd60e51b81526004016107d590612715565b60328111156112575760405162461bcd60e51b815260206004820152602860248201527f4275726e20666565732063616e206e6f7420626520686967686572207468616e604482015267203530205b35255d60c01b60648201526084016107d5565b601055565b6000546001600160a01b031633146112865760405162461bcd60e51b81526004016107d590612715565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146112d25760405162461bcd60e51b81526004016107d590612715565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b0316331461131d5760405162461bcd60e51b81526004016107d590612715565b6001600160a01b0381166113825760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107d5565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661143f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107d5565b6001600160a01b0382166114a05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107d5565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115655760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107d5565b6001600160a01b0382166115c75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107d5565b600081116116295760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107d5565b6000546001600160a01b0384811691161480159061165557506000546001600160a01b03838116911614155b156116bd576015548111156116bd5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016107d5565b60006116c830610f79565b905060155481106116d857506015545b601654811080159081906116ef575060145460ff16155b801561172d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b80156117405750601454610100900460ff165b1561175357601654915061175382611880565b6001600160a01b03851660009081526004602052604090205460019060ff168061179557506001600160a01b03851660009081526004602052604090205460ff165b1561179e575060005b6117aa8686868461191e565b505050505050565b600081848411156117d65760405162461bcd60e51b81526004016107d591906126c2565b505050900390565b60008060006117eb611aa1565b90925090506117fa8282611801565b9250505090565b60006109d382846127d2565b60006109d382846127ba565b60008060008060008060008060008060006118338c611c5b565b935093509350935060008060006118548f87878761184f6117de565b611cb0565b919f509d509b509599509397509195509350505050919395979092949650565b60006109d38284612811565b6014805460ff19166001179055600061189a826002611801565b905060006118a88383611874565b9050476118b483611d12565b60006118c04783611874565b90506118cc8382611ef5565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150506014805460ff19169055505050565b8061192b5761192b61200a565b6001600160a01b03841660009081526005602052604090205460ff16801561196c57506001600160a01b03831660009081526005602052604090205460ff16155b156119815761197c848484612043565b611a7f565b6001600160a01b03841660009081526005602052604090205460ff161580156119c257506001600160a01b03831660009081526005602052604090205460ff165b156119d25761197c84848461218a565b6001600160a01b03841660009081526005602052604090205460ff16158015611a1457506001600160a01b03831660009081526005602052604090205460ff16155b15611a245761197c848484612249565b6001600160a01b03841660009081526005602052604090205460ff168015611a6457506001600160a01b03831660009081526005602052604090205460ff165b15611a745761197c8484846122a3565b611a7f848484612249565b80611a9b57611a9b600f54600e55601154601055601354601255565b50505050565b6009546008546000918291825b600654811015611c2b57826001600060068481548110611ade57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611b575750816002600060068481548110611b3057634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611b6d57600954600854945094505050509091565b611bc16001600060068481548110611b9557634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611874565b9250611c176002600060068481548110611beb57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611874565b915080611c2381612863565b915050611aae565b50600854600954611c3b91611801565b821015611c52576009546008549350935050509091565b90939092509050565b6000806000806000611c6c8661232c565b90506000611c798761234f565b90506000611c868861236c565b90506000611ca082611c9a85818d89611874565b90611874565b9993985091965094509092505050565b6000808080611cbf8986612389565b90506000611ccd8987612389565b90506000611cdb8988612389565b90506000611ce98989612389565b90506000611cfd82611c9a85818989611874565b949d949c50929a509298505050505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d5557634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611dce57600080fd5b505afa158015611de2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e069190612579565b81600181518110611e2757634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050611e72307f0000000000000000000000000000000000000000000000000000000000000000846113dd565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611ec790859060009086903090429060040161274a565b600060405180830381600087803b158015611ee157600080fd5b505af11580156117aa573d6000803e3d6000fd5b611f20307f0000000000000000000000000000000000000000000000000000000000000000846113dd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d719823085600080611f676000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015611fca57600080fd5b505af1158015611fde573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120039190612695565b5050505050565b600e5415801561201a5750601254155b1561202157565b600e8054600f5560108054601155601280546013556000928390559082905555565b600080600080600080600061205788611819565b965096509650965096509650965061209d88600260008d6001600160a01b03166001600160a01b031681526020019081526020016000205461187490919063ffffffff16565b6001600160a01b038b166000908152600260209081526040808320939093556001905220546120cc9088611874565b6001600160a01b03808c1660009081526001602052604080822093909355908b16815220546120fb908761180d565b6001600160a01b038a1660009081526001602052604090205561211d82612395565b612127818b61241e565b6121318584612524565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161217691815260200190565b60405180910390a350505050505050505050565b600080600080600080600061219e88611819565b96509650965096509650965096506121e487600160008d6001600160a01b03166001600160a01b031681526020019081526020016000205461187490919063ffffffff16565b6001600160a01b03808c16600090815260016020908152604080832094909455918c1681526002909152205461221a908561180d565b6001600160a01b038a166000908152600260209081526040808320939093556001905220546120fb908761180d565b600080600080600080600061225d88611819565b96509650965096509650965096506120cc87600160008d6001600160a01b03166001600160a01b031681526020019081526020016000205461187490919063ffffffff16565b60008060008060008060006122b788611819565b96509650965096509650965096506122fd88600260008d6001600160a01b03166001600160a01b031681526020019081526020016000205461187490919063ffffffff16565b6001600160a01b038b166000908152600260209081526040808320939093556001905220546121e49088611874565b60006108e76103e8612349600e548561238990919063ffffffff16565b90611801565b60006108e76103e86123496012548561238990919063ffffffff16565b60006108e76103e86123496010548561238990919063ffffffff16565b60006109d382846127f2565b600061239f6117de565b905060006123ad8383612389565b306000908152600160205260409020549091506123ca908261180d565b3060009081526001602090815260408083209390935560059052205460ff16156124195730600090815260026020526040902054612408908461180d565b306000908152600260205260409020555b505050565b60006124286117de565b905060006124368483612389565b6007546001600160a01b031660009081526001602052604090205490915061245e908261180d565b600780546001600160a01b03908116600090815260016020908152604080832095909555925490911681526005909152205460ff16156124d9576007546001600160a01b03166000908152600260205260409020546124bd908561180d565b6007546001600160a01b03166000908152600260205260409020555b6007546040518581526001600160a01b03918216918516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b6009546125319083611874565b600955600a54612541908261180d565b600a555050565b8035801515811461255857600080fd5b919050565b60006020828403121561256e578081fd5b81356109d381612894565b60006020828403121561258a578081fd5b81516109d381612894565b600080604083850312156125a7578081fd5b82356125b281612894565b915060208301356125c281612894565b809150509250929050565b6000806000606084860312156125e1578081fd5b83356125ec81612894565b925060208401356125fc81612894565b929592945050506040919091013590565b6000806040838503121561261f578182fd5b823561262a81612894565b946020939093013593505050565b600060208284031215612649578081fd5b6109d382612548565b600060208284031215612663578081fd5b5035919050565b6000806040838503121561267c578182fd5b8235915061268c60208401612548565b90509250929050565b6000806000606084860312156126a9578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b818110156126ee578581018301518582016040015282016126d2565b818111156126ff5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156127995784516001600160a01b031683529383019391830191600101612774565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156127cd576127cd61287e565b500190565b6000826127ed57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561280c5761280c61287e565b500290565b6000828210156128235761282361287e565b500390565b600181811c9082168061283c57607f821691505b6020821081141561285d57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156128775761287761287e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146128a957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202da7673ee3d7bc3c2e63c556872d8798a855e7c3abd9ed9e77c8a43017425a6464736f6c63430008040033000000000000000000000000000000000000000000000000000000000000dead

Deployed Bytecode

0x60806040526004361061023f5760003560e01c80635342acb41161012e578063a457c2d7116100ab578063d12a76881161006f578063d12a7688146106ef578063dd62ed3e14610705578063ea0769fe1461074b578063ea2f0b371461076b578063f2fde38b1461078b57600080fd5b8063a457c2d714610659578063a9059cbb14610679578063c0b0fda214610699578063c49b9a80146106af578063cea26958146106cf57600080fd5b80637d1db4a5116100f25780637d1db4a5146105b757806388f82020146105cd5780638da5cb5b146106065780638ee88c531461062457806395d89b411461064457600080fd5b80635342acb41461051357806365e47de21461054c5780636bc87c3a1461056c57806370a0823114610582578063715018a6146105a257600080fd5b806334f9c003116101bc578063437823ec11610180578063437823ec146104605780634549b0391461048057806349bd5a5e146104a05780634a74bb02146104d457806352390c02146104f357600080fd5b806334f9c003146103ca5780633685d419146103ea578063395093511461040a5780633b124fe71461042a5780633bd5d1731461044057600080fd5b806318160ddd1161020357806318160ddd146103335780631a9b30531461034857806323b872dd146103685780632d83811914610388578063313ce567146103a857600080fd5b8063061c82d01461024b57806306fdde031461026d578063095ea7b31461029857806313114a9d146102c85780631694505e146102e757600080fd5b3661024657005b600080fd5b34801561025757600080fd5b5061026b610266366004612652565b6107ab565b005b34801561027957600080fd5b50610282610844565b60405161028f91906126c2565b60405180910390f35b3480156102a457600080fd5b506102b86102b336600461260d565b6108d6565b604051901515815260200161028f565b3480156102d457600080fd5b50600a545b60405190815260200161028f565b3480156102f357600080fd5b5061031b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161028f565b34801561033f57600080fd5b506008546102d9565b34801561035457600080fd5b5060075461031b906001600160a01b031681565b34801561037457600080fd5b506102b86103833660046125cd565b6108ed565b34801561039457600080fd5b506102d96103a3366004612652565b610956565b3480156103b457600080fd5b50600d5460405160ff909116815260200161028f565b3480156103d657600080fd5b5061026b6103e5366004612652565b6109da565b3480156103f657600080fd5b5061026b61040536600461255d565b610a09565b34801561041657600080fd5b506102b861042536600461260d565b610bf8565b34801561043657600080fd5b506102d9600e5481565b34801561044c57600080fd5b5061026b61045b366004612652565b610c2e565b34801561046c57600080fd5b5061026b61047b36600461255d565b610d1a565b34801561048c57600080fd5b506102d961049b36600461266a565b610d68565b3480156104ac57600080fd5b5061031b7f0000000000000000000000004b4d4949c17a8cd6bbadc0a2b46a1a132f253c0081565b3480156104e057600080fd5b506014546102b890610100900460ff1681565b3480156104ff57600080fd5b5061026b61050e36600461255d565b610df7565b34801561051f57600080fd5b506102b861052e36600461255d565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561055857600080fd5b5061026b610567366004612652565b610f4a565b34801561057857600080fd5b506102d960125481565b34801561058e57600080fd5b506102d961059d36600461255d565b610f79565b3480156105ae57600080fd5b5061026b610fd8565b3480156105c357600080fd5b506102d960155481565b3480156105d957600080fd5b506102b86105e836600461255d565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561061257600080fd5b506000546001600160a01b031661031b565b34801561063057600080fd5b5061026b61063f366004612652565b61104c565b34801561065057600080fd5b506102826110e2565b34801561066557600080fd5b506102b861067436600461260d565b6110f1565b34801561068557600080fd5b506102b861069436600461260d565b611140565b3480156106a557600080fd5b506102d960105481565b3480156106bb57600080fd5b5061026b6106ca366004612638565b61114d565b3480156106db57600080fd5b5061026b6106ea366004612652565b6111cb565b3480156106fb57600080fd5b506102d960165481565b34801561071157600080fd5b506102d9610720366004612595565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561075757600080fd5b5061026b61076636600461255d565b61125c565b34801561077757600080fd5b5061026b61078636600461255d565b6112a8565b34801561079757600080fd5b5061026b6107a636600461255d565b6112f3565b6000546001600160a01b031633146107de5760405162461bcd60e51b81526004016107d590612715565b60405180910390fd5b603281111561083f5760405162461bcd60e51b815260206004820152602760248201527f54617820666565732063616e206e6f7420626520686967686572207468616e206044820152663530205b35255d60c81b60648201526084016107d5565b600e55565b6060600b805461085390612828565b80601f016020809104026020016040519081016040528092919081815260200182805461087f90612828565b80156108cc5780601f106108a1576101008083540402835291602001916108cc565b820191906000526020600020905b8154815290600101906020018083116108af57829003601f168201915b5050505050905090565b60006108e33384846113dd565b5060015b92915050565b60006108fa848484611501565b61094c8433610947856040518060600160405280602881526020016128ad602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906117b2565b6113dd565b5060019392505050565b60006009548211156109bd5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016107d5565b60006109c76117de565b90506109d38382611801565b9392505050565b6000546001600160a01b03163314610a045760405162461bcd60e51b81526004016107d590612715565b601655565b6000546001600160a01b03163314610a335760405162461bcd60e51b81526004016107d590612715565b6001600160a01b03811660009081526005602052604090205460ff16610a9b5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c75646564000000000060448201526064016107d5565b60005b600654811015610bf457816001600160a01b031660068281548110610ad357634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610be25760068054610afe90600190612811565b81548110610b1c57634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600680546001600160a01b039092169183908110610b5657634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556006805480610bbc57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610bec81612863565b915050610a9e565b5050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916108e3918590610947908661180d565b3360008181526005602052604090205460ff1615610ca35760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016107d5565b6000610cae83611819565b5050506001600160a01b038616600090815260016020526040902054939450610cdc93925084915050611874565b6001600160a01b038316600090815260016020526040902055600954610d029082611874565b600955600a54610d12908461180d565b600a55505050565b6000546001600160a01b03163314610d445760405162461bcd60e51b81526004016107d590612715565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600854831115610dbc5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016107d5565b81610ddc576000610dcc84611819565b509496506108e795505050505050565b6000610de784611819565b509396506108e795505050505050565b6000546001600160a01b03163314610e215760405162461bcd60e51b81526004016107d590612715565b6001600160a01b03811660009081526005602052604090205460ff1615610e8a5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016107d5565b6001600160a01b03811660009081526001602052604090205415610ee4576001600160a01b038116600090815260016020526040902054610eca90610956565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6000546001600160a01b03163314610f745760405162461bcd60e51b81526004016107d590612715565b601555565b6001600160a01b03811660009081526005602052604081205460ff1615610fb657506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546108e790610956565b6000546001600160a01b031633146110025760405162461bcd60e51b81526004016107d590612715565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146110765760405162461bcd60e51b81526004016107d590612715565b60328111156110dd5760405162461bcd60e51b815260206004820152602d60248201527f4c697175696469747920666565732063616e206e6f742062652068696768657260448201526c207468616e203530205b35255d60981b60648201526084016107d5565b601255565b6060600c805461085390612828565b60006108e33384610947856040518060600160405280602581526020016128d5602591393360009081526003602090815260408083206001600160a01b038d16845290915290205491906117b2565b60006108e3338484611501565b6000546001600160a01b031633146111775760405162461bcd60e51b81526004016107d590612715565b601480548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906111c090831515815260200190565b60405180910390a150565b6000546001600160a01b031633146111f55760405162461bcd60e51b81526004016107d590612715565b60328111156112575760405162461bcd60e51b815260206004820152602860248201527f4275726e20666565732063616e206e6f7420626520686967686572207468616e604482015267203530205b35255d60c01b60648201526084016107d5565b601055565b6000546001600160a01b031633146112865760405162461bcd60e51b81526004016107d590612715565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146112d25760405162461bcd60e51b81526004016107d590612715565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b0316331461131d5760405162461bcd60e51b81526004016107d590612715565b6001600160a01b0381166113825760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107d5565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661143f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107d5565b6001600160a01b0382166114a05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107d5565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115655760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107d5565b6001600160a01b0382166115c75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107d5565b600081116116295760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107d5565b6000546001600160a01b0384811691161480159061165557506000546001600160a01b03838116911614155b156116bd576015548111156116bd5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016107d5565b60006116c830610f79565b905060155481106116d857506015545b601654811080159081906116ef575060145460ff16155b801561172d57507f0000000000000000000000004b4d4949c17a8cd6bbadc0a2b46a1a132f253c006001600160a01b0316856001600160a01b031614155b80156117405750601454610100900460ff165b1561175357601654915061175382611880565b6001600160a01b03851660009081526004602052604090205460019060ff168061179557506001600160a01b03851660009081526004602052604090205460ff165b1561179e575060005b6117aa8686868461191e565b505050505050565b600081848411156117d65760405162461bcd60e51b81526004016107d591906126c2565b505050900390565b60008060006117eb611aa1565b90925090506117fa8282611801565b9250505090565b60006109d382846127d2565b60006109d382846127ba565b60008060008060008060008060008060006118338c611c5b565b935093509350935060008060006118548f87878761184f6117de565b611cb0565b919f509d509b509599509397509195509350505050919395979092949650565b60006109d38284612811565b6014805460ff19166001179055600061189a826002611801565b905060006118a88383611874565b9050476118b483611d12565b60006118c04783611874565b90506118cc8382611ef5565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150506014805460ff19169055505050565b8061192b5761192b61200a565b6001600160a01b03841660009081526005602052604090205460ff16801561196c57506001600160a01b03831660009081526005602052604090205460ff16155b156119815761197c848484612043565b611a7f565b6001600160a01b03841660009081526005602052604090205460ff161580156119c257506001600160a01b03831660009081526005602052604090205460ff165b156119d25761197c84848461218a565b6001600160a01b03841660009081526005602052604090205460ff16158015611a1457506001600160a01b03831660009081526005602052604090205460ff16155b15611a245761197c848484612249565b6001600160a01b03841660009081526005602052604090205460ff168015611a6457506001600160a01b03831660009081526005602052604090205460ff165b15611a745761197c8484846122a3565b611a7f848484612249565b80611a9b57611a9b600f54600e55601154601055601354601255565b50505050565b6009546008546000918291825b600654811015611c2b57826001600060068481548110611ade57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611b575750816002600060068481548110611b3057634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611b6d57600954600854945094505050509091565b611bc16001600060068481548110611b9557634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611874565b9250611c176002600060068481548110611beb57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611874565b915080611c2381612863565b915050611aae565b50600854600954611c3b91611801565b821015611c52576009546008549350935050509091565b90939092509050565b6000806000806000611c6c8661232c565b90506000611c798761234f565b90506000611c868861236c565b90506000611ca082611c9a85818d89611874565b90611874565b9993985091965094509092505050565b6000808080611cbf8986612389565b90506000611ccd8987612389565b90506000611cdb8988612389565b90506000611ce98989612389565b90506000611cfd82611c9a85818989611874565b949d949c50929a509298505050505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d5557634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611dce57600080fd5b505afa158015611de2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e069190612579565b81600181518110611e2757634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050611e72307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846113dd565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611ec790859060009086903090429060040161274a565b600060405180830381600087803b158015611ee157600080fd5b505af11580156117aa573d6000803e3d6000fd5b611f20307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846113dd565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d719823085600080611f676000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015611fca57600080fd5b505af1158015611fde573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120039190612695565b5050505050565b600e5415801561201a5750601254155b1561202157565b600e8054600f5560108054601155601280546013556000928390559082905555565b600080600080600080600061205788611819565b965096509650965096509650965061209d88600260008d6001600160a01b03166001600160a01b031681526020019081526020016000205461187490919063ffffffff16565b6001600160a01b038b166000908152600260209081526040808320939093556001905220546120cc9088611874565b6001600160a01b03808c1660009081526001602052604080822093909355908b16815220546120fb908761180d565b6001600160a01b038a1660009081526001602052604090205561211d82612395565b612127818b61241e565b6121318584612524565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161217691815260200190565b60405180910390a350505050505050505050565b600080600080600080600061219e88611819565b96509650965096509650965096506121e487600160008d6001600160a01b03166001600160a01b031681526020019081526020016000205461187490919063ffffffff16565b6001600160a01b03808c16600090815260016020908152604080832094909455918c1681526002909152205461221a908561180d565b6001600160a01b038a166000908152600260209081526040808320939093556001905220546120fb908761180d565b600080600080600080600061225d88611819565b96509650965096509650965096506120cc87600160008d6001600160a01b03166001600160a01b031681526020019081526020016000205461187490919063ffffffff16565b60008060008060008060006122b788611819565b96509650965096509650965096506122fd88600260008d6001600160a01b03166001600160a01b031681526020019081526020016000205461187490919063ffffffff16565b6001600160a01b038b166000908152600260209081526040808320939093556001905220546121e49088611874565b60006108e76103e8612349600e548561238990919063ffffffff16565b90611801565b60006108e76103e86123496012548561238990919063ffffffff16565b60006108e76103e86123496010548561238990919063ffffffff16565b60006109d382846127f2565b600061239f6117de565b905060006123ad8383612389565b306000908152600160205260409020549091506123ca908261180d565b3060009081526001602090815260408083209390935560059052205460ff16156124195730600090815260026020526040902054612408908461180d565b306000908152600260205260409020555b505050565b60006124286117de565b905060006124368483612389565b6007546001600160a01b031660009081526001602052604090205490915061245e908261180d565b600780546001600160a01b03908116600090815260016020908152604080832095909555925490911681526005909152205460ff16156124d9576007546001600160a01b03166000908152600260205260409020546124bd908561180d565b6007546001600160a01b03166000908152600260205260409020555b6007546040518581526001600160a01b03918216918516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b6009546125319083611874565b600955600a54612541908261180d565b600a555050565b8035801515811461255857600080fd5b919050565b60006020828403121561256e578081fd5b81356109d381612894565b60006020828403121561258a578081fd5b81516109d381612894565b600080604083850312156125a7578081fd5b82356125b281612894565b915060208301356125c281612894565b809150509250929050565b6000806000606084860312156125e1578081fd5b83356125ec81612894565b925060208401356125fc81612894565b929592945050506040919091013590565b6000806040838503121561261f578182fd5b823561262a81612894565b946020939093013593505050565b600060208284031215612649578081fd5b6109d382612548565b600060208284031215612663578081fd5b5035919050565b6000806040838503121561267c578182fd5b8235915061268c60208401612548565b90509250929050565b6000806000606084860312156126a9578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b818110156126ee578581018301518582016040015282016126d2565b818111156126ff5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156127995784516001600160a01b031683529383019391830191600101612774565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156127cd576127cd61287e565b500190565b6000826127ed57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561280c5761280c61287e565b500290565b6000828210156128235761282361287e565b500390565b600181811c9082168061283c57607f821691505b6020821081141561285d57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156128775761287761287e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146128a957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202da7673ee3d7bc3c2e63c556872d8798a855e7c3abd9ed9e77c8a43017425a6464736f6c63430008040033

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

000000000000000000000000000000000000000000000000000000000000dead

-----Decoded View---------------
Arg [0] : burnWalletAddress (address): 0x000000000000000000000000000000000000dEaD

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000000000dead


Deployed Bytecode Sourcemap

14446:18122:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22127:173;;;;;;;;;;-1:-1:-1;22127:173:0;;;;;:::i;:::-;;:::i;:::-;;16735:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17645:163;;;;;;;;;;-1:-1:-1;17645:163:0;;;;;:::i;:::-;;:::i;:::-;;;4364:14:1;;4357:22;4339:41;;4327:2;4312:18;17645:163:0;4294:92:1;18766:89:0;;;;;;;;;;-1:-1:-1;18837:10:0;;18766:89;;;11712:25:1;;;11700:2;11685:18;18766:89:0;11667:76:1;15504:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3319:32:1;;;3301:51;;3289:2;3274:18;15504:51:0;3256:102:1;17012:97:0;;;;;;;;;;-1:-1:-1;17094:7:0;;17012:97;;14885:41;;;;;;;;;;-1:-1:-1;14885:41:0;;;;-1:-1:-1;;;;;14885:41:0;;;17814:315;;;;;;;;;;-1:-1:-1;17814:315:0;;;;;:::i;:::-;;:::i;20115:253::-;;;;;;;;;;-1:-1:-1;20115:253:0;;;;;:::i;:::-;;:::i;16921:85::-;;;;;;;;;;-1:-1:-1;16989:9:0;;16921:85;;16989:9;;;;13202:36:1;;13190:2;13175:18;16921:85:0;13157:87:1;22973:173:0;;;;;;;;;;-1:-1:-1;22973:173:0;;;;;:::i;:::-;;:::i;20715:479::-;;;;;;;;;;-1:-1:-1;20715:479:0;;;;;:::i;:::-;;:::i;18135:220::-;;;;;;;;;;-1:-1:-1;18135:220:0;;;;;:::i;:::-;;:::i;15235:27::-;;;;;;;;;;;;;;;;19283:380;;;;;;;;;;-1:-1:-1;19283:380:0;;;;;:::i;:::-;;:::i;21890:113::-;;;;;;;;;;-1:-1:-1;21890:113:0;;;;;:::i;:::-;;:::i;19669:440::-;;;;;;;;;;-1:-1:-1;19669:440:0;;;;;:::i;:::-;;:::i;15562:38::-;;;;;;;;;;;;;;;15635:40;;;;;;;;;;-1:-1:-1;15635:40:0;;;;;;;;;;;20374:335;;;;;;;;;;-1:-1:-1;20374:335:0;;;;;:::i;:::-;;:::i;26901:123::-;;;;;;;;;;-1:-1:-1;26901:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;26989:27:0;26965:4;26989:27;;;:18;:27;;;;;;;;;26901:123;22856:111;;;;;;;;;;-1:-1:-1;22856:111:0;;;;;:::i;:::-;;:::i;15402:33::-;;;;;;;;;;;;;;;;17115:198;;;;;;;;;;-1:-1:-1;17115:198:0;;;;;:::i;:::-;;:::i;7061:148::-;;;;;;;;;;;;;:::i;15682:47::-;;;;;;;;;;;;;;;;18638:122;;;;;;;;;;-1:-1:-1;18638:122:0;;;;;:::i;:::-;-1:-1:-1;;;;;18732:20:0;18708:4;18732:20;;;:11;:20;;;;;;;;;18638:122;6842:87;;;;;;;;;;-1:-1:-1;6888:7:0;6915:6;-1:-1:-1;;;;;6915:6:0;6842:87;;22491:209;;;;;;;;;;-1:-1:-1;22491:209:0;;;;;:::i;:::-;;:::i;16826:89::-;;;;;;;;;;;;;:::i;18361:271::-;;;;;;;;;;-1:-1:-1;18361:271:0;;;;;:::i;:::-;;:::i;17319:169::-;;;;;;;;;;-1:-1:-1;17319:169:0;;;;;:::i;:::-;;:::i;15317:28::-;;;;;;;;;;;;;;;;23152:173;;;;;;;;;;-1:-1:-1;23152:173:0;;;;;:::i;:::-;;:::i;22306:179::-;;;;;;;;;;-1:-1:-1;22306:179:0;;;;;:::i;:::-;;:::i;15736:63::-;;;;;;;;;;;;;;;;17494:145;;;;;;;;;;-1:-1:-1;17494:145:0;;;;;:::i;:::-;-1:-1:-1;;;;;17604:18:0;;;17577:7;17604:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;17494:145;22706:144;;;;;;;;;;-1:-1:-1;22706:144:0;;;;;:::i;:::-;;:::i;22009:112::-;;;;;;;;;;-1:-1:-1;22009:112:0;;;;;:::i;:::-;;:::i;7215:244::-;;;;;;;;;;-1:-1:-1;7215:244:0;;;;;:::i;:::-;;:::i;22127:173::-;6888:7;6915:6;-1:-1:-1;;;;;6915:6:0;3137:10;6975:23;6967:68;;;;-1:-1:-1;;;6967:68:0;;;;;;;:::i;:::-;;;;;;;;;22219:2:::1;22209:6;:12;;22201:64;;;::::0;-1:-1:-1;;;22201:64:0;;9722:2:1;22201:64:0::1;::::0;::::1;9704:21:1::0;9761:2;9741:18;;;9734:30;9800:34;9780:18;;;9773:62;-1:-1:-1;;;9851:18:1;;;9844:37;9898:19;;22201:64:0::1;9694:229:1::0;22201:64:0::1;22276:7;:16:::0;22127:173::o;16735:85::-;16774:13;16807:5;16800:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16735:85;:::o;17645:163::-;17722:4;17739:39;3137:10;17762:7;17771:6;17739:8;:39::i;:::-;-1:-1:-1;17796:4:0;17645:163;;;;;:::o;17814:315::-;17914:4;17931:36;17941:6;17949:9;17960:6;17931:9;:36::i;:::-;17978:121;17987:6;3137:10;18009:89;18047:6;18009:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18009:19:0;;;;;;:11;:19;;;;;;;;3137:10;18009:33;;;;;;;;;;:37;:89::i;:::-;17978:8;:121::i;:::-;-1:-1:-1;18117:4:0;17814:315;;;;;:::o;20115:253::-;20181:7;20220;;20209;:18;;20201:73;;;;-1:-1:-1;;;20201:73:0;;5840:2:1;20201:73:0;;;5822:21:1;5879:2;5859:18;;;5852:30;5918:34;5898:18;;;5891:62;-1:-1:-1;;;5969:18:1;;;5962:40;6019:19;;20201:73:0;5812:232:1;20201:73:0;20285:19;20308:10;:8;:10::i;:::-;20285:33;-1:-1:-1;20336:24:0;:7;20285:33;20336:11;:24::i;:::-;20329:31;20115:253;-1:-1:-1;;;20115:253:0:o;22973:173::-;6888:7;6915:6;-1:-1:-1;;;;;6915:6:0;3137:10;6975:23;6967:68;;;;-1:-1:-1;;;6967:68:0;;;;;;;:::i;:::-;23080:29:::1;:58:::0;22973:173::o;20715:479::-;6888:7;6915:6;-1:-1:-1;;;;;6915:6:0;3137:10;6975:23;6967:68;;;;-1:-1:-1;;;6967:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20797:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;20789:60;;;::::0;-1:-1:-1;;;20789:60:0;;7826:2:1;20789:60:0::1;::::0;::::1;7808:21:1::0;7865:2;7845:18;;;7838:30;7904:29;7884:18;;;7877:57;7951:18;;20789:60:0::1;7798:177:1::0;20789:60:0::1;20865:9;20860:327;20884:9;:16:::0;20880:20;::::1;20860:327;;;20942:7;-1:-1:-1::0;;;;;20926:23:0::1;:9;20936:1;20926:12;;;;;;-1:-1:-1::0;;;20926:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;20926:12:0::1;:23;20922:254;;;20985:9;20995:16:::0;;:20:::1;::::0;21014:1:::1;::::0;20995:20:::1;:::i;:::-;20985:31;;;;;;-1:-1:-1::0;;;20985:31:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;20970:9:::1;:12:::0;;-1:-1:-1;;;;;20985:31:0;;::::1;::::0;20980:1;;20970:12;::::1;;;-1:-1:-1::0;;;20970:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;20970:46:0::1;-1:-1:-1::0;;;;;20970:46:0;;::::1;;::::0;;21035:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;21074:11:::1;:20:::0;;;;:28;;-1:-1:-1;;21074:28:0::1;::::0;;21121:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;21121:15:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;21121:15:0;;;;;-1:-1:-1;;;;;;21121:15:0::1;::::0;;;;;20860:327:::1;20715:479:::0;:::o;20922:254::-:1;20902:3:::0;::::1;::::0;::::1;:::i;:::-;;;;20860:327;;;;20715:479:::0;:::o;18135:220::-;3137:10;18225:4;18274:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18274:34:0;;;;;;;;;;18225:4;;18242:83;;18265:7;;18274:50;;18313:10;18274:38;:50::i;19283:380::-;3137:10;19337:14;19386:19;;;:11;:19;;;;;;;;19385:20;19377:77;;;;-1:-1:-1;;;19377:77:0;;11355:2:1;19377:77:0;;;11337:21:1;11394:2;11374:18;;;11367:30;11433:34;11413:18;;;11406:62;-1:-1:-1;;;11484:18:1;;;11477:42;11536:19;;19377:77:0;11327:234:1;19377:77:0;19466:15;19491:19;19502:7;19491:10;:19::i;:::-;-1:-1:-1;;;;;;;;19539:15:0;;;;;;:7;:15;;;;;;19465:45;;-1:-1:-1;19539:28:0;;:15;-1:-1:-1;19465:45:0;;-1:-1:-1;;19539:19:0;:28::i;:::-;-1:-1:-1;;;;;19521:15:0;;;;;;:7;:15;;;;;:46;19588:7;;:20;;19600:7;19588:11;:20::i;:::-;19578:7;:30;19632:10;;:23;;19647:7;19632:14;:23::i;:::-;19619:10;:36;-1:-1:-1;;;19283:380:0:o;21890:113::-;6888:7;6915:6;-1:-1:-1;;;;;6915:6:0;3137:10;6975:23;6967:68;;;;-1:-1:-1;;;6967:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21961:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;21961:34:0::1;21991:4;21961:34;::::0;;21890:113::o;19669:440::-;19761:7;19800;;19789;:18;;19781:62;;;;-1:-1:-1;;;19781:62:0;;8182:2:1;19781:62:0;;;8164:21:1;8221:2;8201:18;;;8194:30;8260:33;8240:18;;;8233:61;8311:18;;19781:62:0;8154:181:1;19781:62:0;19859:17;19854:248;;19894:15;19919:19;19930:7;19919:10;:19::i;:::-;-1:-1:-1;19893:45:0;;-1:-1:-1;19953:14:0;;-1:-1:-1;;;;;;19953:14:0;19854:248;20002:23;20034:19;20045:7;20034:10;:19::i;:::-;-1:-1:-1;20000:53:0;;-1:-1:-1;20068:22:0;;-1:-1:-1;;;;;;20068:22:0;20374:335;6888:7;6915:6;-1:-1:-1;;;;;6915:6:0;3137:10;6975:23;6967:68;;;;-1:-1:-1;;;6967:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20459:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;20458:21;20450:61;;;::::0;-1:-1:-1;;;20450:61:0;;7061:2:1;20450:61:0::1;::::0;::::1;7043:21:1::0;7100:2;7080:18;;;7073:30;7139:29;7119:18;;;7112:57;7186:18;;20450:61:0::1;7033:177:1::0;20450:61:0::1;-1:-1:-1::0;;;;;20525:16:0;::::1;20544:1;20525:16:::0;;;:7:::1;:16;::::0;;;;;:20;20522:108:::1;;-1:-1:-1::0;;;;;20601:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;20581:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;20562:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;20522:108:::1;-1:-1:-1::0;;;;;20640:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;20640:27:0::1;20663:4;20640:27:::0;;::::1;::::0;;;20678:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;20678:23:0::1;::::0;;::::1;::::0;;20374:335::o;22856:111::-;6888:7;6915:6;-1:-1:-1;;;;;6915:6:0;3137:10;6975:23;6967:68;;;;-1:-1:-1;;;6967:68:0;;;;;;;:::i;:::-;22933:12:::1;:26:::0;22856:111::o;17115:198::-;-1:-1:-1;;;;;17205:20:0;;17181:7;17205:20;;;:11;:20;;;;;;;;17201:49;;;-1:-1:-1;;;;;;17234:16:0;;;;;:7;:16;;;;;;;17115:198::o;17201:49::-;-1:-1:-1;;;;;17288:16:0;;;;;;:7;:16;;;;;;17268:37;;:19;:37::i;7061:148::-;6888:7;6915:6;-1:-1:-1;;;;;6915:6:0;3137:10;6975:23;6967:68;;;;-1:-1:-1;;;6967:68:0;;;;;;;:::i;:::-;7168:1:::1;7152:6:::0;;7131:40:::1;::::0;-1:-1:-1;;;;;7152:6:0;;::::1;::::0;7131:40:::1;::::0;7168:1;;7131:40:::1;7199:1;7182:19:::0;;-1:-1:-1;;;;;;7182:19:0::1;::::0;;7061:148::o;22491:209::-;6888:7;6915:6;-1:-1:-1;;;;;6915:6:0;3137:10;6975:23;6967:68;;;;-1:-1:-1;;;6967:68:0;;;;;;;:::i;:::-;22601:2:::1;22585:12;:18;;22577:76;;;::::0;-1:-1:-1;;;22577:76:0;;10941:2:1;22577:76:0::1;::::0;::::1;10923:21:1::0;10980:2;10960:18;;;10953:30;11019:34;10999:18;;;10992:62;-1:-1:-1;;;11070:18:1;;;11063:43;11123:19;;22577:76:0::1;10913:235:1::0;22577:76:0::1;22664:13;:28:::0;22491:209::o;16826:89::-;16867:13;16900:7;16893:14;;;;;:::i;18361:271::-;18456:4;18473:129;3137:10;18496:7;18505:96;18544:15;18505:96;;;;;;;;;;;;;;;;;3137:10;18505:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18505:34:0;;;;;;;;;;;;:38;:96::i;17319:169::-;17399:4;17416:42;3137:10;17440:9;17451:6;17416:9;:42::i;23152:173::-;6888:7;6915:6;-1:-1:-1;;;;;6915:6:0;3137:10;6975:23;6967:68;;;;-1:-1:-1;;;6967:68:0;;;;;;;:::i;:::-;23231:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;23231:32:0;;::::1;;::::0;;23279:38:::1;::::0;::::1;::::0;::::1;::::0;23255:8;4364:14:1;4357:22;4339:41;;4327:2;4312:18;;4294:92;23279:38:0::1;;;;;;;;23152:173:::0;:::o;22306:179::-;6888:7;6915:6;-1:-1:-1;;;;;6915:6:0;3137:10;6975:23;6967:68;;;;-1:-1:-1;;;6967:68:0;;;;;;;:::i;:::-;22401:2:::1;22390:7;:13;;22382:66;;;::::0;-1:-1:-1;;;22382:66:0;;7417:2:1;22382:66:0::1;::::0;::::1;7399:21:1::0;7456:2;7436:18;;;7429:30;7495:34;7475:18;;;7468:62;-1:-1:-1;;;7546:18:1;;;7539:38;7594:19;;22382:66:0::1;7389:230:1::0;22382:66:0::1;22459:8;:18:::0;22306:179::o;22706:144::-;6888:7;6915:6;-1:-1:-1;;;;;6915:6:0;3137:10;6975:23;6967:68;;;;-1:-1:-1;;;6967:68:0;;;;;;;:::i;:::-;22804:18:::1;:38:::0;;-1:-1:-1;;;;;;22804:38:0::1;-1:-1:-1::0;;;;;22804:38:0;;;::::1;::::0;;;::::1;::::0;;22706:144::o;22009:112::-;6888:7;6915:6;-1:-1:-1;;;;;6915:6:0;3137:10;6975:23;6967:68;;;;-1:-1:-1;;;6967:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22078:27:0::1;22108:5;22078:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;22078:35:0::1;::::0;;22009:112::o;7215:244::-;6888:7;6915:6;-1:-1:-1;;;;;6915:6:0;3137:10;6975:23;6967:68;;;;-1:-1:-1;;;6967:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7304:22:0;::::1;7296:73;;;::::0;-1:-1:-1;;;7296:73:0;;6251:2:1;7296:73:0::1;::::0;::::1;6233:21:1::0;6290:2;6270:18;;;6263:30;6329:34;6309:18;;;6302:62;-1:-1:-1;;;6380:18:1;;;6373:36;6426:19;;7296:73:0::1;6223:228:1::0;7296:73:0::1;7406:6;::::0;;7385:38:::1;::::0;-1:-1:-1;;;;;7385:38:0;;::::1;::::0;7406:6;::::1;::::0;7385:38:::1;::::0;::::1;7434:6;:17:::0;;-1:-1:-1;;;;;;7434:17:0::1;-1:-1:-1::0;;;;;7434:17:0;;;::::1;::::0;;;::::1;::::0;;7215:244::o;27030:335::-;-1:-1:-1;;;;;27123:19:0;;27115:68;;;;-1:-1:-1;;;27115:68:0;;10536:2:1;27115:68:0;;;10518:21:1;10575:2;10555:18;;;10548:30;10614:34;10594:18;;;10587:62;-1:-1:-1;;;10665:18:1;;;10658:34;10709:19;;27115:68:0;10508:226:1;27115:68:0;-1:-1:-1;;;;;27202:21:0;;27194:68;;;;-1:-1:-1;;;27194:68:0;;6658:2:1;27194:68:0;;;6640:21:1;6697:2;6677:18;;;6670:30;6736:34;6716:18;;;6709:62;-1:-1:-1;;;6787:18:1;;;6780:32;6829:19;;27194:68:0;6630:224:1;27194:68:0;-1:-1:-1;;;;;27273:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;27325:32;;11712:25:1;;;27325:32:0;;11685:18:1;27325:32:0;;;;;;;27030:335;;;:::o;27371:1239::-;-1:-1:-1;;;;;27493:18:0;;27485:68;;;;-1:-1:-1;;;27485:68:0;;10130:2:1;27485:68:0;;;10112:21:1;10169:2;10149:18;;;10142:30;10208:34;10188:18;;;10181:62;-1:-1:-1;;;10259:18:1;;;10252:35;10304:19;;27485:68:0;10102:227:1;27485:68:0;-1:-1:-1;;;;;27572:16:0;;27564:64;;;;-1:-1:-1;;;27564:64:0;;5436:2:1;27564:64:0;;;5418:21:1;5475:2;5455:18;;;5448:30;5514:34;5494:18;;;5487:62;-1:-1:-1;;;5565:18:1;;;5558:33;5608:19;;27564:64:0;5408:225:1;27564:64:0;27656:1;27647:6;:10;27639:64;;;;-1:-1:-1;;;27639:64:0;;9312:2:1;27639:64:0;;;9294:21:1;9351:2;9331:18;;;9324:30;9390:34;9370:18;;;9363:62;-1:-1:-1;;;9441:18:1;;;9434:39;9490:19;;27639:64:0;9284:231:1;27639:64:0;6888:7;6915:6;-1:-1:-1;;;;;27717:15:0;;;6915:6;;27717:15;;;;:32;;-1:-1:-1;6888:7:0;6915:6;-1:-1:-1;;;;;27736:13:0;;;6915:6;;27736:13;;27717:32;27714:125;;;27782:12;;27772:6;:22;;27764:75;;;;-1:-1:-1;;;27764:75:0;;8542:2:1;27764:75:0;;;8524:21:1;8581:2;8561:18;;;8554:30;8620:34;8600:18;;;8593:62;-1:-1:-1;;;8671:18:1;;;8664:38;8719:19;;27764:75:0;8514:230:1;27764:75:0;27850:28;27881:24;27899:4;27881:9;:24::i;:::-;27850:55;;27943:12;;27919:20;:36;27916:112;;-1:-1:-1;28004:12:0;;27916:112;28089:29;;28065:53;;;;;;;28147;;-1:-1:-1;28184:16:0;;;;28183:17;28147:53;:91;;;;;28225:13;-1:-1:-1;;;;;28217:21:0;:4;-1:-1:-1;;;;;28217:21:0;;;28147:91;:129;;;;-1:-1:-1;28255:21:0;;;;;;;28147:129;28129:289;;;28326:29;;28303:52;;28370:36;28385:20;28370:14;:36::i;:::-;-1:-1:-1;;;;;28461:24:0;;28428:12;28461:24;;;:18;:24;;;;;;28443:4;;28461:24;;;:50;;-1:-1:-1;;;;;;28489:22:0;;;;;;:18;:22;;;;;;;;28461:50;28458:96;;;-1:-1:-1;28537:5:0;28458:96;28564:38;28579:4;28584:2;28587:6;28594:7;28564:14;:38::i;:::-;27371:1239;;;;;;:::o;2389:206::-;2475:7;2536:12;2528:6;;;;2520:29;;;;-1:-1:-1;;;2520:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2571:5:0;;;2389:206::o;24907:163::-;24948:7;24969:15;24986;25005:19;:17;:19::i;:::-;24968:56;;-1:-1:-1;24968:56:0;-1:-1:-1;25042:20:0;24968:56;;25042:11;:20::i;:::-;25035:27;;;;24907:163;:::o;2181:98::-;2239:7;2266:5;2270:1;2266;:5;:::i;1869:98::-;1927:7;1954:5;1958:1;1954;:5;:::i;23519:457::-;23578:7;23587;23596;23605;23614;23623;23632;23653:23;23678:12;23692:18;23712:13;23729:20;23741:7;23729:11;:20::i;:::-;23652:97;;;;;;;;23761:15;23778:23;23803:12;23819:57;23831:7;23840:4;23846:10;23858:5;23865:10;:8;:10::i;:::-;23819:11;:57::i;:::-;23760:116;;-1:-1:-1;23760:116:0;-1:-1:-1;23760:116:0;-1:-1:-1;23927:15:0;;-1:-1:-1;23944:4:0;;-1:-1:-1;23950:10:0;;-1:-1:-1;23962:5:0;-1:-1:-1;;;;23519:457:0;;;;;;;;;:::o;1973:98::-;2031:7;2058:5;2062:1;2058;:5;:::i;28616:464::-;16060:16;:23;;-1:-1:-1;;16060:23:0;16079:4;16060:23;;;:16;28716:27:::1;:20:::0;28741:1:::1;28716:24;:27::i;:::-;28701:42:::0;-1:-1:-1;28754:17:0::1;28774:30;:20:::0;28701:42;28774:24:::1;:30::i;:::-;28754:50:::0;-1:-1:-1;28840:21:0::1;28872:22;28889:4:::0;28872:16:::1;:22::i;:::-;28905:18;28926:41;:21;28952:14:::0;28926:25:::1;:41::i;:::-;28905:62;;28978:35;28991:9;29002:10;28978:12;:35::i;:::-;29029:43;::::0;;12938:25:1;;;12994:2;12979:18;;12972:34;;;13022:18;;;13015:34;;;29029:43:0::1;::::0;12926:2:1;12911:18;29029:43:0::1;;;;;;;-1:-1:-1::0;;16106:16:0;:24;;-1:-1:-1;;16106:24:0;;;-1:-1:-1;;;28616:464:0:o;29929:814::-;30040:7;30036:40;;30062:14;:12;:14::i;:::-;-1:-1:-1;;;;;30091:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;30115:22:0;;;;;;:11;:22;;;;;;;;30114:23;30091:46;30087:597;;;30154:48;30176:6;30184:9;30195:6;30154:21;:48::i;:::-;30087:597;;;-1:-1:-1;;;;;30225:19:0;;;;;;:11;:19;;;;;;;;30224:20;:46;;;;-1:-1:-1;;;;;;30248:22:0;;;;;;:11;:22;;;;;;;;30224:46;30220:464;;;30287:46;30307:6;30315:9;30326:6;30287:19;:46::i;30220:464::-;-1:-1:-1;;;;;30356:19:0;;;;;;:11;:19;;;;;;;;30355:20;:47;;;;-1:-1:-1;;;;;;30380:22:0;;;;;;:11;:22;;;;;;;;30379:23;30355:47;30351:333;;;30419:44;30437:6;30445:9;30456:6;30419:17;:44::i;30351:333::-;-1:-1:-1;;;;;30485:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;30508:22:0;;;;;;:11;:22;;;;;;;;30485:45;30481:203;;;30547:48;30569:6;30577:9;30588:6;30547:21;:48::i;30481:203::-;30628:44;30646:6;30654:9;30665:6;30628:17;:44::i;:::-;30698:7;30694:41;;30720:15;26786;;26776:7;:25;26823:16;;26812:8;:27;26866:21;;26850:13;:37;26732:163;30720:15;29929:814;;;;:::o;25076:561::-;25173:7;;25209;;25126;;;;;25233:289;25257:9;:16;25253:20;;25233:289;;;25323:7;25299;:21;25307:9;25317:1;25307:12;;;;;;-1:-1:-1;;;25307:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25307:12:0;25299:21;;;;;;;;;;;;;:31;;:66;;;25358:7;25334;:21;25342:9;25352:1;25342:12;;;;;;-1:-1:-1;;;25342:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25342:12:0;25334:21;;;;;;;;;;;;;:31;25299:66;25295:97;;;25375:7;;25384;;25367:25;;;;;;;25076:561;;:::o;25295:97::-;25417:34;25429:7;:21;25437:9;25447:1;25437:12;;;;;;-1:-1:-1;;;25437:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25437:12:0;25429:21;;;;;;;;;;;;;25417:7;;:11;:34::i;:::-;25407:44;;25476:34;25488:7;:21;25496:9;25506:1;25496:12;;;;;;-1:-1:-1;;;25496:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25496:12:0;25488:21;;;;;;;;;;;;;25476:7;;:11;:34::i;:::-;25466:44;-1:-1:-1;25275:3:0;;;;:::i;:::-;;;;25233:289;;;-1:-1:-1;25558:7:0;;25546;;:20;;:11;:20::i;:::-;25536:7;:30;25532:61;;;25576:7;;25585;;25568:25;;;;;;25076:561;;:::o;25532:61::-;25612:7;;25621;;-1:-1:-1;25076:561:0;-1:-1:-1;25076:561:0:o;23982:409::-;24042:7;24051;24060;24069;24089:12;24104:24;24120:7;24104:15;:24::i;:::-;24089:39;;24139:18;24160:30;24182:7;24160:21;:30::i;:::-;24139:51;;24201:13;24217:25;24234:7;24217:16;:25::i;:::-;24201:41;-1:-1:-1;24253:23:0;24279:44;24201:41;24279:33;24301:10;24279:33;:7;24291:4;24279:11;:17::i;:::-;:21;;:33::i;:44::-;24253:70;24359:4;;-1:-1:-1;24365:10:0;;-1:-1:-1;24365:10:0;-1:-1:-1;23982:409:0;;-1:-1:-1;;;23982:409:0:o;24397:504::-;24527:7;;;;24583:24;:7;24595:11;24583;:24::i;:::-;24565:42;-1:-1:-1;24618:12:0;24633:21;:4;24642:11;24633:8;:21::i;:::-;24618:36;-1:-1:-1;24665:18:0;24686:27;:10;24701:11;24686:14;:27::i;:::-;24665:48;-1:-1:-1;24724:13:0;24740:22;:5;24750:11;24740:9;:22::i;:::-;24724:38;-1:-1:-1;24773:23:0;24799:44;24724:38;24799:33;24821:10;24799:33;:7;24811:4;24799:11;:17::i;:44::-;24862:7;;;;-1:-1:-1;24888:4:0;;-1:-1:-1;24397:504:0;;-1:-1:-1;;;;;;;;;24397:504:0:o;29086:471::-;29176:16;;;29190:1;29176:16;;;;;;;;29152:21;;29176:16;;;;;;;;;;-1:-1:-1;29176:16:0;29152:40;;29221:4;29203;29208:1;29203:7;;;;;;-1:-1:-1;;;29203:7:0;;;;;;;;;;;;;;:23;-1:-1:-1;;;;;29203:23:0;;;-1:-1:-1;;;;;29203:23:0;;;;;29247:15;-1:-1:-1;;;;;29247:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29237:4;29242:1;29237:7;;;;;;-1:-1:-1;;;29237:7:0;;;;;;;;;;;;;;:32;-1:-1:-1;;;;;29237:32:0;;;-1:-1:-1;;;;;29237:32:0;;;;;29280:62;29297:4;29312:15;29330:11;29280:8;:62::i;:::-;29353:196;;-1:-1:-1;;;29353:196:0;;-1:-1:-1;;;;;29353:15:0;:66;;;;:196;;29434:11;;29460:1;;29476:4;;29503;;29523:15;;29353:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29563:360;29644:62;29661:4;29676:15;29694:11;29644:8;:62::i;:::-;29717:15;-1:-1:-1;;;;;29717:31:0;;29756:9;29789:4;29809:11;29835:1;29851;29867:7;6888;6915:6;-1:-1:-1;;;;;6915:6:0;;6842:87;29867:7;29717:198;;;;;;-1:-1:-1;;;;;;29717:198:0;;;-1:-1:-1;;;;;3946:15:1;;;29717:198:0;;;3928:34:1;3978:18;;;3971:34;;;;4021:18;;;4014:34;;;;4064:18;;;4057:34;4128:15;;;4107:19;;;4100:44;29889:15:0;4160:19:1;;;4153:35;3862:19;;29717:198:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;29563:360;;:::o;26435:291::-;26481:7;;:12;:34;;;;-1:-1:-1;26497:13:0;;:18;26481:34;26478:46;;;26435:291::o;26478:46::-;26552:7;;;26534:15;:25;26589:8;;;26570:16;:27;26632:13;;;26608:21;:37;-1:-1:-1;26656:11:0;;;;26678:12;;;;26701:17;26435:291::o;31949:616::-;32052:15;32069:23;32094:12;32108:23;32133:12;32147:18;32167:13;32184:19;32195:7;32184:10;:19::i;:::-;32051:152;;;;;;;;;;;;;;32232:28;32252:7;32232;:15;32240:6;-1:-1:-1;;;;;32232:15:0;-1:-1:-1;;;;;32232:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;32214:15:0;;;;;;:7;:15;;;;;;;;:46;;;;32289:7;:15;;;;:28;;32309:7;32289:19;:28::i;:::-;-1:-1:-1;;;;;32271:15:0;;;;;;;:7;:15;;;;;;:46;;;;32349:18;;;;;;;:39;;32372:15;32349:22;:39::i;:::-;-1:-1:-1;;;;;32328:18:0;;;;;;:7;:18;;;;;:60;32402:26;32417:10;32402:14;:26::i;:::-;32439:24;32449:5;32456:6;32439:9;:24::i;:::-;32474:23;32486:4;32492;32474:11;:23::i;:::-;32530:9;-1:-1:-1;;;;;32513:44:0;32522:6;-1:-1:-1;;;;;32513:44:0;;32541:15;32513:44;;;;11712:25:1;;11700:2;11685:18;;11667:76;32513:44:0;;;;;;;;31949:616;;;;;;;;;;:::o;31307:636::-;31408:15;31425:23;31450:12;31464:23;31489:12;31503:18;31523:13;31540:19;31551:7;31540:10;:19::i;:::-;31407:152;;;;;;;;;;;;;;31588:28;31608:7;31588;:15;31596:6;-1:-1:-1;;;;;31588:15:0;-1:-1:-1;;;;;31588:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;31570:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;31648:18;;;;;:7;:18;;;;;:39;;31671:15;31648:22;:39::i;:::-;-1:-1:-1;;;;;31627:18:0;;;;;;:7;:18;;;;;;;;:60;;;;31719:7;:18;;;;:39;;31742:15;31719:22;:39::i;30749:552::-;30848:15;30865:23;30890:12;30904:23;30929:12;30943:18;30963:13;30980:19;30991:7;30980:10;:19::i;:::-;30847:152;;;;;;;;;;;;;;31028:28;31048:7;31028;:15;31036:6;-1:-1:-1;;;;;31028:15:0;-1:-1:-1;;;;;31028:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;21200:684::-;21299:15;21316:23;21341:12;21355:23;21380:12;21394:18;21414:13;21431:19;21442:7;21431:10;:19::i;:::-;21298:152;;;;;;;;;;;;;;21479:28;21499:7;21479;:15;21487:6;-1:-1:-1;;;;;21479:15:0;-1:-1:-1;;;;;21479:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;21461:15:0;;;;;;:7;:15;;;;;;;;:46;;;;21536:7;:15;;;;:28;;21556:7;21536:19;:28::i;18861:130::-;18925:7;18952:31;18977:5;18952:20;18964:7;;18952;:11;;:20;;;;:::i;:::-;:24;;:31::i;19135:142::-;19205:7;19232:37;19263:5;19232:26;19244:13;;19232:7;:11;;:26;;;;:::i;18997:132::-;19062:7;19089:32;19115:5;19089:21;19101:8;;19089:7;:11;;:21;;;;:::i;2077:98::-;2135:7;2162:5;2166:1;2162;:5;:::i;25643:355::-;25706:19;25729:10;:8;:10::i;:::-;25706:33;-1:-1:-1;25750:18:0;25771:27;:10;25706:33;25771:14;:27::i;:::-;25850:4;25834:22;;;;:7;:22;;;;;;25750:48;;-1:-1:-1;25834:38:0;;25750:48;25834:26;:38::i;:::-;25825:4;25809:22;;;;:7;:22;;;;;;;;:63;;;;25886:11;:26;;;;;;25883:107;;;25968:4;25952:22;;;;:7;:22;;;;;;:38;;25979:10;25952:26;:38::i;:::-;25943:4;25927:22;;;;:7;:22;;;;;:63;25883:107;25643:355;;;:::o;26004:425::-;26073:19;26096:10;:8;:10::i;:::-;26073:33;-1:-1:-1;26117:13:0;26133:22;:5;26073:33;26133:9;:22::i;:::-;26204:18;;-1:-1:-1;;;;;26204:18:0;26196:27;;;;:7;:27;;;;;;26117:38;;-1:-1:-1;26196:38:0;;26117;26196:31;:38::i;:::-;26174:18;;;-1:-1:-1;;;;;26174:18:0;;;26166:27;;;;:7;:27;;;;;;;;:68;;;;26260:18;;;;;26248:31;;:11;:31;;;;;;;26245:117;;;26332:18;;-1:-1:-1;;;;;26332:18:0;26324:27;;;;:7;:27;;;;;;:38;;26356:5;26324:31;:38::i;:::-;26302:18;;-1:-1:-1;;;;;26302:18:0;26294:27;;;;:7;:27;;;;;:68;26245:117;26395:18;;26378:43;;11712:25:1;;;-1:-1:-1;;;;;26395:18:0;;;;26378:43;;;;;11700:2:1;11685:18;26378:43:0;;;;;;;26004:425;;;;:::o;23366:147::-;23444:7;;:17;;23456:4;23444:11;:17::i;:::-;23434:7;:27;23485:10;;:20;;23500:4;23485:14;:20::i;:::-;23472:10;:33;-1:-1:-1;;23366:147:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:257::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;312:6;304;297:22;259:2;356:9;343:23;375:31;400:5;375:31;:::i;441:261::-;511:6;564:2;552:9;543:7;539:23;535:32;532:2;;;585:6;577;570:22;532:2;622:9;616:16;641:31;666:5;641:31;:::i;977:398::-;1045:6;1053;1106:2;1094:9;1085:7;1081:23;1077:32;1074:2;;;1127:6;1119;1112:22;1074:2;1171:9;1158:23;1190:31;1215:5;1190:31;:::i;:::-;1240:5;-1:-1:-1;1297:2:1;1282:18;;1269:32;1310:33;1269:32;1310:33;:::i;:::-;1362:7;1352:17;;;1064:311;;;;;:::o;1380:466::-;1457:6;1465;1473;1526:2;1514:9;1505:7;1501:23;1497:32;1494:2;;;1547:6;1539;1532:22;1494:2;1591:9;1578:23;1610:31;1635:5;1610:31;:::i;:::-;1660:5;-1:-1:-1;1717:2:1;1702:18;;1689:32;1730:33;1689:32;1730:33;:::i;:::-;1484:362;;1782:7;;-1:-1:-1;;;1836:2:1;1821:18;;;;1808:32;;1484:362::o;1851:325::-;1919:6;1927;1980:2;1968:9;1959:7;1955:23;1951:32;1948:2;;;2001:6;1993;1986:22;1948:2;2045:9;2032:23;2064:31;2089:5;2064:31;:::i;:::-;2114:5;2166:2;2151:18;;;;2138:32;;-1:-1:-1;;;1938:238:1:o;2181:190::-;2237:6;2290:2;2278:9;2269:7;2265:23;2261:32;2258:2;;;2311:6;2303;2296:22;2258:2;2339:26;2355:9;2339:26;:::i;2376:190::-;2435:6;2488:2;2476:9;2467:7;2463:23;2459:32;2456:2;;;2509:6;2501;2494:22;2456:2;-1:-1:-1;2537:23:1;;2446:120;-1:-1:-1;2446:120:1:o;2571:258::-;2636:6;2644;2697:2;2685:9;2676:7;2672:23;2668:32;2665:2;;;2718:6;2710;2703:22;2665:2;2759:9;2746:23;2736:33;;2788:35;2819:2;2808:9;2804:18;2788:35;:::i;:::-;2778:45;;2655:174;;;;;:::o;2834:316::-;2922:6;2930;2938;2991:2;2979:9;2970:7;2966:23;2962:32;2959:2;;;3012:6;3004;2997:22;2959:2;3046:9;3040:16;3030:26;;3096:2;3085:9;3081:18;3075:25;3065:35;;3140:2;3129:9;3125:18;3119:25;3109:35;;2949:201;;;;;:::o;4626:603::-;4738:4;4767:2;4796;4785:9;4778:21;4828:6;4822:13;4871:6;4866:2;4855:9;4851:18;4844:34;4896:4;4909:140;4923:6;4920:1;4917:13;4909:140;;;5018:14;;;5014:23;;5008:30;4984:17;;;5003:2;4980:26;4973:66;4938:10;;4909:140;;;5067:6;5064:1;5061:13;5058:2;;;5137:4;5132:2;5123:6;5112:9;5108:22;5104:31;5097:45;5058:2;-1:-1:-1;5213:2:1;5192:15;-1:-1:-1;;5188:29:1;5173:45;;;;5220:2;5169:54;;4747:482;-1:-1:-1;;;4747:482:1:o;8749:356::-;8951:2;8933:21;;;8970:18;;;8963:30;9029:34;9024:2;9009:18;;9002:62;9096:2;9081:18;;8923:182::o;11748:983::-;12010:4;12058:3;12047:9;12043:19;12089:6;12078:9;12071:25;12115:2;12153:6;12148:2;12137:9;12133:18;12126:34;12196:3;12191:2;12180:9;12176:18;12169:31;12220:6;12255;12249:13;12286:6;12278;12271:22;12324:3;12313:9;12309:19;12302:26;;12363:2;12355:6;12351:15;12337:29;;12384:4;12397:195;12411:6;12408:1;12405:13;12397:195;;;12476:13;;-1:-1:-1;;;;;12472:39:1;12460:52;;12567:15;;;;12532:12;;;;12508:1;12426:9;12397:195;;;-1:-1:-1;;;;;;;12648:32:1;;;;12643:2;12628:18;;12621:60;-1:-1:-1;;;12712:3:1;12697:19;12690:35;12609:3;12019:712;-1:-1:-1;;;12019:712:1:o;13249:128::-;13289:3;13320:1;13316:6;13313:1;13310:13;13307:2;;;13326:18;;:::i;:::-;-1:-1:-1;13362:9:1;;13297:80::o;13382:217::-;13422:1;13448;13438:2;;-1:-1:-1;;;13473:31:1;;13527:4;13524:1;13517:15;13555:4;13480:1;13545:15;13438:2;-1:-1:-1;13584:9:1;;13428:171::o;13604:168::-;13644:7;13710:1;13706;13702:6;13698:14;13695:1;13692:21;13687:1;13680:9;13673:17;13669:45;13666:2;;;13717:18;;:::i;:::-;-1:-1:-1;13757:9:1;;13656:116::o;13777:125::-;13817:4;13845:1;13842;13839:8;13836:2;;;13850:18;;:::i;:::-;-1:-1:-1;13887:9:1;;13826:76::o;13907:380::-;13986:1;13982:12;;;;14029;;;14050:2;;14104:4;14096:6;14092:17;14082:27;;14050:2;14157;14149:6;14146:14;14126:18;14123:38;14120:2;;;14203:10;14198:3;14194:20;14191:1;14184:31;14238:4;14235:1;14228:15;14266:4;14263:1;14256:15;14120:2;;13962:325;;;:::o;14292:135::-;14331:3;-1:-1:-1;;14352:17:1;;14349:2;;;14372:18;;:::i;:::-;-1:-1:-1;14419:1:1;14408:13;;14339:88::o;14432:127::-;14493:10;14488:3;14484:20;14481:1;14474:31;14524:4;14521:1;14514:15;14548:4;14545:1;14538:15;14564:131;-1:-1:-1;;;;;14639:31:1;;14629:42;;14619:2;;14685:1;14682;14675:12;14619:2;14609:86;:::o

Swarm Source

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