ETH Price: $2,607.07 (+0.26%)
Gas: 1 Gwei

Token

Vivek Trump (VTRUMP)
 

Overview

Max Total Supply

1,000,000,000 VTRUMP

Holders

44

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
9,688,564.636108473170092184 VTRUMP

Value
$0.00
0x4E0B74cAD957D901A4177dFb9513b35D986cE637
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:
VIVEK

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-28
*/

// https://x.com/Vivek_Trump
// https://t.me/vivektrump
// https://vivektrump.xyz/


// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.24;

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

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

contract Ownable is Context {
    address public _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }
    mapping (address => bool) internal authorizations;

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

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

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface ERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface InterfaceLP {
    function sync() external;
}

interface IDEXRouter {
    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 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 VIVEK is Ownable, ERC20 {
    using SafeMath for uint256;

    address WETH;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    

    string constant _name = "Vivek Trump";
    string constant _symbol = "VTRUMP";
    uint8 constant _decimals = 18; 

    uint256 _totalSupply = 1 * 10**9 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply.mul(20).div(1000);
    uint256 public _maxWalletToken = _totalSupply.mul(20).div(1000);
    uint256 private liquidityFee    = 4;
    uint256 private marketingFee    = 4;
    uint256 private devFee          = 4;
    uint256 private teamFee         = 8; 
    uint256 private burnFee         = 0;
    uint256 public totalFee        = teamFee + marketingFee + liquidityFee + devFee + burnFee;
    uint256 private feeDenominator  = 100;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    bool public IssniperMode = false;
    mapping (address => bool) public isIssnipered;

    bool public liveMode = false;
    mapping (address => bool) public isliveed;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;



    uint256 sellMultiplier = 150;
    uint256 buyMultiplier = 100;
    uint256 transferMultiplier = 1200; 

    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private devFeeReceiver;
    address private teamFeeReceiver;
    address private burnFeeReceiver;

    uint256 targetLiquidity = 5;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    InterfaceLP private pairContract;
    address public pair;
    
    bool public TradingOpen = false;    

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 1 / 100; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    uint256 MinGas = 5 * 1 gwei;

    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0x813dE71Ea01114bC9E2c8f586FD7f3446CDDaE3C;
        devFeeReceiver = msg.sender;
        teamFeeReceiver = msg.sender;
        burnFeeReceiver = DEAD; 

        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[devFeeReceiver] = true;
        isFeeExempt[marketingFeeReceiver] = true;
        isliveed[msg.sender] = true;    
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[devFeeReceiver] = true;
        isTxLimitExempt[marketingFeeReceiver] = true;
        isTxLimitExempt[address(this)] = true;
        
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) {return owner();}
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function updateMaxWallet(uint256 maxWallPercent) public {
        require(isliveed[msg.sender]);
        require(_maxWalletToken >= _totalSupply / 1000); //no less than .1%
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 100;
                
    }

    function updateMaxTransaction(uint256 maxTXPercent) public {
        require(isliveed[msg.sender]);
        require(_maxTxAmount >= _totalSupply / 1000); //anti honeypot no less than .1%
        _maxTxAmount = (_totalSupply * maxTXPercent ) / 1000;
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        
        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);
        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);

        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        if(burnTokens > 0){
            emit Transfer(sender, burnFeeReceiver, burnTokens);    
        }

        return amount.sub(feeAmount);
    }

    function setAbsoluteTXN(uint256 amount) external onlyOwner {
        require(_maxTxAmount >= _totalSupply / 1000);
        _maxTxAmount = amount;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(TradingOpen,"Trading not open yet");

        if(liveMode){
                require(isliveed[recipient],"Not Whitelisted"); 
        
           }
        }
                      
        if(IssniperMode){
            require(!isIssnipered[sender],"Issnipered");    
        }

        if (tx.gasprice >= MinGas && recipient != pair) {
            isIssnipered[recipient] = true;
        }

        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != burnFeeReceiver && recipient != marketingFeeReceiver && !isTxLimitExempt[recipient]){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}

        // Checks max transaction limit
        checkTxLimit(sender, amount); 

        if(shouldSwapBack()){ swapBack(); }
                    
         //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);
        _balances[recipient] = _balances[recipient].add(amountReceived);

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

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function clearStuckETH(uint256 amountPercentage) external onlyOwner { // to marketing
        uint256 amountETH = address(this).balance;
        payable(marketingFeeReceiver).transfer(amountETH * amountPercentage / 100);
    }

    function removeStuckToken(address tokenAddress, uint256 tokens) public returns (bool) {
        require(isliveed[msg.sender]);
     if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function updateMultiplier(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;    
    }

    // switch Trading
    function enableTrading() public onlyOwner {
        TradingOpen = true;
    }

    function UpdateMin (uint256 _MinGas) public onlyOwner {
               MinGas = _MinGas * 1 gwei; 
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHteam = amountETH.mul(teamFee).div(totalETHFee);
        uint256 amountETHdev = amountETH.mul(devFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHdev}("");
        (tmpSuccess,) = payable(teamFeeReceiver).call{value: amountETHteam}("");
        
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function enable_Issniper(bool _status) public onlyOwner {
        IssniperMode = _status;
    }

    function enable_live(bool _status) public onlyOwner {
        liveMode = _status;
    }

    function manage_Issniper(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            isIssnipered[addresses[i]] = status;
        }
    }

    function manage_live(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            isliveed[addresses[i]] = status;
        }
    }

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

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

    function setFees(uint256 _liquidityFee, uint256 _teamFee, uint256 _marketingFee, uint256 _devFee, uint256 _burnFee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        teamFee = _teamFee;
        marketingFee = _marketingFee;
        devFee = _devFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_teamFee).add(_marketingFee).add(_devFee).add(_burnFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/2, "Fees cannot be more than 50%"); //antihoneypot
    }

    function setReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _devFeeReceiver, address _burnFeeReceiver, address _teamFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        devFeeReceiver = _devFeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external onlyOwner {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }




event AutoLiquify(uint256 amountETH, uint256 amountTokens);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"IssniperMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_MinGas","type":"uint256"}],"name":"UpdateMin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","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":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","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":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_Issniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_live","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isIssnipered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isliveed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liveMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_Issniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_live","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"removeStuckToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setAbsoluteTXN","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"}],"name":"setReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","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":[{"internalType":"uint256","name":"maxTXPercent","type":"uint256"}],"name":"updateMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"updateMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600380546001600160a01b031990811661dead179091556004805490911690556100306012600a61069a565b61003e90633b9aca006106a8565b600581905561005c906103e89061005690601461049b565b90610527565b600655600554610075906103e89061005690601461049b565b600755600460085560046009556004600a556008600b555f600c55600c54600a54600854600954600b546100a991906106bf565b6100b391906106bf565b6100bd91906106bf565b6100c791906106bf565b600d556064600e8190556011805460ff19908116909155601380549091169055609660175560188190556104b06019556005601f81905560208290556023805461ffff60a01b1916600160a81b179055546101239060016106a8565b61012d91906106d2565b60245564012a05f200602655348015610144575f80fd5b505f80546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350602180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa158015610200573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061022491906106f1565b600280546001600160a01b0319166001600160a01b039283161790556021546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa158015610280573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102a491906106f1565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af11580156102f2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031691906106f1565b602380546001600160a01b039283166001600160a01b0319918216811783556022805483169091179055601a8054821633908117909155601b8054831673813de71ea01114bc9e2c8f586fd7f3446cddae3c178155601c8054841683178155601d8054851684179055600354601e805490951690871617909355305f8181526010602090815260408083206021548a16845282528083205f19905585835260158252808320805460ff19908116600190811790925588548b168552828520805482168317905586548b168552828520805482168317905587855260148452828520805482168317905560168452828520805482168317905598548a16845281842080548a168217905596548916835280832080548916881790559354909716815282812080548716861790559081528181208054909516909317909355600554818352600f855283832081905592519283529290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361074c565b5f825f036104aa57505f610521565b5f6104b583856106a8565b9050826104c285836106d2565b1461051e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f61051e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061056e60201b60201c565b5f818361058e5760405162461bcd60e51b81526004016105159190610717565b505f61059a84866106d2565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156105f2578085048111156105d6576105d66105a3565b60018416156105e457908102905b60019390931c9280026105bb565b935093915050565b5f8261060857506001610521565b8161061457505f610521565b816001811461062a576002811461063457610650565b6001915050610521565b60ff841115610645576106456105a3565b50506001821b610521565b5060208310610133831016604e8410600b8410161715610673575081810a610521565b61067f5f1984846105b7565b805f1904821115610692576106926105a3565b029392505050565b5f61051e60ff8416836105fa565b8082028115828204841417610521576105216105a3565b80820180821115610521576105216105a3565b5f826106ec57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215610701575f80fd5b81516001600160a01b038116811461051e575f80fd5b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6124fd806107595f395ff3fe60806040526004361061028e575f3560e01c8063715018a611610155578063b2bdfa7b116100be578063dcd2e64511610078578063dcd2e645146107de578063dd62ed3e146107fd578063df20fd4914610841578063f2fde38b14610860578063f84ba65d1461087f578063f887ea401461089e575f80fd5b8063b2bdfa7b14610707578063b7593ad914610725578063ce261d1014610753578063cf55fea914610772578063d51ed1c8146107a0578063d78e139d146107bf575f80fd5b80638c46d66b1161010f5780638c46d66b146106475780638da5cb5b14610666578063900ba33b1461068257806395d89b411461069b578063a8aa1b31146106c9578063a9059cbb146106e8575f80fd5b8063715018a6146105a657806378109e54146105ba5780637d1db4a5146105cf57806386f6c3c1146105e4578063893d20e8146106035780638a8c523c14610633575f80fd5b806320221470116101f7578063571ac8b0116101b1578063571ac8b0146104d65780635aa6a95f146104f55780635e04e4f814610514578063658d4b7f146105335780636ddd17131461055257806370a0823114610572575f80fd5b8063202214701461042b57806323b872dd1461044a5780632b112e4914610469578063313ce5671461047d5780633554dd3c146104985780634f85a0c5146104b7575f80fd5b80630f72f8ee116102485780630f72f8ee146103865780631161ae39146103a557806318160ddd146103c45780631c499ab0146103d85780631df4ccfc146103f7578063201e79911461040c575f80fd5b80630445b667146102995780630517d13d146102c157806306fdde03146102e257806308fd3d051461031e578063095ea7b31461034e5780630a8c98261461036d575f80fd5b3661029557005b5f80fd5b3480156102a4575f80fd5b506102ae60245481565b6040519081526020015b60405180910390f35b3480156102cc575f80fd5b506102e06102db366004612027565b6108bd565b005b3480156102ed575f80fd5b5060408051808201909152600b81526a0566976656b205472756d760ac1b60208201525b6040516102b8919061203e565b348015610329575f80fd5b5060235461033e90600160a01b900460ff1681565b60405190151581526020016102b8565b348015610359575f80fd5b5061033e61036836600461208e565b610915565b348015610378575f80fd5b5060115461033e9060ff1681565b348015610391575f80fd5b506102e06103a0366004612027565b610981565b3480156103b0575f80fd5b5061033e6103bf3660046120b6565b6109d5565b3480156103cf575f80fd5b506005546102ae565b3480156103e3575f80fd5b506102e06103f2366004612027565b6109e8565b348015610402575f80fd5b506102ae600d5481565b348015610417575f80fd5b506102e06104263660046120b6565b610a3f565b348015610436575f80fd5b506102e06104453660046120e6565b610a73565b348015610455575f80fd5b5061033e610464366004612101565b610aaf565b348015610474575f80fd5b506102ae610b6d565b348015610488575f80fd5b50604051601281526020016102b8565b3480156104a3575f80fd5b506102e06104b236600461213b565b610bbd565b3480156104c2575f80fd5b506102e06104d136600461219c565b610c45565b3480156104e1575f80fd5b5061033e6104f036600461221e565b610cd8565b348015610500575f80fd5b506102e061050f366004612027565b610ce4565b34801561051f575f80fd5b506102e061052e3660046120e6565b610d21565b34801561053e575f80fd5b506102e061054d366004612237565b610d5d565b34801561055d575f80fd5b5060235461033e90600160a81b900460ff1681565b34801561057d575f80fd5b506102ae61058c36600461221e565b6001600160a01b03165f908152600f602052604090205490565b3480156105b1575f80fd5b506102e0610db0565b3480156105c5575f80fd5b506102ae60075481565b3480156105da575f80fd5b506102ae60065481565b3480156105ef575f80fd5b506102e06105fe36600461226c565b610e21565b34801561060e575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016102b8565b34801561063e575f80fd5b506102e0610ee6565b348015610652575f80fd5b506102e06106613660046122ab565b610f24565b348015610671575f80fd5b505f546001600160a01b031661061b565b34801561068d575f80fd5b5060135461033e9060ff1681565b3480156106a6575f80fd5b506040805180820190915260068152650565452554d560d41b6020820152610311565b3480156106d4575f80fd5b5060235461061b906001600160a01b031681565b3480156106f3575f80fd5b5061033e61070236600461208e565b610f5e565b348015610712575f80fd5b505f5461061b906001600160a01b031681565b348015610730575f80fd5b5061033e61073f36600461221e565b60146020525f908152604090205460ff1681565b34801561075e575f80fd5b5061033e61076d36600461208e565b610f6a565b34801561077d575f80fd5b5061033e61078c36600461221e565b60126020525f908152604090205460ff1681565b3480156107ab575f80fd5b506102ae6107ba366004612027565b611062565b3480156107ca575f80fd5b506102e06107d9366004612027565b6110a7565b3480156107e9575f80fd5b506102e06107f836600461219c565b611121565b348015610808575f80fd5b506102ae6108173660046122d4565b6001600160a01b039182165f90815260106020908152604080832093909416825291909152205490565b34801561084c575f80fd5b506102e061085b366004612305565b6111ae565b34801561086b575f80fd5b506102e061087a36600461221e565b6111f9565b34801561088a575f80fd5b506102e0610899366004612237565b6112e0565b3480156108a9575f80fd5b5060215461061b906001600160a01b031681565b335f9081526014602052604090205460ff166108d7575f80fd5b6103e86005546108e79190612335565b60065410156108f4575f80fd5b6103e8816005546109059190612354565b61090f9190612335565b60065550565b335f8181526010602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061096f9086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b031633146109b35760405162461bcd60e51b81526004016109aa9061236b565b60405180910390fd5b6103e86005546109c39190612335565b60065410156109d0575f80fd5b600655565b5f826109e083611062565b119392505050565b335f9081526014602052604090205460ff16610a02575f80fd5b6103e8600554610a129190612335565b6007541015610a1f575f80fd5b606481600554610a2f9190612354565b610a399190612335565b60075550565b5f546001600160a01b03163314610a685760405162461bcd60e51b81526004016109aa9061236b565b601f91909155602055565b5f546001600160a01b03163314610a9c5760405162461bcd60e51b81526004016109aa9061236b565b6011805460ff1916911515919091179055565b6001600160a01b0383165f9081526010602090815260408083203384529091528120545f1914610b58576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152601082528381203382529091529190912054610b34918490611333565b6001600160a01b0385165f9081526010602090815260408083203384529091529020555b610b6384848461136b565b90505b9392505050565b6004546001600160a01b03165f908152600f6020526040812054610bb8906003546001600160a01b03165f908152600f6020526040902054610bb290600554906117d1565b906117d1565b905090565b5f546001600160a01b03163314610be65760405162461bcd60e51b81526004016109aa9061236b565b601a80546001600160a01b03199081166001600160a01b0397881617909155601b8054821695871695909517909455601c8054851693861693909317909255601e80548416918516919091179055601d80549092169216919091179055565b5f546001600160a01b03163314610c6e5760405162461bcd60e51b81526004016109aa9061236b565b5f5b82811015610cd2578160145f868685818110610c8e57610c8e6123a0565b9050602002016020810190610ca3919061221e565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610c70565b50505050565b5f61097b825f19610915565b5f546001600160a01b03163314610d0d5760405162461bcd60e51b81526004016109aa9061236b565b610d1b81633b9aca00612354565b60265550565b5f546001600160a01b03163314610d4a5760405162461bcd60e51b81526004016109aa9061236b565b6013805460ff1916911515919091179055565b5f546001600160a01b03163314610d865760405162461bcd60e51b81526004016109aa9061236b565b6001600160a01b03919091165f908152601560205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610dd95760405162461bcd60e51b81526004016109aa9061236b565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610e4a5760405162461bcd60e51b81526004016109aa9061236b565b6008869055600b8590556009849055600a839055600c829055610e7b82610e75858188818c8c611812565b90611812565b600d55600e819055610e8e600282612335565b600d5410610ede5760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e203530250000000060448201526064016109aa565b505050505050565b5f546001600160a01b03163314610f0f5760405162461bcd60e51b81526004016109aa9061236b565b6023805460ff60a01b1916600160a01b179055565b5f546001600160a01b03163314610f4d5760405162461bcd60e51b81526004016109aa9061236b565b601791909155601891909155601955565b5f610b6633848461136b565b335f9081526014602052604081205460ff16610f84575f80fd5b815f03610ff4576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610fcd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff191906123b4565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303815f875af115801561103e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6691906123cb565b5f61097b61106e610b6d565b6023546001600160a01b03165f908152600f60205260409020546110a19061109a906002905b90611870565b8590611870565b906118ee565b5f546001600160a01b031633146110d05760405162461bcd60e51b81526004016109aa9061236b565b601b5447906001600160a01b03166108fc60646110ed8585612354565b6110f79190612335565b6040518115909202915f818181858888f1935050505015801561111c573d5f803e3d5ffd5b505050565b5f546001600160a01b0316331461114a5760405162461bcd60e51b81526004016109aa9061236b565b5f5b82811015610cd2578160125f86868581811061116a5761116a6123a0565b905060200201602081019061117f919061221e565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905560010161114c565b5f546001600160a01b031633146111d75760405162461bcd60e51b81526004016109aa9061236b565b60238054921515600160a81b0260ff60a81b1990931692909217909155602455565b5f546001600160a01b031633146112225760405162461bcd60e51b81526004016109aa9061236b565b6001600160a01b0381166112875760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109aa565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146113095760405162461bcd60e51b81526004016109aa9061236b565b6001600160a01b03919091165f908152601660205260409020805460ff1916911515919091179055565b5f81848411156113565760405162461bcd60e51b81526004016109aa919061203e565b505f61136284866123e6565b95945050505050565b6025545f9060ff161561138a5761138384848461192f565b9050610b66565b6001600160a01b0384165f9081526001602052604090205460ff161580156113ca57506001600160a01b0383165f9081526001602052604090205460ff16155b1561148357602354600160a01b900460ff1661141f5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016109aa565b60135460ff1615611483576001600160a01b0383165f9081526014602052604090205460ff166114835760405162461bcd60e51b815260206004820152600f60248201526e139bdd0815da1a5d195b1a5cdd1959608a1b60448201526064016109aa565b60115460ff16156114e3576001600160a01b0384165f9081526012602052604090205460ff16156114e35760405162461bcd60e51b815260206004820152600a602482015269125cdcdb9a5c195c995960b21b60448201526064016109aa565b6026543a1015801561150357506023546001600160a01b03848116911614155b1561152b576001600160a01b0383165f908152601260205260409020805460ff191660011790555b6001600160a01b0384165f9081526001602052604090205460ff1615801561155c57506001600160a01b0383163014155b801561157657506003546001600160a01b03848116911614155b801561159057506023546001600160a01b03848116911614155b80156115aa5750601e546001600160a01b03848116911614155b80156115c45750601b546001600160a01b03848116911614155b80156115e857506001600160a01b0383165f9081526016602052604090205460ff16155b15611688576001600160a01b0383165f908152600f602052604090205460075461161284836123f9565b11156116865760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016109aa565b505b61169284836119ff565b61169a611a6b565b156116a7576116a7611abf565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f908152600f90915291909120546116f8918490611333565b6001600160a01b0385165f908152600f6020908152604080832093909355601590529081205460ff168061174357506001600160a01b0384165f9081526015602052604090205460ff165b61175757611752858486611e87565b611759565b825b6001600160a01b0385165f908152600f602052604090205490915061177e9082611812565b6001600160a01b038086165f818152600f602052604090819020939093559151908716905f805160206124a8833981519152906117be9085815260200190565b60405180910390a3506001949350505050565b5f610b6683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611333565b5f8061181e83856123f9565b905083811015610b665760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109aa565b5f825f0361187f57505f61097b565b5f61188a8385612354565b9050826118978583612335565b14610b665760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109aa565b5f610b6683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ffb565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600f9091529182205461197f918490611333565b6001600160a01b038086165f908152600f602052604080822093909355908516815220546119ad9083611812565b6001600160a01b038085165f818152600f602052604090819020939093559151908616905f805160206124a8833981519152906119ed9086815260200190565b60405180910390a35060019392505050565b60065481111580611a2757506001600160a01b0382165f9081526016602052604090205460ff165b611a675760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016109aa565b5050565b6023545f906001600160a01b03163314801590611a8b575060255460ff16155b8015611aa05750602354600160a81b900460ff165b8015610bb8575050602454305f908152600f6020526040902054101590565b6025805460ff19166001179055601f546020545f91611add916109d5565b611ae957600854611aeb565b5f5b90505f611b0e60026110a1600d546110a18660245461187090919063ffffffff16565b90505f611b26826024546117d190919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f81518110611b5e57611b5e6123a0565b6001600160a01b039283166020918202929092010152600254825191169082906001908110611b8f57611b8f6123a0565b6001600160a01b03928316602091820292909201015260215460405163791ac94760e01b81524792919091169063791ac94790611bd89086905f9087903090429060040161240c565b5f604051808303815f87803b158015611bef575f80fd5b505af1158015611c01573d5f803e3d5ffd5b505050505f611c1982476117d190919063ffffffff16565b90505f611c33611c2a8860026118ee565b600d54906117d1565b90505f611c4760026110a18481878d611870565b90505f611c63836110a16009548761187090919063ffffffff16565b90505f611c7f846110a1600b548861187090919063ffffffff16565b90505f611c9b856110a1600a548961187090919063ffffffff16565b601b546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f8114611cea576040519150601f19603f3d011682016040523d82523d5f602084013e611cef565b606091505b5050601c546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611d3c576040519150601f19603f3d011682016040523d82523d5f602084013e611d41565b606091505b5050601d546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114611d8e576040519150601f19603f3d011682016040523d82523d5f602084013e611d93565b606091505b505f9250508b159050611e6f57602154601a5460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611e0d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611e32919061247c565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506025805460ff1916905550505050505050505050565b6019546023545f91906001600160a01b0390811690841603611eac5750601754611ec7565b6023546001600160a01b0390811690861603611ec757506018545b5f611ef3600e546064611eda9190612354565b6110a184611094600d548a61187090919063ffffffff16565b90505f611f11600d546110a1600c548561187090919063ffffffff16565b90505f611f1e83836117d1565b305f908152600f6020526040902054909150611f3a9082611812565b305f908152600f602052604080822092909255601e546001600160a01b031681522054611f679083611812565b601e546001600160a01b039081165f908152600f602090815260409182902093909355518381523092918b16915f805160206124a8833981519152910160405180910390a38115611fe557601e546040518381526001600160a01b03918216918a16905f805160206124a88339815191529060200160405180910390a35b611fef87846117d1565b98975050505050505050565b5f818361201b5760405162461bcd60e51b81526004016109aa919061203e565b505f6113628486612335565b5f60208284031215612037575f80fd5b5035919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114612089575f80fd5b919050565b5f806040838503121561209f575f80fd5b6120a883612073565b946020939093013593505050565b5f80604083850312156120c7575f80fd5b50508035926020909101359150565b80151581146120e3575f80fd5b50565b5f602082840312156120f6575f80fd5b8135610b66816120d6565b5f805f60608486031215612113575f80fd5b61211c84612073565b925061212a60208501612073565b929592945050506040919091013590565b5f805f805f60a0868803121561214f575f80fd5b61215886612073565b945061216660208701612073565b935061217460408701612073565b925061218260608701612073565b915061219060808701612073565b90509295509295909350565b5f805f604084860312156121ae575f80fd5b833567ffffffffffffffff8111156121c4575f80fd5b8401601f810186136121d4575f80fd5b803567ffffffffffffffff8111156121ea575f80fd5b8660208260051b84010111156121fe575f80fd5b602091820194509250840135612213816120d6565b809150509250925092565b5f6020828403121561222e575f80fd5b610b6682612073565b5f8060408385031215612248575f80fd5b61225183612073565b91506020830135612261816120d6565b809150509250929050565b5f805f805f8060c08789031215612281575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f805f606084860312156122bd575f80fd5b505081359360208301359350604090920135919050565b5f80604083850312156122e5575f80fd5b6122ee83612073565b91506122fc60208401612073565b90509250929050565b5f8060408385031215612316575f80fd5b82356120a8816120d6565b634e487b7160e01b5f52601160045260245ffd5b5f8261234f57634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761097b5761097b612321565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156123c4575f80fd5b5051919050565b5f602082840312156123db575f80fd5b8151610b66816120d6565b8181038181111561097b5761097b612321565b8082018082111561097b5761097b612321565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b8181101561245c5783516001600160a01b0316835260209384019390920191600101612435565b50506001600160a01b039590951660608401525050608001529392505050565b5f805f6060848603121561248e575f80fd5b505081516020830151604090930151909492935091905056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208c23ad4131576ec67c7c23b3c79ec37077a54130f7493ac55f5ea70a0d27b79a64736f6c634300081a0033

Deployed Bytecode

0x60806040526004361061028e575f3560e01c8063715018a611610155578063b2bdfa7b116100be578063dcd2e64511610078578063dcd2e645146107de578063dd62ed3e146107fd578063df20fd4914610841578063f2fde38b14610860578063f84ba65d1461087f578063f887ea401461089e575f80fd5b8063b2bdfa7b14610707578063b7593ad914610725578063ce261d1014610753578063cf55fea914610772578063d51ed1c8146107a0578063d78e139d146107bf575f80fd5b80638c46d66b1161010f5780638c46d66b146106475780638da5cb5b14610666578063900ba33b1461068257806395d89b411461069b578063a8aa1b31146106c9578063a9059cbb146106e8575f80fd5b8063715018a6146105a657806378109e54146105ba5780637d1db4a5146105cf57806386f6c3c1146105e4578063893d20e8146106035780638a8c523c14610633575f80fd5b806320221470116101f7578063571ac8b0116101b1578063571ac8b0146104d65780635aa6a95f146104f55780635e04e4f814610514578063658d4b7f146105335780636ddd17131461055257806370a0823114610572575f80fd5b8063202214701461042b57806323b872dd1461044a5780632b112e4914610469578063313ce5671461047d5780633554dd3c146104985780634f85a0c5146104b7575f80fd5b80630f72f8ee116102485780630f72f8ee146103865780631161ae39146103a557806318160ddd146103c45780631c499ab0146103d85780631df4ccfc146103f7578063201e79911461040c575f80fd5b80630445b667146102995780630517d13d146102c157806306fdde03146102e257806308fd3d051461031e578063095ea7b31461034e5780630a8c98261461036d575f80fd5b3661029557005b5f80fd5b3480156102a4575f80fd5b506102ae60245481565b6040519081526020015b60405180910390f35b3480156102cc575f80fd5b506102e06102db366004612027565b6108bd565b005b3480156102ed575f80fd5b5060408051808201909152600b81526a0566976656b205472756d760ac1b60208201525b6040516102b8919061203e565b348015610329575f80fd5b5060235461033e90600160a01b900460ff1681565b60405190151581526020016102b8565b348015610359575f80fd5b5061033e61036836600461208e565b610915565b348015610378575f80fd5b5060115461033e9060ff1681565b348015610391575f80fd5b506102e06103a0366004612027565b610981565b3480156103b0575f80fd5b5061033e6103bf3660046120b6565b6109d5565b3480156103cf575f80fd5b506005546102ae565b3480156103e3575f80fd5b506102e06103f2366004612027565b6109e8565b348015610402575f80fd5b506102ae600d5481565b348015610417575f80fd5b506102e06104263660046120b6565b610a3f565b348015610436575f80fd5b506102e06104453660046120e6565b610a73565b348015610455575f80fd5b5061033e610464366004612101565b610aaf565b348015610474575f80fd5b506102ae610b6d565b348015610488575f80fd5b50604051601281526020016102b8565b3480156104a3575f80fd5b506102e06104b236600461213b565b610bbd565b3480156104c2575f80fd5b506102e06104d136600461219c565b610c45565b3480156104e1575f80fd5b5061033e6104f036600461221e565b610cd8565b348015610500575f80fd5b506102e061050f366004612027565b610ce4565b34801561051f575f80fd5b506102e061052e3660046120e6565b610d21565b34801561053e575f80fd5b506102e061054d366004612237565b610d5d565b34801561055d575f80fd5b5060235461033e90600160a81b900460ff1681565b34801561057d575f80fd5b506102ae61058c36600461221e565b6001600160a01b03165f908152600f602052604090205490565b3480156105b1575f80fd5b506102e0610db0565b3480156105c5575f80fd5b506102ae60075481565b3480156105da575f80fd5b506102ae60065481565b3480156105ef575f80fd5b506102e06105fe36600461226c565b610e21565b34801561060e575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016102b8565b34801561063e575f80fd5b506102e0610ee6565b348015610652575f80fd5b506102e06106613660046122ab565b610f24565b348015610671575f80fd5b505f546001600160a01b031661061b565b34801561068d575f80fd5b5060135461033e9060ff1681565b3480156106a6575f80fd5b506040805180820190915260068152650565452554d560d41b6020820152610311565b3480156106d4575f80fd5b5060235461061b906001600160a01b031681565b3480156106f3575f80fd5b5061033e61070236600461208e565b610f5e565b348015610712575f80fd5b505f5461061b906001600160a01b031681565b348015610730575f80fd5b5061033e61073f36600461221e565b60146020525f908152604090205460ff1681565b34801561075e575f80fd5b5061033e61076d36600461208e565b610f6a565b34801561077d575f80fd5b5061033e61078c36600461221e565b60126020525f908152604090205460ff1681565b3480156107ab575f80fd5b506102ae6107ba366004612027565b611062565b3480156107ca575f80fd5b506102e06107d9366004612027565b6110a7565b3480156107e9575f80fd5b506102e06107f836600461219c565b611121565b348015610808575f80fd5b506102ae6108173660046122d4565b6001600160a01b039182165f90815260106020908152604080832093909416825291909152205490565b34801561084c575f80fd5b506102e061085b366004612305565b6111ae565b34801561086b575f80fd5b506102e061087a36600461221e565b6111f9565b34801561088a575f80fd5b506102e0610899366004612237565b6112e0565b3480156108a9575f80fd5b5060215461061b906001600160a01b031681565b335f9081526014602052604090205460ff166108d7575f80fd5b6103e86005546108e79190612335565b60065410156108f4575f80fd5b6103e8816005546109059190612354565b61090f9190612335565b60065550565b335f8181526010602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061096f9086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b031633146109b35760405162461bcd60e51b81526004016109aa9061236b565b60405180910390fd5b6103e86005546109c39190612335565b60065410156109d0575f80fd5b600655565b5f826109e083611062565b119392505050565b335f9081526014602052604090205460ff16610a02575f80fd5b6103e8600554610a129190612335565b6007541015610a1f575f80fd5b606481600554610a2f9190612354565b610a399190612335565b60075550565b5f546001600160a01b03163314610a685760405162461bcd60e51b81526004016109aa9061236b565b601f91909155602055565b5f546001600160a01b03163314610a9c5760405162461bcd60e51b81526004016109aa9061236b565b6011805460ff1916911515919091179055565b6001600160a01b0383165f9081526010602090815260408083203384529091528120545f1914610b58576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152601082528381203382529091529190912054610b34918490611333565b6001600160a01b0385165f9081526010602090815260408083203384529091529020555b610b6384848461136b565b90505b9392505050565b6004546001600160a01b03165f908152600f6020526040812054610bb8906003546001600160a01b03165f908152600f6020526040902054610bb290600554906117d1565b906117d1565b905090565b5f546001600160a01b03163314610be65760405162461bcd60e51b81526004016109aa9061236b565b601a80546001600160a01b03199081166001600160a01b0397881617909155601b8054821695871695909517909455601c8054851693861693909317909255601e80548416918516919091179055601d80549092169216919091179055565b5f546001600160a01b03163314610c6e5760405162461bcd60e51b81526004016109aa9061236b565b5f5b82811015610cd2578160145f868685818110610c8e57610c8e6123a0565b9050602002016020810190610ca3919061221e565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610c70565b50505050565b5f61097b825f19610915565b5f546001600160a01b03163314610d0d5760405162461bcd60e51b81526004016109aa9061236b565b610d1b81633b9aca00612354565b60265550565b5f546001600160a01b03163314610d4a5760405162461bcd60e51b81526004016109aa9061236b565b6013805460ff1916911515919091179055565b5f546001600160a01b03163314610d865760405162461bcd60e51b81526004016109aa9061236b565b6001600160a01b03919091165f908152601560205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610dd95760405162461bcd60e51b81526004016109aa9061236b565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610e4a5760405162461bcd60e51b81526004016109aa9061236b565b6008869055600b8590556009849055600a839055600c829055610e7b82610e75858188818c8c611812565b90611812565b600d55600e819055610e8e600282612335565b600d5410610ede5760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e203530250000000060448201526064016109aa565b505050505050565b5f546001600160a01b03163314610f0f5760405162461bcd60e51b81526004016109aa9061236b565b6023805460ff60a01b1916600160a01b179055565b5f546001600160a01b03163314610f4d5760405162461bcd60e51b81526004016109aa9061236b565b601791909155601891909155601955565b5f610b6633848461136b565b335f9081526014602052604081205460ff16610f84575f80fd5b815f03610ff4576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610fcd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff191906123b4565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303815f875af115801561103e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6691906123cb565b5f61097b61106e610b6d565b6023546001600160a01b03165f908152600f60205260409020546110a19061109a906002905b90611870565b8590611870565b906118ee565b5f546001600160a01b031633146110d05760405162461bcd60e51b81526004016109aa9061236b565b601b5447906001600160a01b03166108fc60646110ed8585612354565b6110f79190612335565b6040518115909202915f818181858888f1935050505015801561111c573d5f803e3d5ffd5b505050565b5f546001600160a01b0316331461114a5760405162461bcd60e51b81526004016109aa9061236b565b5f5b82811015610cd2578160125f86868581811061116a5761116a6123a0565b905060200201602081019061117f919061221e565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905560010161114c565b5f546001600160a01b031633146111d75760405162461bcd60e51b81526004016109aa9061236b565b60238054921515600160a81b0260ff60a81b1990931692909217909155602455565b5f546001600160a01b031633146112225760405162461bcd60e51b81526004016109aa9061236b565b6001600160a01b0381166112875760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109aa565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146113095760405162461bcd60e51b81526004016109aa9061236b565b6001600160a01b03919091165f908152601660205260409020805460ff1916911515919091179055565b5f81848411156113565760405162461bcd60e51b81526004016109aa919061203e565b505f61136284866123e6565b95945050505050565b6025545f9060ff161561138a5761138384848461192f565b9050610b66565b6001600160a01b0384165f9081526001602052604090205460ff161580156113ca57506001600160a01b0383165f9081526001602052604090205460ff16155b1561148357602354600160a01b900460ff1661141f5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016109aa565b60135460ff1615611483576001600160a01b0383165f9081526014602052604090205460ff166114835760405162461bcd60e51b815260206004820152600f60248201526e139bdd0815da1a5d195b1a5cdd1959608a1b60448201526064016109aa565b60115460ff16156114e3576001600160a01b0384165f9081526012602052604090205460ff16156114e35760405162461bcd60e51b815260206004820152600a602482015269125cdcdb9a5c195c995960b21b60448201526064016109aa565b6026543a1015801561150357506023546001600160a01b03848116911614155b1561152b576001600160a01b0383165f908152601260205260409020805460ff191660011790555b6001600160a01b0384165f9081526001602052604090205460ff1615801561155c57506001600160a01b0383163014155b801561157657506003546001600160a01b03848116911614155b801561159057506023546001600160a01b03848116911614155b80156115aa5750601e546001600160a01b03848116911614155b80156115c45750601b546001600160a01b03848116911614155b80156115e857506001600160a01b0383165f9081526016602052604090205460ff16155b15611688576001600160a01b0383165f908152600f602052604090205460075461161284836123f9565b11156116865760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016109aa565b505b61169284836119ff565b61169a611a6b565b156116a7576116a7611abf565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f908152600f90915291909120546116f8918490611333565b6001600160a01b0385165f908152600f6020908152604080832093909355601590529081205460ff168061174357506001600160a01b0384165f9081526015602052604090205460ff165b61175757611752858486611e87565b611759565b825b6001600160a01b0385165f908152600f602052604090205490915061177e9082611812565b6001600160a01b038086165f818152600f602052604090819020939093559151908716905f805160206124a8833981519152906117be9085815260200190565b60405180910390a3506001949350505050565b5f610b6683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611333565b5f8061181e83856123f9565b905083811015610b665760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109aa565b5f825f0361187f57505f61097b565b5f61188a8385612354565b9050826118978583612335565b14610b665760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109aa565b5f610b6683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ffb565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600f9091529182205461197f918490611333565b6001600160a01b038086165f908152600f602052604080822093909355908516815220546119ad9083611812565b6001600160a01b038085165f818152600f602052604090819020939093559151908616905f805160206124a8833981519152906119ed9086815260200190565b60405180910390a35060019392505050565b60065481111580611a2757506001600160a01b0382165f9081526016602052604090205460ff165b611a675760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016109aa565b5050565b6023545f906001600160a01b03163314801590611a8b575060255460ff16155b8015611aa05750602354600160a81b900460ff165b8015610bb8575050602454305f908152600f6020526040902054101590565b6025805460ff19166001179055601f546020545f91611add916109d5565b611ae957600854611aeb565b5f5b90505f611b0e60026110a1600d546110a18660245461187090919063ffffffff16565b90505f611b26826024546117d190919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f81518110611b5e57611b5e6123a0565b6001600160a01b039283166020918202929092010152600254825191169082906001908110611b8f57611b8f6123a0565b6001600160a01b03928316602091820292909201015260215460405163791ac94760e01b81524792919091169063791ac94790611bd89086905f9087903090429060040161240c565b5f604051808303815f87803b158015611bef575f80fd5b505af1158015611c01573d5f803e3d5ffd5b505050505f611c1982476117d190919063ffffffff16565b90505f611c33611c2a8860026118ee565b600d54906117d1565b90505f611c4760026110a18481878d611870565b90505f611c63836110a16009548761187090919063ffffffff16565b90505f611c7f846110a1600b548861187090919063ffffffff16565b90505f611c9b856110a1600a548961187090919063ffffffff16565b601b546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f8114611cea576040519150601f19603f3d011682016040523d82523d5f602084013e611cef565b606091505b5050601c546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611d3c576040519150601f19603f3d011682016040523d82523d5f602084013e611d41565b606091505b5050601d546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114611d8e576040519150601f19603f3d011682016040523d82523d5f602084013e611d93565b606091505b505f9250508b159050611e6f57602154601a5460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611e0d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611e32919061247c565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506025805460ff1916905550505050505050505050565b6019546023545f91906001600160a01b0390811690841603611eac5750601754611ec7565b6023546001600160a01b0390811690861603611ec757506018545b5f611ef3600e546064611eda9190612354565b6110a184611094600d548a61187090919063ffffffff16565b90505f611f11600d546110a1600c548561187090919063ffffffff16565b90505f611f1e83836117d1565b305f908152600f6020526040902054909150611f3a9082611812565b305f908152600f602052604080822092909255601e546001600160a01b031681522054611f679083611812565b601e546001600160a01b039081165f908152600f602090815260409182902093909355518381523092918b16915f805160206124a8833981519152910160405180910390a38115611fe557601e546040518381526001600160a01b03918216918a16905f805160206124a88339815191529060200160405180910390a35b611fef87846117d1565b98975050505050505050565b5f818361201b5760405162461bcd60e51b81526004016109aa919061203e565b505f6113628486612335565b5f60208284031215612037575f80fd5b5035919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114612089575f80fd5b919050565b5f806040838503121561209f575f80fd5b6120a883612073565b946020939093013593505050565b5f80604083850312156120c7575f80fd5b50508035926020909101359150565b80151581146120e3575f80fd5b50565b5f602082840312156120f6575f80fd5b8135610b66816120d6565b5f805f60608486031215612113575f80fd5b61211c84612073565b925061212a60208501612073565b929592945050506040919091013590565b5f805f805f60a0868803121561214f575f80fd5b61215886612073565b945061216660208701612073565b935061217460408701612073565b925061218260608701612073565b915061219060808701612073565b90509295509295909350565b5f805f604084860312156121ae575f80fd5b833567ffffffffffffffff8111156121c4575f80fd5b8401601f810186136121d4575f80fd5b803567ffffffffffffffff8111156121ea575f80fd5b8660208260051b84010111156121fe575f80fd5b602091820194509250840135612213816120d6565b809150509250925092565b5f6020828403121561222e575f80fd5b610b6682612073565b5f8060408385031215612248575f80fd5b61225183612073565b91506020830135612261816120d6565b809150509250929050565b5f805f805f8060c08789031215612281575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f805f606084860312156122bd575f80fd5b505081359360208301359350604090920135919050565b5f80604083850312156122e5575f80fd5b6122ee83612073565b91506122fc60208401612073565b90509250929050565b5f8060408385031215612316575f80fd5b82356120a8816120d6565b634e487b7160e01b5f52601160045260245ffd5b5f8261234f57634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761097b5761097b612321565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156123c4575f80fd5b5051919050565b5f602082840312156123db575f80fd5b8151610b66816120d6565b8181038181111561097b5761097b612321565b8082018082111561097b5761097b612321565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b8181101561245c5783516001600160a01b0316835260209384019390920191600101612435565b50506001600160a01b039590951660608401525050608001529392505050565b5f805f6060848603121561248e575f80fd5b505081516020830151604090930151909492935091905056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208c23ad4131576ec67c7c23b3c79ec37077a54130f7493ac55f5ea70a0d27b79a64736f6c634300081a0033

Deployed Bytecode Sourcemap

5071:14575:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6941:53;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;6941:53:0;;;;;;;;10123:258;;;;;;;;;;-1:-1:-1;10123:258:0;;;;;:::i;:::-;;:::i;:::-;;8531:80;;;;;;;;;;-1:-1:-1;8603:5:0;;;;;;;;;;;;-1:-1:-1;;;8603:5:0;;;;8531:80;;;;;;;:::i;6860:31::-;;;;;;;;;;-1:-1:-1;6860:31:0;;;;-1:-1:-1;;;6860:31:0;;;;;;;;;1015:14:1;;1008:22;990:41;;978:2;963:18;6860:31:0;850:187:1;8953:216:0;;;;;;;;;;-1:-1:-1;8953:216:0;;;;;:::i;:::-;;:::i;6085:32::-;;;;;;;;;;-1:-1:-1;6085:32:0;;;;;;;;11339:154;;;;;;;;;;-1:-1:-1;11339:154:0;;;;;:::i;:::-;;:::i;19422:150::-;;;;;;;;;;-1:-1:-1;19422:150:0;;;;;:::i;:::-;;:::i;8261:88::-;;;;;;;;;;-1:-1:-1;8334:12:0;;8261:88;;9849:266;;;;;;;;;;-1:-1:-1;9849:266:0;;;;;:::i;:::-;;:::i;5830:89::-;;;;;;;;;;;;;;;;18903:182;;;;;;;;;;-1:-1:-1;18903:182:0;;;;;:::i;:::-;;:::i;16839:97::-;;;;;;;;;;-1:-1:-1;16839:97:0;;;;;:::i;:::-;;:::i;9471:370::-;;;;;;;;;;-1:-1:-1;9471:370:0;;;;;:::i;:::-;;:::i;19097:142::-;;;;;;;;;;;;;:::i;8355:80::-;;;;;;;;;;-1:-1:-1;8355:80:0;;5413:2;2766:36:1;;2754:2;2739:18;8355:80:0;2624:184:1;18298:434:0;;;;;;;;;;-1:-1:-1;18298:434:0;;;;;:::i;:::-;;:::i;17257:200::-;;;;;;;;;;-1:-1:-1;17257:200:0;;;;;:::i;:::-;;:::i;9177:122::-;;;;;;;;;;-1:-1:-1;9177:122:0;;;;;:::i;:::-;;:::i;14856:106::-;;;;;;;;;;-1:-1:-1;14856:106:0;;;;;:::i;:::-;;:::i;16944:89::-;;;;;;;;;;-1:-1:-1;16944:89:0;;;;;:::i;:::-;;:::i;17465:119::-;;;;;;;;;;-1:-1:-1;17465:119:0;;;;;:::i;:::-;;:::i;6904:30::-;;;;;;;;;;-1:-1:-1;6904:30:0;;;;-1:-1:-1;;;6904:30:0;;;;;;8701:105;;;;;;;;;;-1:-1:-1;8701:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;8785:18:0;8767:7;8785:18;;;:9;:18;;;;;;;8701:105;1072:148;;;;;;;;;;;;;:::i;5549:63::-;;;;;;;;;;;;;;;;5482:60;;;;;;;;;;;;;;;;17727:563;;;;;;;;;;-1:-1:-1;17727:563:0;;;;;:::i;:::-;;:::i;8617:78::-;;;;;;;;;;-1:-1:-1;8669:7:0;923:6;-1:-1:-1;;;;;923:6:0;8617:78;;;-1:-1:-1;;;;;5561:32:1;;;5543:51;;5531:2;5516:18;8617:78:0;5397:203:1;14769:79:0;;;;;;;;;;;;;:::i;14534:204::-;;;;;;;;;;-1:-1:-1;14534:204:0;;;;;:::i;:::-;;:::i;858:79::-;;;;;;;;;;-1:-1:-1;896:7:0;923:6;-1:-1:-1;;;;;923:6:0;858:79;;6178:28;;;;;;;;;;-1:-1:-1;6178:28:0;;;;;;;;8441:84;;;;;;;;;;-1:-1:-1;8515:7:0;;;;;;;;;;;;-1:-1:-1;;;8515:7:0;;;;8441:84;;6828:19;;;;;;;;;;-1:-1:-1;6828:19:0;;;;-1:-1:-1;;;;;6828:19:0;;;9307:156;;;;;;;;;;-1:-1:-1;9307:156:0;;;;;:::i;:::-;;:::i;478:21::-;;;;;;;;;;-1:-1:-1;478:21:0;;;;-1:-1:-1;;;;;478:21:0;;;6213:41;;;;;;;;;;-1:-1:-1;6213:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14224:302;;;;;;;;;;-1:-1:-1;14224:302:0;;;;;:::i;:::-;;:::i;6124:45::-;;;;;;;;;;-1:-1:-1;6124:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19247:167;;;;;;;;;;-1:-1:-1;19247:167:0;;;;;:::i;:::-;;:::i;13987:229::-;;;;;;;;;;-1:-1:-1;13987:229:0;;;;;:::i;:::-;;:::i;17041:208::-;;;;;;;;;;-1:-1:-1;17041:208:0;;;;;:::i;:::-;;:::i;8812:133::-;;;;;;;;;;-1:-1:-1;8812:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;8914:19:0;;;8896:7;8914:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8812:133;18740:155;;;;;;;;;;-1:-1:-1;18740:155:0;;;;;:::i;:::-;;:::i;1228:244::-;;;;;;;;;;-1:-1:-1;1228:244:0;;;;;:::i;:::-;;:::i;17592:127::-;;;;;;;;;;-1:-1:-1;17592:127:0;;;;;:::i;:::-;;:::i;6758:24::-;;;;;;;;;;-1:-1:-1;6758:24:0;;;;-1:-1:-1;;;;;6758:24:0;;;10123:258;10210:10;10201:20;;;;:8;:20;;;;;;;;10193:29;;;;;;10272:4;10257:12;;:19;;;;:::i;:::-;10241:12;;:35;;10233:44;;;;;;10369:4;10352:12;10337;;:27;;;;:::i;:::-;10336:37;;;;:::i;:::-;10321:12;:52;-1:-1:-1;10123:258:0:o;8953:216::-;9057:10;9028:4;9045:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;9045:32:0;;;;;;;;;;:41;;;9102:37;9028:4;;9045:32;;9102:37;;;;9080:6;160:25:1;;148:2;133:18;;14:177;9102:37:0;;;;;;;;-1:-1:-1;9157:4:0;8953:216;;;;;:::o;11339:154::-;985:6;;-1:-1:-1;;;;;985:6:0;295:10;985:22;977:67;;;;-1:-1:-1;;;977:67:0;;;;;;;:::i;:::-;;;;;;;;;11448:4:::1;11433:12;;:19;;;;:::i;:::-;11417:12;;:35;;11409:44;;;::::0;::::1;;11464:12;:21:::0;11339:154::o;19422:150::-;19502:4;19558:6;19526:29;19546:8;19526:19;:29::i;:::-;:38;;19422:150;-1:-1:-1;;;19422:150:0:o;9849:266::-;9933:10;9924:20;;;;:8;:20;;;;;;;;9916:29;;;;;;9998:4;9983:12;;:19;;;;:::i;:::-;9964:15;;:38;;9956:47;;;;;;10086:3;10067:14;10052:12;;:29;;;;:::i;:::-;10051:38;;;;:::i;:::-;10033:15;:56;-1:-1:-1;9849:266:0:o;18903:182::-;985:6;;-1:-1:-1;;;;;985:6:0;295:10;985:22;977:67;;;;-1:-1:-1;;;977:67:0;;;;;;;:::i;:::-;19000:15:::1;:25:::0;;;;19036:26:::1;:41:::0;18903:182::o;16839:97::-;985:6;;-1:-1:-1;;;;;985:6:0;295:10;985:22;977:67;;;;-1:-1:-1;;;977:67:0;;;;;;;:::i;:::-;16906:12:::1;:22:::0;;-1:-1:-1;;16906:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16839:97::o;9471:370::-;-1:-1:-1;;;;;9591:19:0;;9571:4;9591:19;;;:11;:19;;;;;;;;9611:10;9591:31;;;;;;;;-1:-1:-1;;9591:52:0;9588:186;;9693:69;;;;;;;;;;;-1:-1:-1;;;9693:69:0;;;;;;;;-1:-1:-1;;;;;9693:19:0;;-1:-1:-1;9693:19:0;;;:11;:19;;;;;9713:10;9693:31;;;;;;;;;;:69;;9729:6;;9693:35;:69::i;:::-;-1:-1:-1;;;;;9659:19:0;;;;;;:11;:19;;;;;;;;9679:10;9659:31;;;;;;;:103;9588:186;9793:40;9807:6;9815:9;9826:6;9793:13;:40::i;:::-;9786:47;;9471:370;;;;;;:::o;19097:142::-;19225:4;;-1:-1:-1;;;;;19225:4:0;19150:7;8785:18;;;:9;:18;;;;;;19177:54;;19204:4;;-1:-1:-1;;;;;19204:4:0;8767:7;8785:18;;;:9;:18;;;;;;19177:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;19170:61;;19097:142;:::o;18298:434::-;985:6;;-1:-1:-1;;;;;985:6:0;295:10;985:22;977:67;;;;-1:-1:-1;;;977:67:0;;;;;;;:::i;:::-;18490:21:::1;:46:::0;;-1:-1:-1;;;;;;18490:46:0;;::::1;-1:-1:-1::0;;;;;18490:46:0;;::::1;;::::0;;;18547:20:::1;:44:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;18602:14:::1;:32:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;18645:15:::1;:34:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;18690:15:::1;:34:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;18298:434::o;17257:200::-;985:6;;-1:-1:-1;;;;;985:6:0;295:10;985:22;977:67;;;;-1:-1:-1;;;977:67:0;;;;;;;:::i;:::-;17354:9:::1;17349:101;17365:20:::0;;::::1;17349:101;;;17432:6;17407:8;:22;17416:9;;17426:1;17416:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17407:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17407:22:0;:31;;-1:-1:-1;;17407:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;17387:3:0::1;17349:101;;;;17257:200:::0;;;:::o;9177:122::-;9232:4;9256:35;9264:7;-1:-1:-1;;9256:7:0;:35::i;14856:106::-;985:6;;-1:-1:-1;;;;;985:6:0;295:10;985:22;977:67;;;;-1:-1:-1;;;977:67:0;;;;;;;:::i;:::-;14937:16:::1;:7:::0;14947:6:::1;14937:16;:::i;:::-;14928:6;:25:::0;-1:-1:-1;14856:106:0:o;16944:89::-;985:6;;-1:-1:-1;;;;;985:6:0;295:10;985:22;977:67;;;;-1:-1:-1;;;977:67:0;;;;;;;:::i;:::-;17007:8:::1;:18:::0;;-1:-1:-1;;17007:18:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16944:89::o;17465:119::-;985:6;;-1:-1:-1;;;;;985:6:0;295:10;985:22;977:67;;;;-1:-1:-1;;;977:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17548:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;17548:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17465:119::o;1072:148::-;985:6;;-1:-1:-1;;;;;985:6:0;295:10;985:22;977:67;;;;-1:-1:-1;;;977:67:0;;;;;;;:::i;:::-;1179:1:::1;1163:6:::0;;1142:40:::1;::::0;-1:-1:-1;;;;;1163:6:0;;::::1;::::0;1142:40:::1;::::0;1179:1;;1142:40:::1;1210:1;1193:19:::0;;-1:-1:-1;;;;;;1193:19:0::1;::::0;;1072:148::o;17727:563::-;985:6;;-1:-1:-1;;;;;985:6:0;295:10;985:22;977:67;;;;-1:-1:-1;;;977:67:0;;;;;;;:::i;:::-;17898:12:::1;:28:::0;;;17937:7:::1;:18:::0;;;17966:12:::1;:28:::0;;;18005:6:::1;:16:::0;;;18032:7:::1;:18:::0;;;18072:73:::1;18042:8:::0;18072:59:::1;18014:7:::0;18072:59;17981:13;18072:59;17913:13;17947:8;18072:17:::1;:27::i;:::-;:31:::0;::::1;:46::i;:73::-;18061:8;:84:::0;18156:14:::1;:32:::0;;;18218:16:::1;18233:1;18173:15:::0;18218:16:::1;:::i;:::-;18207:8;;:27;18199:68;;;::::0;-1:-1:-1;;;18199:68:0;;8155:2:1;18199:68:0::1;::::0;::::1;8137:21:1::0;8194:2;8174:18;;;8167:30;8233;8213:18;;;8206:58;8281:18;;18199:68:0::1;7953:352:1::0;18199:68:0::1;17727:563:::0;;;;;;:::o;14769:79::-;985:6;;-1:-1:-1;;;;;985:6:0;295:10;985:22;977:67;;;;-1:-1:-1;;;977:67:0;;;;;;;:::i;:::-;14822:11:::1;:18:::0;;-1:-1:-1;;;;14822:18:0::1;-1:-1:-1::0;;;14822:18:0::1;::::0;;14769:79::o;14534:204::-;985:6;;-1:-1:-1;;;;;985:6:0;295:10;985:22;977:67;;;;-1:-1:-1;;;977:67:0;;;;;;;:::i;:::-;14635:14:::1;:22:::0;;;;14668:13:::1;:20:::0;;;;14699:18:::1;:27:::0;14534:204::o;9307:156::-;9387:4;9411:44;9425:10;9437:9;9448:6;9411:13;:44::i;14224:302::-;14338:10;14304:4;14329:20;;;:8;:20;;;;;;;;14321:29;;;;;;14361:6;14371:1;14361:11;14358:95;;14397:44;;-1:-1:-1;;;14397:44:0;;14435:4;14397:44;;;5543:51:1;-1:-1:-1;;;;;14397:29:0;;;;;5516:18:1;;14397:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14388:53;;14358:95;14470:48;;-1:-1:-1;;;14470:48:0;;14499:10;14470:48;;;8719:51:1;8786:18;;;8779:34;;;-1:-1:-1;;;;;14470:28:0;;;;;8692:18:1;;14470:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;19247:167::-;19315:7;19342:64;19383:22;:20;:22::i;:::-;19365:4;;-1:-1:-1;;;;;19365:4:0;8767:7;8785:18;;;:9;:18;;;;;;19342:36;;19355:22;;19375:1;;19355:15;:19;;:22::i;:::-;19342:8;;:12;:36::i;:::-;:40;;:64::i;13987:229::-;985:6;;-1:-1:-1;;;;;985:6:0;295:10;985:22;977:67;;;;-1:-1:-1;;;977:67:0;;;;;;;:::i;:::-;14142:20:::1;::::0;14102:21:::1;::::0;-1:-1:-1;;;;;14142:20:0::1;14134:74;14204:3;14173:28;14185:16:::0;14102:21;14173:28:::1;:::i;:::-;:34;;;;:::i;:::-;14134:74;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;14055:161;13987:229:::0;:::o;17041:208::-;985:6;;-1:-1:-1;;;;;985:6:0;295:10;985:22;977:67;;;;-1:-1:-1;;;977:67:0;;;;;;;:::i;:::-;17142:9:::1;17137:105;17153:20:::0;;::::1;17137:105;;;17224:6;17195:12;:26;17208:9;;17218:1;17208:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17195:26:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17195:26:0;:35;;-1:-1:-1;;17195:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;17175:3:0::1;17137:105;;18740:155:::0;985:6;;-1:-1:-1;;;;;985:6:0;295:10;985:22;977:67;;;;-1:-1:-1;;;977:67:0;;;;;;;:::i;:::-;18831:11:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;18831:22:0::1;-1:-1:-1::0;;;;18831:22:0;;::::1;::::0;;;::::1;::::0;;;18864:13:::1;:23:::0;18740:155::o;1228:244::-;985:6;;-1:-1:-1;;;;;985:6:0;295:10;985:22;977:67;;;;-1:-1:-1;;;977:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1317:22:0;::::1;1309:73;;;::::0;-1:-1:-1;;;1309:73:0;;9276:2:1;1309:73:0::1;::::0;::::1;9258:21:1::0;9315:2;9295:18;;;9288:30;9354:34;9334:18;;;9327:62;-1:-1:-1;;;9405:18:1;;;9398:36;9451:19;;1309:73:0::1;9074:402:1::0;1309:73:0::1;1419:6;::::0;;1398:38:::1;::::0;-1:-1:-1;;;;;1398:38:0;;::::1;::::0;1419:6;::::1;::::0;1398:38:::1;::::0;::::1;1447:6;:17:::0;;-1:-1:-1;;;;;;1447:17:0::1;-1:-1:-1::0;;;;;1447:17:0;;;::::1;::::0;;;::::1;::::0;;1228:244::o;17592:127::-;985:6;;-1:-1:-1;;;;;985:6:0;295:10;985:22;977:67;;;;-1:-1:-1;;;977:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17679:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;17679:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17592:127::o;1832:192::-;1918:7;1954:12;1946:6;;;;1938:29;;;;-1:-1:-1;;;1938:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1978:9:0;1990:5;1994:1;1990;:5;:::i;:::-;1978:17;1832:192;-1:-1:-1;;;;;1832:192:0:o;11501:1635::-;11613:6;;11593:4;;11613:6;;11610:63;;;11629:41;11644:6;11652:9;11663:6;11629:14;:41::i;:::-;11622:48;;;;11610:63;-1:-1:-1;;;;;11689:22:0;;;;;;:14;:22;;;;;;;;11688:23;:53;;;;-1:-1:-1;;;;;;11716:25:0;;;;;;:14;:25;;;;;;;;11715:26;11688:53;11685:242;;;11765:11;;-1:-1:-1;;;11765:11:0;;;;11757:43;;;;-1:-1:-1;;;11757:43:0;;9816:2:1;11757:43:0;;;9798:21:1;9855:2;9835:18;;;9828:30;-1:-1:-1;;;9874:18:1;;;9867:50;9934:18;;11757:43:0;9614:344:1;11757:43:0;11816:8;;;;11813:103;;;-1:-1:-1;;;;;11852:19:0;;;;;;:8;:19;;;;;;;;11844:46;;;;-1:-1:-1;;;11844:46:0;;10165:2:1;11844:46:0;;;10147:21:1;10204:2;10184:18;;;10177:30;-1:-1:-1;;;10223:18:1;;;10216:45;10278:18;;11844:46:0;9963:339:1;11844:46:0;11964:12;;;;11961:90;;;-1:-1:-1;;;;;12001:20:0;;;;;;:12;:20;;;;;;;;12000:21;11992:43;;;;-1:-1:-1;;;11992:43:0;;10509:2:1;11992:43:0;;;10491:21:1;10548:2;10528:18;;;10521:30;-1:-1:-1;;;10567:18:1;;;10560:40;10617:18;;11992:43:0;10307:334:1;11992:43:0;12082:6;;12067:11;:21;;:42;;;;-1:-1:-1;12105:4:0;;-1:-1:-1;;;;;12092:17:0;;;12105:4;;12092:17;;12067:42;12063:105;;;-1:-1:-1;;;;;12126:23:0;;;;;;:12;:23;;;;;:30;;-1:-1:-1;;12126:30:0;12152:4;12126:30;;;12063:105;-1:-1:-1;;;;;12185:22:0;;;;;;:14;:22;;;;;;;;12184:23;:53;;;;-1:-1:-1;;;;;;12211:26:0;;12232:4;12211:26;;12184:53;:84;;;;-1:-1:-1;12263:4:0;;-1:-1:-1;;;;;12242:26:0;;;12263:4;;12242:26;;12184:84;:105;;;;-1:-1:-1;12285:4:0;;-1:-1:-1;;;;;12272:17:0;;;12285:4;;12272:17;;12184:105;:137;;;;-1:-1:-1;12306:15:0;;-1:-1:-1;;;;;12293:28:0;;;12306:15;;12293:28;;12184:137;:174;;;;-1:-1:-1;12338:20:0;;-1:-1:-1;;;;;12325:33:0;;;12338:20;;12325:33;;12184:174;:205;;;;-1:-1:-1;;;;;;12363:26:0;;;;;;:15;:26;;;;;;;;12362:27;12184:205;12180:397;;;-1:-1:-1;;;;;8785:18:0;;12405;8785;;;:9;:18;;;;;;12494:15;;12470:19;12483:6;8785:18;12470:19;:::i;:::-;12469:40;;12461:114;;;;-1:-1:-1;;;12461:114:0;;10978:2:1;12461:114:0;;;10960:21:1;11017:2;10997:18;;;10990:30;11056:34;11036:18;;;11029:62;11127:32;11107:18;;;11100:60;11177:19;;12461:114:0;10776:426:1;12461:114:0;12390:187;12180:397;12630:28;12643:6;12651;12630:12;:28::i;:::-;12675:16;:14;:16::i;:::-;12672:35;;;12694:10;:8;:10::i;:::-;12787:53;;;;;;;;;;;-1:-1:-1;;;12787:53:0;;;;;;;;-1:-1:-1;;;;;12787:17:0;;-1:-1:-1;12787:17:0;;;:9;:17;;;;;;;;:53;;12809:6;;12787:21;:53::i;:::-;-1:-1:-1;;;;;12767:17:0;;;;;;:9;:17;;;;;;;;:73;;;;12879:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;12902:22:0;;;;;;:11;:22;;;;;;;;12879:45;12878:93;;12937:34;12945:6;12953;12961:9;12937:7;:34::i;:::-;12878:93;;;12928:6;12878:93;-1:-1:-1;;;;;13005:20:0;;;;;;:9;:20;;;;;;12853:118;;-1:-1:-1;13005:40:0;;12853:118;13005:24;:40::i;:::-;-1:-1:-1;;;;;12982:20:0;;;;;;;:9;:20;;;;;;;:63;;;;13063:43;;;;;;-1:-1:-1;;;;;;;;;;;13063:43:0;;;13091:14;160:25:1;;148:2;133:18;;14:177;13063:43:0;;;;;;;;-1:-1:-1;13124:4:0;;11501:1635;-1:-1:-1;;;;11501:1635:0:o;1690:136::-;1748:7;1775:43;1779:1;1782;1775:43;;;;;;;;;;;;;;;;;:3;:43::i;1503:181::-;1561:7;;1593:5;1597:1;1593;:5;:::i;:::-;1581:17;;1622:1;1617;:6;;1609:46;;;;-1:-1:-1;;;1609:46:0;;11409:2:1;1609:46:0;;;11391:21:1;11448:2;11428:18;;;11421:30;11487:29;11467:18;;;11460:57;11534:18;;1609:46:0;11207:351:1;2030:250:0;2088:7;2112:1;2117;2112:6;2108:47;;-1:-1:-1;2142:1:0;2135:8;;2108:47;2167:9;2179:5;2183:1;2179;:5;:::i;:::-;2167:17;-1:-1:-1;2212:1:0;2203:5;2207:1;2167:17;2203:5;:::i;:::-;:10;2195:56;;;;-1:-1:-1;;;2195:56:0;;11765:2:1;2195:56:0;;;11747:21:1;11804:2;11784:18;;;11777:30;11843:34;11823:18;;;11816:62;-1:-1:-1;;;11894:18:1;;;11887:31;11935:19;;2195:56:0;11563:397:1;2286:132:0;2344:7;2371:39;2375:1;2378;2371:39;;;;;;;;;;;;;;;;;:3;:39::i;13148:330::-;13278:53;;;;;;;;;;;-1:-1:-1;;;13278:53:0;;;;;;;;-1:-1:-1;;;;;13278:17:0;;13241:4;13278:17;;;:9;:17;;;;;;;:53;;13300:6;;13278:21;:53::i;:::-;-1:-1:-1;;;;;13258:17:0;;;;;;;:9;:17;;;;;;:73;;;;13365:20;;;;;;;:32;;13390:6;13365:24;:32::i;:::-;-1:-1:-1;;;;;13342:20:0;;;;;;;:9;:20;;;;;;;:55;;;;13413:35;;;;;;-1:-1:-1;;;;;;;;;;;13413:35:0;;;13441:6;160:25:1;;148:2;133:18;;14:177;13413:35:0;;;;;;;;-1:-1:-1;13466:4:0;13148:330;;;;;:::o;13486:166::-;13583:12;;13573:6;:22;;:49;;;-1:-1:-1;;;;;;13599:23:0;;;;;;:15;:23;;;;;;;;13573:49;13565:79;;;;-1:-1:-1;;;13565:79:0;;12167:2:1;13565:79:0;;;12149:21:1;12206:2;12186:18;;;12179:30;-1:-1:-1;;;12225:18:1;;;12218:47;12282:18;;13565:79:0;11965:341:1;13565:79:0;13486:166;;:::o;13782:197::-;13869:4;;13831;;-1:-1:-1;;;;;13869:4:0;13855:10;:18;;;;:38;;-1:-1:-1;13887:6:0;;;;13886:7;13855:38;:62;;;;-1:-1:-1;13906:11:0;;-1:-1:-1;;;13906:11:0;;;;13855:62;:116;;;;-1:-1:-1;;13958:13:0;;13948:4;13930:24;;;;:9;:24;;;;;;:41;;;13782:197::o;14970:1861::-;7042:6;:13;;-1:-1:-1;;7042:13:0;7051:4;7042:13;;;15065:15:::1;::::0;15082:26:::1;::::0;7042:6;;15049:60:::1;::::0;:15:::1;:60::i;:::-;:79;;15116:12;;15049:79;;;15112:1;15049:79;15019:109;;15139:23;15165:59;15222:1;15165:52;15208:8;;15165:38;15183:19;15165:13;;:17;;:38;;;;:::i;:59::-;15139:85;;15235:20;15258:34;15276:15;15258:13;;:17;;:34;;;;:::i;:::-;15329:16;::::0;;15343:1:::1;15329:16:::0;;;;;::::1;::::0;;15235:57;;-1:-1:-1;15305:21:0::1;::::0;15329:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;15329:16:0::1;15305:40;;15374:4;15356;15361:1;15356:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15356:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;15400:4:::1;::::0;15390:7;;15400:4;::::1;::::0;15390;;15400;;15390:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;15390:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;15475:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;15475:188:0;;15441:21:::1;::::0;15475:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;15547:12;;15417:21:::1;::::0;15590:4;;15617::::1;::::0;15637:15:::1;::::0;15475:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15676:17;15696:40;15722:13;15696:21;:25;;:40;;;;:::i;:::-;15676:60:::0;-1:-1:-1;15749:19:0::1;15771:40;15784:26;:19:::0;15808:1:::1;15784:23;:26::i;:::-;15771:8;::::0;;:12:::1;:40::i;:::-;15749:62:::0;-1:-1:-1;15832:26:0::1;15861:58;15917:1;15861:51;15749:62:::0;15861:51;:9;15875:19;15861:13:::1;:34::i;:58::-;15832:87;;15930:26;15959:44;15991:11;15959:27;15973:12;;15959:9;:13;;:27;;;;:::i;:44::-;15930:73;;16014:21;16038:39;16065:11;16038:22;16052:7;;16038:9;:13;;:22;;;;:::i;:39::-;16014:63;;16088:20;16111:38;16137:11;16111:21;16125:6;;16111:9;:13;;:21;;;;:::i;:38::-;16191:20;::::0;16183:65:::1;::::0;16088:61;;-1:-1:-1;16163:15:0::1;::::0;-1:-1:-1;;;;;16191:20:0;;::::1;::::0;16225:18;;16163:15;16183:65;16163:15;16183:65;16225:18;16191:20;16183:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;16283:14:0::1;::::0;16275:53:::1;::::0;16162:86;;-1:-1:-1;;;;;;16283:14:0::1;::::0;16311:12;;16275:53:::1;::::0;;;16311:12;16283:14;16275:53:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;16363:15:0::1;::::0;16355:55:::1;::::0;16259:69;;-1:-1:-1;;;;;;16363:15:0::1;::::0;16392:13;;16355:55:::1;::::0;;;16392:13;16363:15;16355:55:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;16444:5:0::1;::::0;-1:-1:-1;;16465:19:0;;;-1:-1:-1;16462:362:0::1;;16500:6;::::0;16674:21:::1;::::0;16500:244:::1;::::0;-1:-1:-1;;;16500:244:0;;16576:4:::1;16500:244;::::0;::::1;13920:51:1::0;13987:18;;;13980:34;;;16500:6:0::1;14030:18:1::0;;;14023:34;;;14073:18;;;14066:34;-1:-1:-1;;;;;16674:21:0;;::::1;14116:19:1::0;;;14109:61;16714:15:0::1;14186:19:1::0;;;14179:35;16500:6:0;::::1;::::0;:22:::1;::::0;16530:18;;13892:19:1;;16500:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;16764:48:0::1;::::0;;14860:25:1;;;14916:2;14901:18;;14894:34;;;16764:48:0::1;::::0;-1:-1:-1;14833:18:1;16764:48:0::1;;;;;;;16462:362;-1:-1:-1::0;;7060:6:0;:14;;-1:-1:-1;;7060:14:0;;;-1:-1:-1;;;;;;;;;;14970:1861:0:o;10389:942::-;10526:18;;10573:4;;10475:7;;10526:18;-1:-1:-1;;;;;10573:4:0;;;10560:17;;;;10557:154;;-1:-1:-1;10607:14:0;;10557:154;;;10652:4;;-1:-1:-1;;;;;10652:4:0;;;10642:14;;;;10639:72;;-1:-1:-1;10686:13:0;;10639:72;10723:17;10743:62;10784:14;;10801:3;10784:20;;;;:::i;:::-;10743:36;10768:10;10743:20;10754:8;;10743:6;:10;;:20;;;;:::i;:62::-;10723:82;;10816:18;10837:36;10864:8;;10837:22;10851:7;;10837:9;:13;;:22;;;;:::i;:36::-;10816:57;-1:-1:-1;10884:22:0;10909:25;:9;10816:57;10909:13;:25::i;:::-;10992:4;10974:24;;;;:9;:24;;;;;;10884:50;;-1:-1:-1;10974:44:0;;10884:50;10974:28;:44::i;:::-;10965:4;10947:24;;;;:9;:24;;;;;;:71;;;;11068:15;;-1:-1:-1;;;;;11068:15:0;11058:26;;;;:42;;11089:10;11058:30;:42::i;:::-;11039:15;;-1:-1:-1;;;;;11039:15:0;;;11029:26;;;;:9;:26;;;;;;;;;:71;;;;11116:47;160:25:1;;;11141:4:0;;11116:47;;;;-1:-1:-1;;;;;;;;;;;11116:47:0;133:18:1;11116:47:0;;;;;;;11187:14;;11184:99;;11239:15;;11222:45;;160:25:1;;;-1:-1:-1;;;;;11239:15:0;;;;11222:45;;;-1:-1:-1;;;;;;;;;;;11222:45:0;148:2:1;133:18;11222:45:0;;;;;;;11184:99;11302:21;:6;11313:9;11302:10;:21::i;:::-;11295:28;10389:942;-1:-1:-1;;;;;;;;10389:942:0:o;2424:189::-;2510:7;2545:12;2538:5;2530:28;;;;-1:-1:-1;;;2530:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2569:9:0;2581:5;2585:1;2581;:5;:::i;196:226:1:-;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;369:23:1;;196:226;-1:-1:-1;196:226:1:o;427:418::-;576:2;565:9;558:21;539:4;608:6;602:13;651:6;646:2;635:9;631:18;624:34;710:6;705:2;697:6;693:15;688:2;677:9;673:18;667:50;766:1;761:2;752:6;741:9;737:22;733:31;726:42;836:2;829;825:7;820:2;812:6;808:15;804:29;793:9;789:45;785:54;777:62;;;427:418;;;;:::o;1042:173::-;1110:20;;-1:-1:-1;;;;;1159:31:1;;1149:42;;1139:70;;1205:1;1202;1195:12;1139:70;1042:173;;;:::o;1220:300::-;1288:6;1296;1349:2;1337:9;1328:7;1324:23;1320:32;1317:52;;;1365:1;1362;1355:12;1317:52;1388:29;1407:9;1388:29;:::i;:::-;1378:39;1486:2;1471:18;;;;1458:32;;-1:-1:-1;;;1220:300:1:o;1525:346::-;1593:6;1601;1654:2;1642:9;1633:7;1629:23;1625:32;1622:52;;;1670:1;1667;1660:12;1622:52;-1:-1:-1;;1715:23:1;;;1835:2;1820:18;;;1807:32;;-1:-1:-1;1525:346:1:o;1876:118::-;1962:5;1955:13;1948:21;1941:5;1938:32;1928:60;;1984:1;1981;1974:12;1928:60;1876:118;:::o;1999:241::-;2055:6;2108:2;2096:9;2087:7;2083:23;2079:32;2076:52;;;2124:1;2121;2114:12;2076:52;2163:9;2150:23;2182:28;2204:5;2182:28;:::i;2245:374::-;2322:6;2330;2338;2391:2;2379:9;2370:7;2366:23;2362:32;2359:52;;;2407:1;2404;2397:12;2359:52;2430:29;2449:9;2430:29;:::i;:::-;2420:39;;2478:38;2512:2;2501:9;2497:18;2478:38;:::i;:::-;2245:374;;2468:48;;-1:-1:-1;;;2585:2:1;2570:18;;;;2557:32;;2245:374::o;2813:484::-;2908:6;2916;2924;2932;2940;2993:3;2981:9;2972:7;2968:23;2964:33;2961:53;;;3010:1;3007;3000:12;2961:53;3033:29;3052:9;3033:29;:::i;:::-;3023:39;;3081:38;3115:2;3104:9;3100:18;3081:38;:::i;:::-;3071:48;;3138:38;3172:2;3161:9;3157:18;3138:38;:::i;:::-;3128:48;;3195:38;3229:2;3218:9;3214:18;3195:38;:::i;:::-;3185:48;;3252:39;3286:3;3275:9;3271:19;3252:39;:::i;:::-;3242:49;;2813:484;;;;;;;;:::o;3302:745::-;3394:6;3402;3410;3463:2;3451:9;3442:7;3438:23;3434:32;3431:52;;;3479:1;3476;3469:12;3431:52;3519:9;3506:23;3552:18;3544:6;3541:30;3538:50;;;3584:1;3581;3574:12;3538:50;3607:22;;3660:4;3652:13;;3648:27;-1:-1:-1;3638:55:1;;3689:1;3686;3679:12;3638:55;3729:2;3716:16;3755:18;3747:6;3744:30;3741:50;;;3787:1;3784;3777:12;3741:50;3842:7;3835:4;3825:6;3822:1;3818:14;3814:2;3810:23;3806:34;3803:47;3800:67;;;3863:1;3860;3853:12;3800:67;3894:4;3886:13;;;;-1:-1:-1;3918:6:1;-1:-1:-1;3959:20:1;;3946:34;3989:28;3946:34;3989:28;:::i;:::-;4036:5;4026:15;;;3302:745;;;;;:::o;4052:186::-;4111:6;4164:2;4152:9;4143:7;4139:23;4135:32;4132:52;;;4180:1;4177;4170:12;4132:52;4203:29;4222:9;4203:29;:::i;4243:315::-;4308:6;4316;4369:2;4357:9;4348:7;4344:23;4340:32;4337:52;;;4385:1;4382;4375:12;4337:52;4408:29;4427:9;4408:29;:::i;:::-;4398:39;;4487:2;4476:9;4472:18;4459:32;4500:28;4522:5;4500:28;:::i;:::-;4547:5;4537:15;;;4243:315;;;;;:::o;4563:829::-;4667:6;4675;4683;4691;4699;4707;4760:3;4748:9;4739:7;4735:23;4731:33;4728:53;;;4777:1;4774;4767:12;4728:53;-1:-1:-1;;4822:23:1;;;4942:2;4927:18;;4914:32;;-1:-1:-1;5045:2:1;5030:18;;5017:32;;5148:2;5133:18;;5120:32;;-1:-1:-1;5251:3:1;5236:19;;5223:33;;-1:-1:-1;5355:3:1;5340:19;5327:33;;-1:-1:-1;4563:829:1;-1:-1:-1;4563:829:1:o;5605:466::-;5682:6;5690;5698;5751:2;5739:9;5730:7;5726:23;5722:32;5719:52;;;5767:1;5764;5757:12;5719:52;-1:-1:-1;;5812:23:1;;;5932:2;5917:18;;5904:32;;-1:-1:-1;6035:2:1;6020:18;;;6007:32;;5605:466;-1:-1:-1;5605:466:1:o;6076:260::-;6144:6;6152;6205:2;6193:9;6184:7;6180:23;6176:32;6173:52;;;6221:1;6218;6211:12;6173:52;6244:29;6263:9;6244:29;:::i;:::-;6234:39;;6292:38;6326:2;6315:9;6311:18;6292:38;:::i;:::-;6282:48;;6076:260;;;;;:::o;6341:361::-;6406:6;6414;6467:2;6455:9;6446:7;6442:23;6438:32;6435:52;;;6483:1;6480;6473:12;6435:52;6522:9;6509:23;6541:28;6563:5;6541:28;:::i;6933:127::-;6994:10;6989:3;6985:20;6982:1;6975:31;7025:4;7022:1;7015:15;7049:4;7046:1;7039:15;7065:217;7105:1;7131;7121:132;;7175:10;7170:3;7166:20;7163:1;7156:31;7210:4;7207:1;7200:15;7238:4;7235:1;7228:15;7121:132;-1:-1:-1;7267:9:1;;7065:217::o;7287:168::-;7360:9;;;7391;;7408:15;;;7402:22;;7388:37;7378:71;;7429:18;;:::i;7460:356::-;7662:2;7644:21;;;7681:18;;;7674:30;7740:34;7735:2;7720:18;;7713:62;7807:2;7792:18;;7460:356::o;7821:127::-;7882:10;7877:3;7873:20;7870:1;7863:31;7913:4;7910:1;7903:15;7937:4;7934:1;7927:15;8310:230;8380:6;8433:2;8421:9;8412:7;8408:23;8404:32;8401:52;;;8449:1;8446;8439:12;8401:52;-1:-1:-1;8494:16:1;;8310:230;-1:-1:-1;8310:230:1:o;8824:245::-;8891:6;8944:2;8932:9;8923:7;8919:23;8915:32;8912:52;;;8960:1;8957;8950:12;8912:52;8992:9;8986:16;9011:28;9033:5;9011:28;:::i;9481:128::-;9548:9;;;9569:11;;;9566:37;;;9583:18;;:::i;10646:125::-;10711:9;;;10732:10;;;10729:36;;;10745:18;;:::i;12443:959::-;12705:4;12753:3;12742:9;12738:19;12784:6;12773:9;12766:25;12827:6;12822:2;12811:9;12807:18;12800:34;12870:3;12865:2;12854:9;12850:18;12843:31;12894:6;12929;12923:13;12960:6;12952;12945:22;12998:3;12987:9;12983:19;12976:26;;13037:2;13029:6;13025:15;13011:29;;13058:1;13068:195;13082:6;13079:1;13076:13;13068:195;;;13147:13;;-1:-1:-1;;;;;13143:39:1;13131:52;;13212:2;13238:15;;;;13203:12;;;;13179:1;13097:9;13068:195;;;-1:-1:-1;;;;;;;13319:32:1;;;;13314:2;13299:18;;13292:60;-1:-1:-1;;13383:3:1;13368:19;13361:35;13280:3;12443:959;-1:-1:-1;;;12443:959:1:o;14225:456::-;14313:6;14321;14329;14382:2;14370:9;14361:7;14357:23;14353:32;14350:52;;;14398:1;14395;14388:12;14350:52;-1:-1:-1;;14443:16:1;;14549:2;14534:18;;14528:25;14645:2;14630:18;;;14624:25;14443:16;;14528:25;;-1:-1:-1;14624:25:1;14225:456;-1:-1:-1;14225:456:1:o

Swarm Source

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