ETH Price: $3,341.07 (-1.57%)

Token

Ring of Pyro (RING)
 

Overview

Max Total Supply

100,000 RING

Holders

157

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,342.767018202 RING

Value
$0.00
0x3de564578808ed15e65756c759cd2f02928cdc13
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:
RingOfPyro

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*
https://t.me/RINGofPYRO
ringofpyro.com
https://twitter.com/ringofpyro

$RING Ring of Pyro - V2
The ⭕️ Burn: Contract X.

1% BURN OF $RING
1% AUTO LP
2% BURN $PYRO
2% BURN "CONTRACT X"
2% MKTG

"CONTRACT X" to be variable to be called at anytime,
subject to community votes,
we burn the token we want and/or subject to fees.
*/

// SPDX-License-Identifier: MIT

pragma solidity >=0.7.0 <0.8.0;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

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

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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

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;
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

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

contract RingOfPyro is Context, IERC20, Ownable {
    using SafeMath for uint256;

    uint256 public _totalBurned;
    uint256 public _totalPyroBurned;
    uint256 public _totalContractXBurned;
    address public contractXaddress;
    bool private swapping = false;
    bool public burnMode = false;
    bool public pyroMode = false;
    bool public contractXMode = false;
    bool public liqMode = true;

    address payable public contractXdead = payable(0x000000000000000000000000000000000000dEaD);
    address payable public dead = payable(0x000000000000000000000000000000000000dEaD);
    address public PYRO = 0x89568569DA9C83CB35E59F92f5Df2F6CA829EEeE;
    address public migrator = 0x4f84943645c16DE8007aecAc2B33120191DD3a8d;
    address payable public mktg = payable(0x9C3543BF2d6f46bFdd3a0789628bba6a2B5DA7de);
    address payable public RING = payable(0x858Ff8811Bf1355047f817D09f3e0D800E7054aa);

    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;

    address[] private _excluded;  
    bool public tradingLive = false;
   
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 100000 * 1e9;

    string private _name = "Ring of Pyro";
    string private _symbol = "RING";
    uint8 private _decimals = 9;

    uint256 public j_burnFee = 0; 
    uint256 public _taxes = 8;
    uint256 public j_jeetTax;
    uint256 public jeetBuy = 0;
    uint256 public jeetSell = 0;

    uint256 private _previousBurnFee = j_burnFee;
    uint256 private _previousTaxes = _taxes;
    uint256 private j_previousJeetTax = j_jeetTax;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    
    uint256 public j_maxtxn;
    uint256 public _maxWalletAmount;
    uint256 public swapAmount = 70 * 1e9;

    uint256 liqDivisor = 8;  
    uint256 pyroDivisor = 4; 
    uint256 contractXDivisor = 4; 
    
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        _tOwned[address(this)] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[RING] = true;
        _isExcludedFromFee[mktg] = true;
        _isExcludedFromFee[dead] = true;
        _isExcludedFromFee[migrator] = true;
        _isExcludedFromFee[address(this)] = true;
        emit Transfer(address(0), address(this), _tTotal);
    }

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

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

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

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

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

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

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

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

    function totalBurned() public view returns (uint256) {
        return _totalBurned;
    }

    function burning(address _sender, uint tokensToBurn) private {  
        require( tokensToBurn <= balanceOf(_sender));
        _tOwned[_sender] = _tOwned[_sender].sub(tokensToBurn);
        _tTotal = _tTotal.sub(tokensToBurn);
        _totalBurned = _totalBurned.add(tokensToBurn);
        emit Transfer(_sender, address(0), tokensToBurn);
    }     
    
    function excludeFromFee(address account) external {
        require(_msgSender() == RING);
        _isExcludedFromFee[account] = true;
    }
    
    function includeInFee(address account) external {
        require(_msgSender() == RING);
        _isExcludedFromFee[account] = false;
    }
       
    function setMaxTxAmount(uint256 maxTxAmount) external {
        require(_msgSender() == RING);
        j_maxtxn = maxTxAmount * 1e9;
    }

    function setMaxWallet(uint256 maxWallet) external {
        require(_msgSender() == RING);
        _maxWalletAmount = maxWallet * 1e9;
    }
    
    function setSwapThresholdAmount(uint256 SwapThresholdAmount) external {
        require(_msgSender() == RING);
        swapAmount = SwapThresholdAmount * 1e9;
    }
    
    function claimETH (address walletaddress) external {
        require(_msgSender() == RING);
        payable(walletaddress).transfer(address(this).balance);
    }
    
    function clearStuckBalance (address payable walletaddress) external {
        require(_msgSender() == RING);
        walletaddress.transfer(address(this).balance);
    }
    
    function blacklist (address _address) external {
        require(_msgSender() == RING);
        bots[_address] = true;
    }
    
    function removeFromBlacklist (address _address) external {
        require(_msgSender() == RING);
        bots[_address] = false;
    }
    
    function getIsBlacklistedStatus (address _address) external view returns (bool) {
        return bots[_address];
    }
    
    function allowTrades() external onlyOwner {
        require(!tradingLive,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _approve(address(this), address(uniswapV2Router), _tTotal);

        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,address(RING),block.timestamp);
        _maxWalletAmount = 2000 * 1e9; //2%
        j_maxtxn = 2000 * 1e9; //2% 

        tradingLive = true;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        contractXaddress = (0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE);
    }

    function setSwapAndLiquifyEnabled (bool _enabled) external {
        require(_msgSender() == RING);
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }
    
     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}
    
    function removeAllFee() private {
        if(j_burnFee == 0 && _taxes == 0) return;
        
        _previousBurnFee = j_burnFee;
        _previousTaxes = _taxes;
        
        j_burnFee = 0;
        _taxes = 0;
    }
    
    function restoreAllFee() private {
        j_burnFee = _previousBurnFee;
        _taxes = _previousTaxes;
    }
    
    function isExcludedFromFee (address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from != owner() && to != owner() && from != address(this) && to != address(this)) {
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ((!_isExcludedFromFee[from] || !_isExcludedFromFee[to]))) {
                require(balanceOf(to).add(amount) <= _maxWalletAmount, "You are being greedy. Exceeding Max Wallet.");
                require(amount <= j_maxtxn, "Slow down buddy...there is a max transaction");
            }
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && !bots[to] && !bots[from]) {
                j_burnFee;
                _taxes;
                j_jeetTax = jeetBuy;
            }
                
            if (to == uniswapV2Pair && from != address(uniswapV2Router) && !bots[to] && !bots[from]) {
                j_burnFee;
                _taxes;
                j_jeetTax = jeetSell;
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));        
        if(contractTokenBalance >= j_maxtxn){
            contractTokenBalance = j_maxtxn;
        }
        
        bool overMinTokenBalance = contractTokenBalance >= swapAmount;
        if (overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled) {
            contractTokenBalance = swapAmount;
            swapAndLiquify(contractTokenBalance);
        }

        bool takeFee = true;        
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            takeFee = false;
        }
        
        _transferAgain(from,to,amount,takeFee);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 tokensForLiq = (contractTokenBalance.div(liqDivisor));
        uint256 restOfTokens = (contractTokenBalance.sub(tokensForLiq));
        uint256 tokensForPyro = (contractTokenBalance.div(pyroDivisor));
        uint256 tokensForContractX = (contractTokenBalance.div(contractXDivisor));

        if (pyroMode && tokensForPyro > 0) {
            exchangeForPyro(tokensForPyro);
        }

        if (contractXMode && tokensForContractX > 0) {
            exchangeForContractX(tokensForContractX);
        }

        uint256 half = tokensForLiq.div(2);
        uint256 otherHalf = tokensForLiq.sub(half);
        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(half);
        uint256 newBalance = address(this).balance.sub(initialETHBalance);
        if (liqMode) {
            addLiquidity(otherHalf, newBalance);
        }

        uint256 nextBalance = address(this).balance;
        swapTokensForEth(restOfTokens);
        uint256 newestBalance = address(this).balance.sub(nextBalance);
        
        sendETHToFee(newestBalance);   
        
        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

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

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

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

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

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            RING,
            block.timestamp
        );
    }       
        
    function _transferAgain(address sender, address recipient, uint256 amount, bool takeFee) private {
        require(!bots[sender] && !bots[recipient]);
        if(!tradingLive){
            require(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient], "Trading is not active yet.");
        } 

        if (!takeFee) { 
                removeAllFee();
        }
        
        uint256 tokensToBurn = amount.mul(j_burnFee).div(100);
        uint256 totalTaxTokens = amount.mul(_taxes.add(j_jeetTax)).div(100);

        uint256 tokensToTransfer = amount.sub(totalTaxTokens.add(tokensToBurn));

        uint256 amountPreBurn = amount.sub(tokensToBurn);
        if (burnMode) {
        burning(sender, tokensToBurn);
        }
        
        _tOwned[sender] = _tOwned[sender].sub(amountPreBurn);
        _tOwned[recipient] = _tOwned[recipient].add(tokensToTransfer);
        _tOwned[address(this)] = _tOwned[address(this)].add(totalTaxTokens);
        
        if(burnMode && sender != uniswapV2Pair && sender != address(this) && sender != address(uniswapV2Router) && (recipient == address(uniswapV2Router) || recipient == uniswapV2Pair)) {
            burning(uniswapV2Pair, tokensToBurn);
        }
        
        emit Transfer(sender, recipient, tokensToTransfer);
        if (totalTaxTokens > 0) {
            emit Transfer(sender, address(this), totalTaxTokens);
        }
        restoreAllFee();
    }

    //this is the last step down from the jeet taxes going to normal
    function beginJeetOne() external {
        require(_msgSender() == RING);
        jeetSell = 8;
    }

    //the first step down from jeet taxes
    function beginJeetTwo() external {
        require(_msgSender() == RING);
        contractXMode = true;
        pyroMode = true;
        burnMode = true;
        j_burnFee = 1;
        _taxes = 7;
        jeetSell = 0;
    }

    function exchangeForPyro(uint256 amount) private {
    	if (amount > 0) {
    	    swapRingForPyro(amount);
            _totalPyroBurned = _totalPyroBurned.add(amount);
	    }
    }

    function exchangeForContractX(uint256 amount) private {
    	if (amount > 0) {
    	    swapRingForContractX(amount);
            _totalContractXBurned = _totalContractXBurned.add(amount);
	    }
    }

    function enablePYRO(bool enabled) external {
        pyroMode = enabled;
        require(_msgSender() == RING);
    }

    function enableContractX(bool enabled) external {
        contractXMode = enabled;
        require(_msgSender() == RING);
    }

    function enableBurnMode(bool enabled) external {
        require(_msgSender() == RING);
        burnMode = enabled;
    }
    
    function enableLiqMode(bool enabled) external {
        require(_msgSender() == RING);
        liqMode = enabled;
    }

    function manualSwap() external {
        require(_msgSender() == RING);
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance > 0) {
            swapTokensForEth(contractBalance);
        }
    }

    function manualSend() external {
        require(_msgSender() == RING);
        uint256 contractETHBalance = address(this).balance;
        if (contractETHBalance > 0) {
            sendETHToFee(contractETHBalance);
        }
    }

    function sendETHToFee(uint256 amount) private {
        uint256 transferAmt = amount.div(2);
        RING.transfer(transferAmt);
        mktg.transfer(amount.sub(transferAmt));
    }   

    function swapRingForContractX(uint256 tokenAmount) private {
        address[] memory path = new address[](3);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        path[2] = address(contractXaddress);

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

        uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of Tokens
            path,
            contractXdead, // Burn address
            block.timestamp
        );
    }

    function swapRingForPyro(uint256 tokenAmount) private {
        address[] memory path = new address[](3);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        path[2] = address(PYRO);

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

        uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of Tokens
            path,
            dead, // Burn address
            block.timestamp
        );
    }

    function setContractXaddress(address payable walletAddress, address payable walletDeadAddress) external {
        require(_msgSender() == RING);
        contractXaddress = walletAddress;
        contractXdead = walletDeadAddress;
    }
    
    function setPyroAddress(address payable walletAddress, address payable walletDeadAddress) external {
        require(_msgSender() == RING);
        PYRO = walletAddress;
        dead = walletDeadAddress;
    }

    function setMktg(address payable _address) external {
        require(_msgSender() == RING || _msgSender() == mktg);
        mktg = _address;
    }

    function changeContractX(address payable j_dead, address addressOfContractX) external {
        require(_msgSender() == RING);
        contractXaddress = addressOfContractX;
        contractXdead = j_dead;
    }
    
    function changePYRO(address payable j_dead, address PYROaddress) external {
        require(_msgSender() == RING);
        PYRO = PYROaddress;
        dead = j_dead;
    }

    function changeTax(uint256 burn, uint256 jeetbuy, uint256 jeetsell, uint256 taxes, uint256 _liqDivisor, uint256 _pyroDivide, uint256 _contractXDivide) external {
        require(_msgSender() == RING);
        j_burnFee = burn;
        jeetBuy = jeetbuy;
        jeetSell = jeetsell;
        _taxes = taxes;
        liqDivisor = _liqDivisor;
        pyroDivisor = _pyroDivide;
        contractXDivisor = _contractXDivide;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"PYRO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RING","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalContractXBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalPyroBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allowTrades","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beginJeetOne","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"beginJeetTwo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"j_dead","type":"address"},{"internalType":"address","name":"addressOfContractX","type":"address"}],"name":"changeContractX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"j_dead","type":"address"},{"internalType":"address","name":"PYROaddress","type":"address"}],"name":"changePYRO","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"jeetbuy","type":"uint256"},{"internalType":"uint256","name":"jeetsell","type":"uint256"},{"internalType":"uint256","name":"taxes","type":"uint256"},{"internalType":"uint256","name":"_liqDivisor","type":"uint256"},{"internalType":"uint256","name":"_pyroDivide","type":"uint256"},{"internalType":"uint256","name":"_contractXDivide","type":"uint256"}],"name":"changeTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"walletaddress","type":"address"}],"name":"claimETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"walletaddress","type":"address"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractXMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractXaddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractXdead","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dead","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"enableBurnMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"enableContractX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"enableLiqMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"enablePYRO","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getIsBlacklistedStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"j_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"j_jeetTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"j_maxtxn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"jeetBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"jeetSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"migrator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mktg","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pyroMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"walletAddress","type":"address"},{"internalType":"address payable","name":"walletDeadAddress","type":"address"}],"name":"setContractXaddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"}],"name":"setMktg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"walletAddress","type":"address"},{"internalType":"address payable","name":"walletDeadAddress","type":"address"}],"name":"setPyroAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"SwapThresholdAmount","type":"uint256"}],"name":"setSwapThresholdAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingLive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6005805464ffffffffff60a01b1916600160c01b179055600680546001600160a01b031990811661dead9081179092556007805482169092179091556008805482167389568569da9c83cb35e59f92f5df2f6ca829eeee179055600980548216734f84943645c16de8007aecac2b33120191dd3a8d179055600a80548216739c3543bf2d6f46bfdd3a0789628bba6a2b5da7de179055600b805490911673858ff8811bf1355047f817d09f3e0d800e7054aa1790556011805460ff19169055655af3107a400060125560c0604052600c60808190526b52696e67206f66205079726f60a01b60a0908152620000f89160139190620002ef565b506040805180820190915260048082526352494e4760e01b60209092019182526200012691601491620002ef565b506015805460ff1916600917905560006016819055600860178190556019829055601a829055601b91909155601c819055601854601d55601f805460ff60a81b1916600160a81b17905564104c533c00602255602355600460248190556025553480156200019357600080fd5b506000620001a0620002dc565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601254306000908152600c6020526040812091909155600190600e9062000210620002e0565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600b5482168152600e8452828120805486166001908117909155600a5483168252838220805487168217905560075483168252838220805487168217905560095490921681528281208054861683179055308082528382208054909616909217909455601254825190815291519093927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef928290030190a36200039b565b3390565b6000546001600160a01b031690565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262000327576000855562000372565b82601f106200034257805160ff191683800117855562000372565b8280016001018555821562000372579182015b828111156200037257825182559160200191906001019062000355565b506200038092915062000384565b5090565b5b8082111562000380576000815560010162000385565b61318980620003ab6000396000f3fe6080604052600436106103dd5760003560e01c8063764d72bf116101fd578063b8157fcf11610118578063e7dfb411116100ab578063f79cb4eb1161007a578063f79cb4eb14610cab578063f9f92be414610cf9578063fc67364114610d2c578063fd01bd4c14610d58578063ff37656e14610d6d576103e4565b8063e7dfb41114610c24578063ea2f0b3714610c39578063ec28438a14610c6c578063f429389014610c96576103e4565b8063d89135cd116100e7578063d89135cd14610baa578063dd62ed3e14610bbf578063e2c3e4b814610bfa578063e674dfd714610c0f576103e4565b8063b8157fcf14610b02578063c03d724214610b17578063c49b9a8014610b43578063c97f269c14610b6f576103e4565b806392700d4c11610190578063a457c2d71161015f578063a457c2d714610a66578063a8c4a13f14610a9f578063a9059cbb14610ab4578063aa9bae8814610aed576103e4565b806392700d4c146109ec57806395d89b4114610a01578063992ce15714610a165780639f6dcf3314610a2b576103e4565b806381486bf1116101cc57806381486bf1146109985780638a545232146109ad5780638da5cb5b146109c25780638ea78153146109d7576103e4565b8063764d72bf1461093b57806378de776f1461096e5780637cd07e47146109835780637e66c0b91461093b576103e4565b806339509351116102f85780634f69a4fe1161028b57806358e1320c1161025a57806358e1320c1461089f5780635d0044ca146108b45780636c0a24eb146108de57806370a08231146108f357806371d8a1d114610926576103e4565b80634f69a4fe146107f857806351bc3c85146108245780635342acb414610839578063537df3b61461086c576103e4565b806349bd5a5e116102c757806349bd5a5e1461077e5780634a74bb02146107935780634b5de117146107a85780634de08a21146107bd576103e4565b806339509351146106e85780633987764f14610721578063437823ec1461073657806346cb430414610769576103e4565b80631884ed451161037057806329e04b4a1161033f57806329e04b4a146106695780632e8fa82114610693578063313ce567146106a857806336cf7c87146106d3576103e4565b80631884ed45146105b2578063233296f0146105e557806323b872dd146105fa578063243aa6f41461063d576103e4565b806311704f52116103ac57806311704f521461051a578063143c72ef1461052f5780631694505e1461056c57806318160ddd1461059d576103e4565b806306fdde03146103e9578063084e4f8a14610473578063095ea7b3146104ba5780630a920f20146104f3576103e4565b366103e457005b600080fd5b3480156103f557600080fd5b506103fe610d82565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610438578181015183820152602001610420565b50505050905090810190601f1680156104655780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561047f57600080fd5b506104a66004803603602081101561049657600080fd5b50356001600160a01b0316610e18565b604080519115158252519081900360200190f35b3480156104c657600080fd5b506104a6600480360360408110156104dd57600080fd5b506001600160a01b038135169060200135610e36565b3480156104ff57600080fd5b50610508610e54565b60408051918252519081900360200190f35b34801561052657600080fd5b506104a6610e5a565b34801561053b57600080fd5b5061056a6004803603604081101561055257600080fd5b506001600160a01b0381358116916020013516610e63565b005b34801561057857600080fd5b50610581610eb8565b604080516001600160a01b039092168252519081900360200190f35b3480156105a957600080fd5b50610508610ec7565b3480156105be57600080fd5b5061056a600480360360208110156105d557600080fd5b50356001600160a01b0316610ecd565b3480156105f157600080fd5b50610508610f3b565b34801561060657600080fd5b506104a66004803603606081101561061d57600080fd5b506001600160a01b03813581169160208101359091169060400135610f41565b34801561064957600080fd5b5061056a6004803603602081101561066057600080fd5b50351515610fc8565b34801561067557600080fd5b5061056a6004803603602081101561068c57600080fd5b5035611009565b34801561069f57600080fd5b5061050861103b565b3480156106b457600080fd5b506106bd611041565b6040805160ff9092168252519081900360200190f35b3480156106df57600080fd5b5061058161104a565b3480156106f457600080fd5b506104a66004803603604081101561070b57600080fd5b506001600160a01b038135169060200135611059565b34801561072d57600080fd5b506104a66110a7565b34801561074257600080fd5b5061056a6004803603602081101561075957600080fd5b50356001600160a01b03166110b7565b34801561077557600080fd5b50610508611102565b34801561078a57600080fd5b50610581611108565b34801561079f57600080fd5b506104a6611117565b3480156107b457600080fd5b506104a6611127565b3480156107c957600080fd5b5061056a600480360360408110156107e057600080fd5b506001600160a01b0381358116916020013516611137565b34801561080457600080fd5b5061056a6004803603602081101561081b57600080fd5b5035151561118f565b34801561083057600080fd5b5061056a6111d4565b34801561084557600080fd5b506104a66004803603602081101561085c57600080fd5b50356001600160a01b0316611217565b34801561087857600080fd5b5061056a6004803603602081101561088f57600080fd5b50356001600160a01b0316611235565b3480156108ab57600080fd5b5061050861127d565b3480156108c057600080fd5b5061056a600480360360208110156108d757600080fd5b5035611283565b3480156108ea57600080fd5b506105086112b5565b3480156108ff57600080fd5b506105086004803603602081101561091657600080fd5b50356001600160a01b03166112bb565b34801561093257600080fd5b506105086112d6565b34801561094757600080fd5b5061056a6004803603602081101561095e57600080fd5b50356001600160a01b03166112dc565b34801561097a57600080fd5b506104a661133c565b34801561098f57600080fd5b5061058161134c565b3480156109a457600080fd5b5061050861135b565b3480156109b957600080fd5b5061056a611361565b3480156109ce57600080fd5b506105816113cb565b3480156109e357600080fd5b506104a66113da565b3480156109f857600080fd5b506105086113ea565b348015610a0d57600080fd5b506103fe6113f0565b348015610a2257600080fd5b50610508611451565b348015610a3757600080fd5b5061056a60048036036040811015610a4e57600080fd5b506001600160a01b0381358116916020013516611457565b348015610a7257600080fd5b506104a660048036036040811015610a8957600080fd5b506001600160a01b0381351690602001356114af565b348015610aab57600080fd5b50610581611517565b348015610ac057600080fd5b506104a660048036036040811015610ad757600080fd5b506001600160a01b038135169060200135611526565b348015610af957600080fd5b5061056a61153a565b348015610b0e57600080fd5b5061056a611568565b348015610b2357600080fd5b5061056a60048036036020811015610b3a57600080fd5b5035151561195a565b348015610b4f57600080fd5b5061056a60048036036020811015610b6657600080fd5b5035151561199f565b348015610b7b57600080fd5b5061056a60048036036040811015610b9257600080fd5b506001600160a01b0381358116916020013516611a19565b348015610bb657600080fd5b50610508611a6e565b348015610bcb57600080fd5b5061050860048036036040811015610be257600080fd5b506001600160a01b0381358116916020013516611a74565b348015610c0657600080fd5b50610581611a9f565b348015610c1b57600080fd5b50610581611aae565b348015610c3057600080fd5b50610581611abd565b348015610c4557600080fd5b5061056a60048036036020811015610c5c57600080fd5b50356001600160a01b0316611acc565b348015610c7857600080fd5b5061056a60048036036020811015610c8f57600080fd5b5035611b14565b348015610ca257600080fd5b5061056a611b46565b348015610cb757600080fd5b5061056a600480360360e0811015610cce57600080fd5b5080359060208101359060408101359060608101359060808101359060a08101359060c00135611b7d565b348015610d0557600080fd5b5061056a60048036036020811015610d1c57600080fd5b50356001600160a01b0316611bc4565b348015610d3857600080fd5b5061056a60048036036020811015610d4f57600080fd5b50351515611c0f565b348015610d6457600080fd5b50610508611c3a565b348015610d7957600080fd5b50610581611c40565b60138054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e0e5780601f10610de357610100808354040283529160200191610e0e565b820191906000526020600020905b815481529060010190602001808311610df157829003601f168201915b5050505050905090565b6001600160a01b03166000908152600f602052604090205460ff1690565b6000610e4a610e43611c4f565b8484611c53565b5060015b92915050565b60175481565b60115460ff1681565b600b546001600160a01b0316610e77611c4f565b6001600160a01b031614610e8a57600080fd5b600880546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b601e546001600160a01b031681565b60125490565b600b546001600160a01b0316610ee1611c4f565b6001600160a01b03161480610f105750600a546001600160a01b0316610f05611c4f565b6001600160a01b0316145b610f1957600080fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60205481565b6000610f4e848484611d3f565b610fbe84610f5a611c4f565b610fb985604051806060016040528060288152602001613069602891396001600160a01b038a166000908152600d6020526040812090610f98611c4f565b6001600160a01b031681526020810191909152604001600020549190612161565b611c53565b5060019392505050565b6005805460ff60b81b1916600160b81b83151502179055600b546001600160a01b0316610ff3611c4f565b6001600160a01b03161461100657600080fd5b50565b600b546001600160a01b031661101d611c4f565b6001600160a01b03161461103057600080fd5b633b9aca0002602255565b60225481565b60155460ff1690565b6007546001600160a01b031681565b6000610e4a611066611c4f565b84610fb985600d6000611077611c4f565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906121f8565b600554600160b01b900460ff1681565b600b546001600160a01b03166110cb611c4f565b6001600160a01b0316146110de57600080fd5b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b601a5481565b601f546001600160a01b031681565b601f54600160a81b900460ff1681565b600554600160c01b900460ff1681565b600b546001600160a01b031661114b611c4f565b6001600160a01b03161461115e57600080fd5b600880546001600160a01b039283166001600160a01b03199182161790915560078054939092169216919091179055565b600b546001600160a01b03166111a3611c4f565b6001600160a01b0316146111b657600080fd5b60058054911515600160a81b0260ff60a81b19909216919091179055565b600b546001600160a01b03166111e8611c4f565b6001600160a01b0316146111fb57600080fd5b6000611206306112bb565b905080156110065761100681612259565b6001600160a01b03166000908152600e602052604090205460ff1690565b600b546001600160a01b0316611249611c4f565b6001600160a01b03161461125c57600080fd5b6001600160a01b03166000908152600f60205260409020805460ff19169055565b60185481565b600b546001600160a01b0316611297611c4f565b6001600160a01b0316146112aa57600080fd5b633b9aca0002602155565b60215481565b6001600160a01b03166000908152600c602052604090205490565b60165481565b600b546001600160a01b03166112f0611c4f565b6001600160a01b03161461130357600080fd5b6040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015611338573d6000803e3d6000fd5b5050565b600554600160b81b900460ff1681565b6009546001600160a01b031681565b60035481565b600b546001600160a01b0316611375611c4f565b6001600160a01b03161461138857600080fd5b6005805460ff60a81b1960ff60b01b1960ff60b81b19909216600160b81b1791909116600160b01b1716600160a81b179055600160165560076017556000601a55565b6000546001600160a01b031690565b600554600160a81b900460ff1681565b60195481565b60148054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e0e5780601f10610de357610100808354040283529160200191610e0e565b60045481565b600b546001600160a01b031661146b611c4f565b6001600160a01b03161461147e57600080fd5b600580546001600160a01b039283166001600160a01b03199182161790915560068054939092169216919091179055565b6000610e4a6114bc611c4f565b84610fb98560405180606001604052806025815260200161312f60259139600d60006114e6611c4f565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612161565b6005546001600160a01b031681565b6000610e4a611533611c4f565b8484611d3f565b600b546001600160a01b031661154e611c4f565b6001600160a01b03161461156157600080fd5b6008601a55565b611570611c4f565b6000546001600160a01b039081169116146115d2576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60115460ff161561162a576040805162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015290519081900360640190fd5b601e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a0155916004808301926020929190829003018186803b15801561168a57600080fd5b505afa15801561169e573d6000803e3d6000fd5b505050506040513d60208110156116b457600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b15801561170457600080fd5b505afa158015611718573d6000803e3d6000fd5b505050506040513d602081101561172e57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b15801561178057600080fd5b505af1158015611794573d6000803e3d6000fd5b505050506040513d60208110156117aa57600080fd5b5051601f80546001600160a01b0319166001600160a01b03928316179055601e546012546117db9230921690611c53565b601e546001600160a01b031663f305d71947306117f7816112bb565b600b54604080516001600160e01b031960e088901b1681526001600160a01b03948516600482015260248101939093526000604484018190526064840152921660848201524260a4820152905160c480830192606092919082900301818588803b15801561186457600080fd5b505af1158015611878573d6000803e3d6000fd5b50505050506040513d606081101561188f57600080fd5b50506501d1a94a2000602181905560209081556011805460ff19166001179055601f54601e546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169263095ea7b392604480820193918290030181600087803b15801561190557600080fd5b505af1158015611919573d6000803e3d6000fd5b505050506040513d602081101561192f57600080fd5b5050600580546001600160a01b0319167395ad61b0a150d79219dcf64e1e6cc01f0b64c4ce17905550565b600b546001600160a01b031661196e611c4f565b6001600160a01b03161461198157600080fd5b60058054911515600160c01b0260ff60c01b19909216919091179055565b600b546001600160a01b03166119b3611c4f565b6001600160a01b0316146119c657600080fd5b601f8054821515600160a81b810260ff60a81b199092169190911790915560408051918252517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599181900360200190a150565b600b546001600160a01b0316611a2d611c4f565b6001600160a01b031614611a4057600080fd5b600580546001600160a01b039384166001600160a01b03199182161790915560068054929093169116179055565b60025490565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b600a546001600160a01b031681565b6008546001600160a01b031681565b6006546001600160a01b031681565b600b546001600160a01b0316611ae0611c4f565b6001600160a01b031614611af357600080fd5b6001600160a01b03166000908152600e60205260409020805460ff19169055565b600b546001600160a01b0316611b28611c4f565b6001600160a01b031614611b3b57600080fd5b633b9aca0002602055565b600b546001600160a01b0316611b5a611c4f565b6001600160a01b031614611b6d57600080fd5b4780156110065761100681612400565b600b546001600160a01b0316611b91611c4f565b6001600160a01b031614611ba457600080fd5b601696909655601994909455601a92909255601755602355602455602555565b600b546001600160a01b0316611bd8611c4f565b6001600160a01b031614611beb57600080fd5b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b6005805460ff60b01b1916600160b01b83151502179055600b546001600160a01b0316610ff3611c4f565b60025481565b600b546001600160a01b031681565b3390565b6001600160a01b038316611c985760405162461bcd60e51b81526004018080602001828103825260248152602001806130df6024913960400191505060405180910390fd5b6001600160a01b038216611cdd5760405162461bcd60e51b8152600401808060200182810382526022815260200180612ffb6022913960400191505060405180910390fd5b6001600160a01b038084166000818152600d6020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611d845760405162461bcd60e51b81526004018080602001828103825260258152602001806130ba6025913960400191505060405180910390fd5b6001600160a01b038216611dc95760405162461bcd60e51b8152600401808060200182810382526023815260200180612fd86023913960400191505060405180910390fd5b60008111611e085760405162461bcd60e51b81526004018080602001828103825260298152602001806130916029913960400191505060405180910390fd5b611e106113cb565b6001600160a01b0316836001600160a01b031614158015611e4a5750611e346113cb565b6001600160a01b0316826001600160a01b031614155b8015611e5f57506001600160a01b0383163014155b8015611e7457506001600160a01b0382163014155b1561208757601f546001600160a01b038481169116148015611ea45750601e546001600160a01b03838116911614155b8015611eec57506001600160a01b0383166000908152600e602052604090205460ff161580611eec57506001600160a01b0382166000908152600e602052604090205460ff16155b15611f8557602154611f0782611f01856112bb565b906121f8565b1115611f445760405162461bcd60e51b815260040180806020018281038252602b81526020018061301d602b913960400191505060405180910390fd5b602054811115611f855760405162461bcd60e51b815260040180806020018281038252602c815260200180613103602c913960400191505060405180910390fd5b601f546001600160a01b038481169116148015611fb05750601e546001600160a01b03838116911614155b8015611fd557506001600160a01b0382166000908152600f602052604090205460ff16155b8015611ffa57506001600160a01b0383166000908152600f602052604090205460ff16155b15612006576019546018555b601f546001600160a01b0383811691161480156120315750601e546001600160a01b03848116911614155b801561205657506001600160a01b0382166000908152600f602052604090205460ff16155b801561207b57506001600160a01b0383166000908152600f602052604090205460ff16155b1561208757601a546018555b6000612092306112bb565b905060205481106120a257506020545b602254811080159081906120c05750601f54600160a01b900460ff16155b80156120da5750601f546001600160a01b03868116911614155b80156120ef5750601f54600160a81b900460ff165b156121025760225491506121028261248f565b6001600160a01b0385166000908152600e602052604090205460019060ff168061214457506001600160a01b0385166000908152600e602052604090205460ff165b1561214d575060005b61215986868684612611565b505050505050565b600081848411156121f05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156121b557818101518382015260200161219d565b50505050905090810190601f1680156121e25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015612252576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061228857fe5b6001600160a01b03928316602091820292909201810191909152601e54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156122dc57600080fd5b505afa1580156122f0573d6000803e3d6000fd5b505050506040513d602081101561230657600080fd5b505181518290600190811061231757fe5b6001600160a01b039283166020918202929092010152601e5461233d9130911684611c53565b601e5460405163791ac94760e01b8152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b838110156123c35781810151838201526020016123ab565b505050509050019650505050505050600060405180830381600087803b1580156123ec57600080fd5b505af1158015612159573d6000803e3d6000fd5b600061240d826002612967565b600b546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612448573d6000803e3d6000fd5b50600a546001600160a01b03166108fc61246284846129a9565b6040518115909202916000818181858888f1935050505015801561248a573d6000803e3d6000fd5b505050565b601f805460ff60a01b1916600160a01b1790556023546000906124b3908390612967565b905060006124c183836129a9565b905060006124da6024548561296790919063ffffffff16565b905060006124f36025548661296790919063ffffffff16565b600554909150600160b01b900460ff16801561250f5750600082115b1561251d5761251d826129eb565b600554600160b81b900460ff1680156125365750600081115b156125445761254481612a0d565b6000612551856002612967565b9050600061255f86836129a9565b90504761256b83612259565b600061257747836129a9565b600554909150600160c01b900460ff1615612596576125968382612a2f565b476125a088612259565b60006125ac47836129a9565b90506125b781612400565b604080518781526020810185905280820187905290517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15050601f805460ff60a01b19169055505050505050505050565b6001600160a01b0384166000908152600f602052604090205460ff1615801561265357506001600160a01b0383166000908152600f602052604090205460ff16155b61265c57600080fd5b60115460ff166126f6576001600160a01b0384166000908152600e602052604090205460ff16806126a557506001600160a01b0383166000908152600e602052604090205460ff165b6126f6576040805162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420616374697665207965742e000000000000604482015290519081900360640190fd5b8061270357612703612aed565b6000612725606461271f60165486612b1f90919063ffffffff16565b90612967565b9050600061274f606461271f6127486018546017546121f890919063ffffffff16565b8790612b1f565b9050600061276761276083856121f8565b86906129a9565b9050600061277586856129a9565b600554909150600160a81b900460ff1615612794576127948885612b78565b6001600160a01b0388166000908152600c60205260409020546127b790826129a9565b6001600160a01b03808a166000908152600c602052604080822093909355908916815220546127e690836121f8565b6001600160a01b0388166000908152600c602052604080822092909255308152205461281290846121f8565b306000908152600c6020526040902055600554600160a81b900460ff1680156128495750601f546001600160a01b03898116911614155b801561285e57506001600160a01b0388163014155b80156128785750601e546001600160a01b03898116911614155b80156128a85750601e546001600160a01b03888116911614806128a85750601f546001600160a01b038881169116145b156128c357601f546128c3906001600160a01b031685612b78565b866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a382156129555760408051848152905130916001600160a01b038b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35b61295d612c2e565b5050505050505050565b600061225283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c3c565b600061225283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612161565b8015611006576129fa81612ca1565b600354612a0790826121f8565b60035550565b801561100657612a1c81612e3c565b600454612a2990826121f8565b60045550565b601e54612a479030906001600160a01b031684611c53565b601e54600b546040805163f305d71960e01b81523060048201526024810186905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991849160c48082019260609290919082900301818588803b158015612abc57600080fd5b505af1158015612ad0573d6000803e3d6000fd5b50505050506040513d6060811015612ae757600080fd5b50505050565b601654158015612afd5750601754155b15612b0757612b1d565b60168054601b5560178054601c55600091829055555b565b600082612b2e57506000610e4e565b82820282848281612b3b57fe5b04146122525760405162461bcd60e51b81526004018080602001828103825260218152602001806130486021913960400191505060405180910390fd5b612b81826112bb565b811115612b8d57600080fd5b6001600160a01b0382166000908152600c6020526040902054612bb090826129a9565b6001600160a01b0383166000908152600c6020526040902055601254612bd690826129a9565b601255600254612be690826121f8565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b601b54601655601c54601755565b60008183612c8b5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156121b557818101518382015260200161219d565b506000838581612c9757fe5b0495945050505050565b60408051600380825260808201909252600091602082016060803683370190505090503081600081518110612cd257fe5b6001600160a01b03928316602091820292909201810191909152601e54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612d2657600080fd5b505afa158015612d3a573d6000803e3d6000fd5b505050506040513d6020811015612d5057600080fd5b5051815182906001908110612d6157fe5b6001600160a01b039283166020918202929092010152600854825191169082906002908110612d8c57fe5b6001600160a01b039283166020918202929092010152601e54612db29130911684611c53565b601e54600754604051635c11d79560e01b8152600481018581526000602483018190526001600160a01b0393841660648401819052426084850181905260a060448601908152885160a487015288519690971696635c11d795968a9694958a9590929160c490910190602087810191028083838b83156123c35781810151838201526020016123ab565b60408051600380825260808201909252600091602082016060803683370190505090503081600081518110612e6d57fe5b6001600160a01b03928316602091820292909201810191909152601e54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612ec157600080fd5b505afa158015612ed5573d6000803e3d6000fd5b505050506040513d6020811015612eeb57600080fd5b5051815182906001908110612efc57fe5b6001600160a01b039283166020918202929092010152600554825191169082906002908110612f2757fe5b6001600160a01b039283166020918202929092010152601e54612f4d9130911684611c53565b601e54600654604051635c11d79560e01b8152600481018581526000602483018190526001600160a01b0393841660648401819052426084850181905260a060448601908152885160a487015288519690971696635c11d795968a9694958a9590929160c490910190602087810191028083838b83156123c35781810151838201526020016123ab56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373596f7520617265206265696e67206772656564792e20457863656564696e67204d61782057616c6c65742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373536c6f7720646f776e2062756464792e2e2e74686572652069732061206d6178207472616e73616374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d469a163e81932fab18a7c5637672f3aebad7cee4336c88c4654acb099c89e0664736f6c63430007060033

Deployed Bytecode

0x6080604052600436106103dd5760003560e01c8063764d72bf116101fd578063b8157fcf11610118578063e7dfb411116100ab578063f79cb4eb1161007a578063f79cb4eb14610cab578063f9f92be414610cf9578063fc67364114610d2c578063fd01bd4c14610d58578063ff37656e14610d6d576103e4565b8063e7dfb41114610c24578063ea2f0b3714610c39578063ec28438a14610c6c578063f429389014610c96576103e4565b8063d89135cd116100e7578063d89135cd14610baa578063dd62ed3e14610bbf578063e2c3e4b814610bfa578063e674dfd714610c0f576103e4565b8063b8157fcf14610b02578063c03d724214610b17578063c49b9a8014610b43578063c97f269c14610b6f576103e4565b806392700d4c11610190578063a457c2d71161015f578063a457c2d714610a66578063a8c4a13f14610a9f578063a9059cbb14610ab4578063aa9bae8814610aed576103e4565b806392700d4c146109ec57806395d89b4114610a01578063992ce15714610a165780639f6dcf3314610a2b576103e4565b806381486bf1116101cc57806381486bf1146109985780638a545232146109ad5780638da5cb5b146109c25780638ea78153146109d7576103e4565b8063764d72bf1461093b57806378de776f1461096e5780637cd07e47146109835780637e66c0b91461093b576103e4565b806339509351116102f85780634f69a4fe1161028b57806358e1320c1161025a57806358e1320c1461089f5780635d0044ca146108b45780636c0a24eb146108de57806370a08231146108f357806371d8a1d114610926576103e4565b80634f69a4fe146107f857806351bc3c85146108245780635342acb414610839578063537df3b61461086c576103e4565b806349bd5a5e116102c757806349bd5a5e1461077e5780634a74bb02146107935780634b5de117146107a85780634de08a21146107bd576103e4565b806339509351146106e85780633987764f14610721578063437823ec1461073657806346cb430414610769576103e4565b80631884ed451161037057806329e04b4a1161033f57806329e04b4a146106695780632e8fa82114610693578063313ce567146106a857806336cf7c87146106d3576103e4565b80631884ed45146105b2578063233296f0146105e557806323b872dd146105fa578063243aa6f41461063d576103e4565b806311704f52116103ac57806311704f521461051a578063143c72ef1461052f5780631694505e1461056c57806318160ddd1461059d576103e4565b806306fdde03146103e9578063084e4f8a14610473578063095ea7b3146104ba5780630a920f20146104f3576103e4565b366103e457005b600080fd5b3480156103f557600080fd5b506103fe610d82565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610438578181015183820152602001610420565b50505050905090810190601f1680156104655780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561047f57600080fd5b506104a66004803603602081101561049657600080fd5b50356001600160a01b0316610e18565b604080519115158252519081900360200190f35b3480156104c657600080fd5b506104a6600480360360408110156104dd57600080fd5b506001600160a01b038135169060200135610e36565b3480156104ff57600080fd5b50610508610e54565b60408051918252519081900360200190f35b34801561052657600080fd5b506104a6610e5a565b34801561053b57600080fd5b5061056a6004803603604081101561055257600080fd5b506001600160a01b0381358116916020013516610e63565b005b34801561057857600080fd5b50610581610eb8565b604080516001600160a01b039092168252519081900360200190f35b3480156105a957600080fd5b50610508610ec7565b3480156105be57600080fd5b5061056a600480360360208110156105d557600080fd5b50356001600160a01b0316610ecd565b3480156105f157600080fd5b50610508610f3b565b34801561060657600080fd5b506104a66004803603606081101561061d57600080fd5b506001600160a01b03813581169160208101359091169060400135610f41565b34801561064957600080fd5b5061056a6004803603602081101561066057600080fd5b50351515610fc8565b34801561067557600080fd5b5061056a6004803603602081101561068c57600080fd5b5035611009565b34801561069f57600080fd5b5061050861103b565b3480156106b457600080fd5b506106bd611041565b6040805160ff9092168252519081900360200190f35b3480156106df57600080fd5b5061058161104a565b3480156106f457600080fd5b506104a66004803603604081101561070b57600080fd5b506001600160a01b038135169060200135611059565b34801561072d57600080fd5b506104a66110a7565b34801561074257600080fd5b5061056a6004803603602081101561075957600080fd5b50356001600160a01b03166110b7565b34801561077557600080fd5b50610508611102565b34801561078a57600080fd5b50610581611108565b34801561079f57600080fd5b506104a6611117565b3480156107b457600080fd5b506104a6611127565b3480156107c957600080fd5b5061056a600480360360408110156107e057600080fd5b506001600160a01b0381358116916020013516611137565b34801561080457600080fd5b5061056a6004803603602081101561081b57600080fd5b5035151561118f565b34801561083057600080fd5b5061056a6111d4565b34801561084557600080fd5b506104a66004803603602081101561085c57600080fd5b50356001600160a01b0316611217565b34801561087857600080fd5b5061056a6004803603602081101561088f57600080fd5b50356001600160a01b0316611235565b3480156108ab57600080fd5b5061050861127d565b3480156108c057600080fd5b5061056a600480360360208110156108d757600080fd5b5035611283565b3480156108ea57600080fd5b506105086112b5565b3480156108ff57600080fd5b506105086004803603602081101561091657600080fd5b50356001600160a01b03166112bb565b34801561093257600080fd5b506105086112d6565b34801561094757600080fd5b5061056a6004803603602081101561095e57600080fd5b50356001600160a01b03166112dc565b34801561097a57600080fd5b506104a661133c565b34801561098f57600080fd5b5061058161134c565b3480156109a457600080fd5b5061050861135b565b3480156109b957600080fd5b5061056a611361565b3480156109ce57600080fd5b506105816113cb565b3480156109e357600080fd5b506104a66113da565b3480156109f857600080fd5b506105086113ea565b348015610a0d57600080fd5b506103fe6113f0565b348015610a2257600080fd5b50610508611451565b348015610a3757600080fd5b5061056a60048036036040811015610a4e57600080fd5b506001600160a01b0381358116916020013516611457565b348015610a7257600080fd5b506104a660048036036040811015610a8957600080fd5b506001600160a01b0381351690602001356114af565b348015610aab57600080fd5b50610581611517565b348015610ac057600080fd5b506104a660048036036040811015610ad757600080fd5b506001600160a01b038135169060200135611526565b348015610af957600080fd5b5061056a61153a565b348015610b0e57600080fd5b5061056a611568565b348015610b2357600080fd5b5061056a60048036036020811015610b3a57600080fd5b5035151561195a565b348015610b4f57600080fd5b5061056a60048036036020811015610b6657600080fd5b5035151561199f565b348015610b7b57600080fd5b5061056a60048036036040811015610b9257600080fd5b506001600160a01b0381358116916020013516611a19565b348015610bb657600080fd5b50610508611a6e565b348015610bcb57600080fd5b5061050860048036036040811015610be257600080fd5b506001600160a01b0381358116916020013516611a74565b348015610c0657600080fd5b50610581611a9f565b348015610c1b57600080fd5b50610581611aae565b348015610c3057600080fd5b50610581611abd565b348015610c4557600080fd5b5061056a60048036036020811015610c5c57600080fd5b50356001600160a01b0316611acc565b348015610c7857600080fd5b5061056a60048036036020811015610c8f57600080fd5b5035611b14565b348015610ca257600080fd5b5061056a611b46565b348015610cb757600080fd5b5061056a600480360360e0811015610cce57600080fd5b5080359060208101359060408101359060608101359060808101359060a08101359060c00135611b7d565b348015610d0557600080fd5b5061056a60048036036020811015610d1c57600080fd5b50356001600160a01b0316611bc4565b348015610d3857600080fd5b5061056a60048036036020811015610d4f57600080fd5b50351515611c0f565b348015610d6457600080fd5b50610508611c3a565b348015610d7957600080fd5b50610581611c40565b60138054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e0e5780601f10610de357610100808354040283529160200191610e0e565b820191906000526020600020905b815481529060010190602001808311610df157829003601f168201915b5050505050905090565b6001600160a01b03166000908152600f602052604090205460ff1690565b6000610e4a610e43611c4f565b8484611c53565b5060015b92915050565b60175481565b60115460ff1681565b600b546001600160a01b0316610e77611c4f565b6001600160a01b031614610e8a57600080fd5b600880546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b601e546001600160a01b031681565b60125490565b600b546001600160a01b0316610ee1611c4f565b6001600160a01b03161480610f105750600a546001600160a01b0316610f05611c4f565b6001600160a01b0316145b610f1957600080fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60205481565b6000610f4e848484611d3f565b610fbe84610f5a611c4f565b610fb985604051806060016040528060288152602001613069602891396001600160a01b038a166000908152600d6020526040812090610f98611c4f565b6001600160a01b031681526020810191909152604001600020549190612161565b611c53565b5060019392505050565b6005805460ff60b81b1916600160b81b83151502179055600b546001600160a01b0316610ff3611c4f565b6001600160a01b03161461100657600080fd5b50565b600b546001600160a01b031661101d611c4f565b6001600160a01b03161461103057600080fd5b633b9aca0002602255565b60225481565b60155460ff1690565b6007546001600160a01b031681565b6000610e4a611066611c4f565b84610fb985600d6000611077611c4f565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906121f8565b600554600160b01b900460ff1681565b600b546001600160a01b03166110cb611c4f565b6001600160a01b0316146110de57600080fd5b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b601a5481565b601f546001600160a01b031681565b601f54600160a81b900460ff1681565b600554600160c01b900460ff1681565b600b546001600160a01b031661114b611c4f565b6001600160a01b03161461115e57600080fd5b600880546001600160a01b039283166001600160a01b03199182161790915560078054939092169216919091179055565b600b546001600160a01b03166111a3611c4f565b6001600160a01b0316146111b657600080fd5b60058054911515600160a81b0260ff60a81b19909216919091179055565b600b546001600160a01b03166111e8611c4f565b6001600160a01b0316146111fb57600080fd5b6000611206306112bb565b905080156110065761100681612259565b6001600160a01b03166000908152600e602052604090205460ff1690565b600b546001600160a01b0316611249611c4f565b6001600160a01b03161461125c57600080fd5b6001600160a01b03166000908152600f60205260409020805460ff19169055565b60185481565b600b546001600160a01b0316611297611c4f565b6001600160a01b0316146112aa57600080fd5b633b9aca0002602155565b60215481565b6001600160a01b03166000908152600c602052604090205490565b60165481565b600b546001600160a01b03166112f0611c4f565b6001600160a01b03161461130357600080fd5b6040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015611338573d6000803e3d6000fd5b5050565b600554600160b81b900460ff1681565b6009546001600160a01b031681565b60035481565b600b546001600160a01b0316611375611c4f565b6001600160a01b03161461138857600080fd5b6005805460ff60a81b1960ff60b01b1960ff60b81b19909216600160b81b1791909116600160b01b1716600160a81b179055600160165560076017556000601a55565b6000546001600160a01b031690565b600554600160a81b900460ff1681565b60195481565b60148054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e0e5780601f10610de357610100808354040283529160200191610e0e565b60045481565b600b546001600160a01b031661146b611c4f565b6001600160a01b03161461147e57600080fd5b600580546001600160a01b039283166001600160a01b03199182161790915560068054939092169216919091179055565b6000610e4a6114bc611c4f565b84610fb98560405180606001604052806025815260200161312f60259139600d60006114e6611c4f565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612161565b6005546001600160a01b031681565b6000610e4a611533611c4f565b8484611d3f565b600b546001600160a01b031661154e611c4f565b6001600160a01b03161461156157600080fd5b6008601a55565b611570611c4f565b6000546001600160a01b039081169116146115d2576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60115460ff161561162a576040805162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015290519081900360640190fd5b601e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a0155916004808301926020929190829003018186803b15801561168a57600080fd5b505afa15801561169e573d6000803e3d6000fd5b505050506040513d60208110156116b457600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b15801561170457600080fd5b505afa158015611718573d6000803e3d6000fd5b505050506040513d602081101561172e57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b15801561178057600080fd5b505af1158015611794573d6000803e3d6000fd5b505050506040513d60208110156117aa57600080fd5b5051601f80546001600160a01b0319166001600160a01b03928316179055601e546012546117db9230921690611c53565b601e546001600160a01b031663f305d71947306117f7816112bb565b600b54604080516001600160e01b031960e088901b1681526001600160a01b03948516600482015260248101939093526000604484018190526064840152921660848201524260a4820152905160c480830192606092919082900301818588803b15801561186457600080fd5b505af1158015611878573d6000803e3d6000fd5b50505050506040513d606081101561188f57600080fd5b50506501d1a94a2000602181905560209081556011805460ff19166001179055601f54601e546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169263095ea7b392604480820193918290030181600087803b15801561190557600080fd5b505af1158015611919573d6000803e3d6000fd5b505050506040513d602081101561192f57600080fd5b5050600580546001600160a01b0319167395ad61b0a150d79219dcf64e1e6cc01f0b64c4ce17905550565b600b546001600160a01b031661196e611c4f565b6001600160a01b03161461198157600080fd5b60058054911515600160c01b0260ff60c01b19909216919091179055565b600b546001600160a01b03166119b3611c4f565b6001600160a01b0316146119c657600080fd5b601f8054821515600160a81b810260ff60a81b199092169190911790915560408051918252517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599181900360200190a150565b600b546001600160a01b0316611a2d611c4f565b6001600160a01b031614611a4057600080fd5b600580546001600160a01b039384166001600160a01b03199182161790915560068054929093169116179055565b60025490565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b600a546001600160a01b031681565b6008546001600160a01b031681565b6006546001600160a01b031681565b600b546001600160a01b0316611ae0611c4f565b6001600160a01b031614611af357600080fd5b6001600160a01b03166000908152600e60205260409020805460ff19169055565b600b546001600160a01b0316611b28611c4f565b6001600160a01b031614611b3b57600080fd5b633b9aca0002602055565b600b546001600160a01b0316611b5a611c4f565b6001600160a01b031614611b6d57600080fd5b4780156110065761100681612400565b600b546001600160a01b0316611b91611c4f565b6001600160a01b031614611ba457600080fd5b601696909655601994909455601a92909255601755602355602455602555565b600b546001600160a01b0316611bd8611c4f565b6001600160a01b031614611beb57600080fd5b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b6005805460ff60b01b1916600160b01b83151502179055600b546001600160a01b0316610ff3611c4f565b60025481565b600b546001600160a01b031681565b3390565b6001600160a01b038316611c985760405162461bcd60e51b81526004018080602001828103825260248152602001806130df6024913960400191505060405180910390fd5b6001600160a01b038216611cdd5760405162461bcd60e51b8152600401808060200182810382526022815260200180612ffb6022913960400191505060405180910390fd5b6001600160a01b038084166000818152600d6020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611d845760405162461bcd60e51b81526004018080602001828103825260258152602001806130ba6025913960400191505060405180910390fd5b6001600160a01b038216611dc95760405162461bcd60e51b8152600401808060200182810382526023815260200180612fd86023913960400191505060405180910390fd5b60008111611e085760405162461bcd60e51b81526004018080602001828103825260298152602001806130916029913960400191505060405180910390fd5b611e106113cb565b6001600160a01b0316836001600160a01b031614158015611e4a5750611e346113cb565b6001600160a01b0316826001600160a01b031614155b8015611e5f57506001600160a01b0383163014155b8015611e7457506001600160a01b0382163014155b1561208757601f546001600160a01b038481169116148015611ea45750601e546001600160a01b03838116911614155b8015611eec57506001600160a01b0383166000908152600e602052604090205460ff161580611eec57506001600160a01b0382166000908152600e602052604090205460ff16155b15611f8557602154611f0782611f01856112bb565b906121f8565b1115611f445760405162461bcd60e51b815260040180806020018281038252602b81526020018061301d602b913960400191505060405180910390fd5b602054811115611f855760405162461bcd60e51b815260040180806020018281038252602c815260200180613103602c913960400191505060405180910390fd5b601f546001600160a01b038481169116148015611fb05750601e546001600160a01b03838116911614155b8015611fd557506001600160a01b0382166000908152600f602052604090205460ff16155b8015611ffa57506001600160a01b0383166000908152600f602052604090205460ff16155b15612006576019546018555b601f546001600160a01b0383811691161480156120315750601e546001600160a01b03848116911614155b801561205657506001600160a01b0382166000908152600f602052604090205460ff16155b801561207b57506001600160a01b0383166000908152600f602052604090205460ff16155b1561208757601a546018555b6000612092306112bb565b905060205481106120a257506020545b602254811080159081906120c05750601f54600160a01b900460ff16155b80156120da5750601f546001600160a01b03868116911614155b80156120ef5750601f54600160a81b900460ff165b156121025760225491506121028261248f565b6001600160a01b0385166000908152600e602052604090205460019060ff168061214457506001600160a01b0385166000908152600e602052604090205460ff165b1561214d575060005b61215986868684612611565b505050505050565b600081848411156121f05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156121b557818101518382015260200161219d565b50505050905090810190601f1680156121e25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015612252576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061228857fe5b6001600160a01b03928316602091820292909201810191909152601e54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156122dc57600080fd5b505afa1580156122f0573d6000803e3d6000fd5b505050506040513d602081101561230657600080fd5b505181518290600190811061231757fe5b6001600160a01b039283166020918202929092010152601e5461233d9130911684611c53565b601e5460405163791ac94760e01b8152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b838110156123c35781810151838201526020016123ab565b505050509050019650505050505050600060405180830381600087803b1580156123ec57600080fd5b505af1158015612159573d6000803e3d6000fd5b600061240d826002612967565b600b546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612448573d6000803e3d6000fd5b50600a546001600160a01b03166108fc61246284846129a9565b6040518115909202916000818181858888f1935050505015801561248a573d6000803e3d6000fd5b505050565b601f805460ff60a01b1916600160a01b1790556023546000906124b3908390612967565b905060006124c183836129a9565b905060006124da6024548561296790919063ffffffff16565b905060006124f36025548661296790919063ffffffff16565b600554909150600160b01b900460ff16801561250f5750600082115b1561251d5761251d826129eb565b600554600160b81b900460ff1680156125365750600081115b156125445761254481612a0d565b6000612551856002612967565b9050600061255f86836129a9565b90504761256b83612259565b600061257747836129a9565b600554909150600160c01b900460ff1615612596576125968382612a2f565b476125a088612259565b60006125ac47836129a9565b90506125b781612400565b604080518781526020810185905280820187905290517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15050601f805460ff60a01b19169055505050505050505050565b6001600160a01b0384166000908152600f602052604090205460ff1615801561265357506001600160a01b0383166000908152600f602052604090205460ff16155b61265c57600080fd5b60115460ff166126f6576001600160a01b0384166000908152600e602052604090205460ff16806126a557506001600160a01b0383166000908152600e602052604090205460ff165b6126f6576040805162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420616374697665207965742e000000000000604482015290519081900360640190fd5b8061270357612703612aed565b6000612725606461271f60165486612b1f90919063ffffffff16565b90612967565b9050600061274f606461271f6127486018546017546121f890919063ffffffff16565b8790612b1f565b9050600061276761276083856121f8565b86906129a9565b9050600061277586856129a9565b600554909150600160a81b900460ff1615612794576127948885612b78565b6001600160a01b0388166000908152600c60205260409020546127b790826129a9565b6001600160a01b03808a166000908152600c602052604080822093909355908916815220546127e690836121f8565b6001600160a01b0388166000908152600c602052604080822092909255308152205461281290846121f8565b306000908152600c6020526040902055600554600160a81b900460ff1680156128495750601f546001600160a01b03898116911614155b801561285e57506001600160a01b0388163014155b80156128785750601e546001600160a01b03898116911614155b80156128a85750601e546001600160a01b03888116911614806128a85750601f546001600160a01b038881169116145b156128c357601f546128c3906001600160a01b031685612b78565b866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a382156129555760408051848152905130916001600160a01b038b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35b61295d612c2e565b5050505050505050565b600061225283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c3c565b600061225283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612161565b8015611006576129fa81612ca1565b600354612a0790826121f8565b60035550565b801561100657612a1c81612e3c565b600454612a2990826121f8565b60045550565b601e54612a479030906001600160a01b031684611c53565b601e54600b546040805163f305d71960e01b81523060048201526024810186905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991849160c48082019260609290919082900301818588803b158015612abc57600080fd5b505af1158015612ad0573d6000803e3d6000fd5b50505050506040513d6060811015612ae757600080fd5b50505050565b601654158015612afd5750601754155b15612b0757612b1d565b60168054601b5560178054601c55600091829055555b565b600082612b2e57506000610e4e565b82820282848281612b3b57fe5b04146122525760405162461bcd60e51b81526004018080602001828103825260218152602001806130486021913960400191505060405180910390fd5b612b81826112bb565b811115612b8d57600080fd5b6001600160a01b0382166000908152600c6020526040902054612bb090826129a9565b6001600160a01b0383166000908152600c6020526040902055601254612bd690826129a9565b601255600254612be690826121f8565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b601b54601655601c54601755565b60008183612c8b5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156121b557818101518382015260200161219d565b506000838581612c9757fe5b0495945050505050565b60408051600380825260808201909252600091602082016060803683370190505090503081600081518110612cd257fe5b6001600160a01b03928316602091820292909201810191909152601e54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612d2657600080fd5b505afa158015612d3a573d6000803e3d6000fd5b505050506040513d6020811015612d5057600080fd5b5051815182906001908110612d6157fe5b6001600160a01b039283166020918202929092010152600854825191169082906002908110612d8c57fe5b6001600160a01b039283166020918202929092010152601e54612db29130911684611c53565b601e54600754604051635c11d79560e01b8152600481018581526000602483018190526001600160a01b0393841660648401819052426084850181905260a060448601908152885160a487015288519690971696635c11d795968a9694958a9590929160c490910190602087810191028083838b83156123c35781810151838201526020016123ab565b60408051600380825260808201909252600091602082016060803683370190505090503081600081518110612e6d57fe5b6001600160a01b03928316602091820292909201810191909152601e54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612ec157600080fd5b505afa158015612ed5573d6000803e3d6000fd5b505050506040513d6020811015612eeb57600080fd5b5051815182906001908110612efc57fe5b6001600160a01b039283166020918202929092010152600554825191169082906002908110612f2757fe5b6001600160a01b039283166020918202929092010152601e54612f4d9130911684611c53565b601e54600654604051635c11d79560e01b8152600481018581526000602483018190526001600160a01b0393841660648401819052426084850181905260a060448601908152885160a487015288519690971696635c11d795968a9694958a9590929160c490910190602087810191028083838b83156123c35781810151838201526020016123ab56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373596f7520617265206265696e67206772656564792e20457863656564696e67204d61782057616c6c65742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373536c6f7720646f776e2062756464792e2e2e74686572652069732061206d6178207472616e73616374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d469a163e81932fab18a7c5637672f3aebad7cee4336c88c4654acb099c89e0664736f6c63430007060033

Deployed Bytecode Sourcemap

8739:19331:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11692:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15302:120;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15302:120:0;-1:-1:-1;;;;;15302:120:0;;:::i;:::-;;;;;;;;;;;;;;;;;;12398:161;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12398:161:0;;;;;;;;:::i;10236:25::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;9943:31;;;;;;;;;;;;;:::i;26843:213::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26843:213:0;;;;;;;;;;:::i;:::-;;10519:41;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;10519:41:0;;;;;;;;;;;;;;11969:95;;;;;;;;;;;;;:::i;27064:150::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27064:150:0;-1:-1:-1;;;;;27064:150:0;;:::i;10689:23::-;;;;;;;;;;;;;:::i;12567:313::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12567:313:0;;;;;;;;;;;;;;;;;:::i;24363:130::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24363:130:0;;;;:::i;14474:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14474:167:0;;:::i;10757:36::-;;;;;;;;;;;;;:::i;11878:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9260:81;;;;;;;;;;;;;:::i;12888:218::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12888:218:0;;;;;;;;:::i;9053:28::-;;;;;;;;;;;;;:::i;13858:143::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13858:143:0;-1:-1:-1;;;;;13858:143:0;;:::i;10332:27::-;;;;;;;;;;;;;:::i;10567:28::-;;;;;;;;;;;;;:::i;10636:40::-;;;;;;;;;;;;;:::i;9128:26::-;;;;;;;;;;;;;:::i;27449:175::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27449:175:0;;;;;;;;;;:::i;24501:124::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24501:124:0;;;;:::i;24767:235::-;;;;;;;;;;;;;:::i;16997:124::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16997:124:0;-1:-1:-1;;;;;16997:124:0;;:::i;15152:138::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15152:138:0;-1:-1:-1;;;;;15152:138:0;;:::i;10268:24::-;;;;;;;;;;;;;:::i;14319:143::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14319:143:0;;:::i;10719:31::-;;;;;;;;;;;;;:::i;17472:117::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17472:117:0;-1:-1:-1;;;;;17472:117:0;;:::i;10200:28::-;;;;;;;;;;;;;:::i;14829:172::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14829:172:0;-1:-1:-1;;;;;14829:172:0;;:::i;9088:33::-;;;;;;;;;;;;;:::i;9419:68::-;;;;;;;;;;;;;:::i;8863:31::-;;;;;;;;;;;;;:::i;23587:232::-;;;;;;;;;;;;;:::i;8400:79::-;;;;;;;;;;;;;:::i;9018:28::-;;;;;;;;;;;;;:::i;10299:26::-;;;;;;;;;;;;;:::i;11783:87::-;;;;;;;;;;;;;:::i;8901:36::-;;;;;;;;;;;;;:::i;27222:215::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27222:215:0;;;;;;;;;;:::i;13114:269::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13114:269:0;;;;;;;;:::i;8944:31::-;;;;;;;;;;;;;:::i;12072:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12072:167:0;;;;;;;;:::i;23432:104::-;;;;;;;;;;;;;:::i;15434:874::-;;;;;;;;;;;;;:::i;24637:122::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24637:122:0;;;;:::i;16316:204::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16316:204:0;;;;:::i;26592:239::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26592:239:0;;;;;;;;;;:::i;13391:91::-;;;;;;;;;;;;;:::i;12247:143::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12247:143:0;;;;;;;;;;:::i;9494:81::-;;;;;;;;;;;;;:::i;9348:64::-;;;;;;;;;;;;;:::i;9163:90::-;;;;;;;;;;;;;:::i;14013:142::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14013:142:0;-1:-1:-1;;;;;14013:142:0;;:::i;14170:141::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14170:141:0;;:::i;25010:237::-;;;;;;;;;;;;;:::i;27632:435::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27632:435:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15013:127::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15013:127:0;-1:-1:-1;;;;;15013:127:0;;:::i;24235:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24235:120:0;;;;:::i;8829:27::-;;;;;;;;;;;;;:::i;9582:81::-;;;;;;;;;;;;;:::i;11692:83::-;11762:5;11755:12;;;;;;;;-1:-1:-1;;11755:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11729:13;;11755:12;;11762:5;;11755:12;;11762:5;11755:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11692:83;:::o;15302:120::-;-1:-1:-1;;;;;15400:14:0;15376:4;15400:14;;;:4;:14;;;;;;;;;15302:120::o;12398:161::-;12473:4;12490:39;12499:12;:10;:12::i;:::-;12513:7;12522:6;12490:8;:39::i;:::-;-1:-1:-1;12547:4:0;12398:161;;;;;:::o;10236:25::-;;;;:::o;9943:31::-;;;;;;:::o;26843:213::-;26977:4;;-1:-1:-1;;;;;26977:4:0;26961:12;:10;:12::i;:::-;-1:-1:-1;;;;;26961:20:0;;26953:29;;;;;;26993:4;:20;;-1:-1:-1;;;;;26993:20:0;;;-1:-1:-1;;;;;;26993:20:0;;;;;;;27024:4;:24;;;;;;;;;;;26843:213::o;10519:41::-;;;-1:-1:-1;;;;;10519:41:0;;:::o;11969:95::-;12049:7;;11969:95;:::o;27064:150::-;27151:4;;-1:-1:-1;;;;;27151:4:0;27135:12;:10;:12::i;:::-;-1:-1:-1;;;;;27135:20:0;;:44;;;-1:-1:-1;27175:4:0;;-1:-1:-1;;;;;27175:4:0;27159:12;:10;:12::i;:::-;-1:-1:-1;;;;;27159:20:0;;27135:44;27127:53;;;;;;27191:4;:15;;-1:-1:-1;;;;;;27191:15:0;-1:-1:-1;;;;;27191:15:0;;;;;;;;;;27064:150::o;10689:23::-;;;;:::o;12567:313::-;12665:4;12682:36;12692:6;12700:9;12711:6;12682:9;:36::i;:::-;12729:121;12738:6;12746:12;:10;:12::i;:::-;12760:89;12798:6;12760:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12760:19:0;;;;;;:11;:19;;;;;;12780:12;:10;:12::i;:::-;-1:-1:-1;;;;;12760:33:0;;;;;;;;;;;;-1:-1:-1;12760:33:0;;;:89;:37;:89::i;:::-;12729:8;:121::i;:::-;-1:-1:-1;12868:4:0;12567:313;;;;;:::o;24363:130::-;24422:13;:23;;-1:-1:-1;;;;24422:23:0;-1:-1:-1;;;24422:23:0;;;;;;;24480:4;;-1:-1:-1;;;;;24480:4:0;24464:12;:10;:12::i;:::-;-1:-1:-1;;;;;24464:20:0;;24456:29;;;;;;24363:130;:::o;14474:167::-;14579:4;;-1:-1:-1;;;;;14579:4:0;14563:12;:10;:12::i;:::-;-1:-1:-1;;;;;14563:20:0;;14555:29;;;;;;14630:3;14608:25;14595:10;:38;14474:167::o;10757:36::-;;;;:::o;11878:83::-;11944:9;;;;11878:83;:::o;9260:81::-;;;-1:-1:-1;;;;;9260:81:0;;:::o;12888:218::-;12976:4;12993:83;13002:12;:10;:12::i;:::-;13016:7;13025:50;13064:10;13025:11;:25;13037:12;:10;:12::i;:::-;-1:-1:-1;;;;;13025:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;13025:25:0;;;:34;;;;;;;;;;;:38;:50::i;9053:28::-;;;-1:-1:-1;;;9053:28:0;;;;;:::o;13858:143::-;13943:4;;-1:-1:-1;;;;;13943:4:0;13927:12;:10;:12::i;:::-;-1:-1:-1;;;;;13927:20:0;;13919:29;;;;;;-1:-1:-1;;;;;13959:27:0;;;;;:18;:27;;;;;:34;;-1:-1:-1;;13959:34:0;13989:4;13959:34;;;13858:143::o;10332:27::-;;;;:::o;10567:28::-;;;-1:-1:-1;;;;;10567:28:0;;:::o;10636:40::-;;;-1:-1:-1;;;10636:40:0;;;;;:::o;9128:26::-;;;-1:-1:-1;;;9128:26:0;;;;;:::o;27449:175::-;27558:4;;-1:-1:-1;;;;;27558:4:0;27542:12;:10;:12::i;:::-;-1:-1:-1;;;;;27542:20:0;;27534:29;;;;;;27574:4;:18;;-1:-1:-1;;;;;27574:18:0;;;-1:-1:-1;;;;;;27574:18:0;;;;;;;27603:4;:13;;;;;;;;;;;;;;27449:175::o;24501:124::-;24583:4;;-1:-1:-1;;;;;24583:4:0;24567:12;:10;:12::i;:::-;-1:-1:-1;;;;;24567:20:0;;24559:29;;;;;;24599:8;:18;;;;;-1:-1:-1;;;24599:18:0;-1:-1:-1;;;;24599:18:0;;;;;;;;;24501:124::o;24767:235::-;24833:4;;-1:-1:-1;;;;;24833:4:0;24817:12;:10;:12::i;:::-;-1:-1:-1;;;;;24817:20:0;;24809:29;;;;;;24849:23;24875:24;24893:4;24875:9;:24::i;:::-;24849:50;-1:-1:-1;24914:19:0;;24910:85;;24950:33;24967:15;24950:16;:33::i;16997:124::-;-1:-1:-1;;;;;17086:27:0;17062:4;17086:27;;;:18;:27;;;;;;;;;16997:124::o;15152:138::-;15244:4;;-1:-1:-1;;;;;15244:4:0;15228:12;:10;:12::i;:::-;-1:-1:-1;;;;;15228:20:0;;15220:29;;;;;;-1:-1:-1;;;;;15260:14:0;15277:5;15260:14;;;:4;:14;;;;;:22;;-1:-1:-1;;15260:22:0;;;15152:138::o;10268:24::-;;;;:::o;14319:143::-;14404:4;;-1:-1:-1;;;;;14404:4:0;14388:12;:10;:12::i;:::-;-1:-1:-1;;;;;14388:20:0;;14380:29;;;;;;14451:3;14439:15;14420:16;:34;14319:143::o;10719:31::-;;;;:::o;17472:117::-;-1:-1:-1;;;;;17565:16:0;17538:7;17565:16;;;:7;:16;;;;;;;17472:117::o;10200:28::-;;;;:::o;14829:172::-;14932:4;;-1:-1:-1;;;;;14932:4:0;14916:12;:10;:12::i;:::-;-1:-1:-1;;;;;14916:20:0;;14908:29;;;;;;14948:45;;-1:-1:-1;;;;;14948:22:0;;;14971:21;14948:45;;;;;;;;;14971:21;14948:22;:45;;;;;;;;;;;;;;;;;;;;;14829:172;:::o;9088:33::-;;;-1:-1:-1;;;9088:33:0;;;;;:::o;9419:68::-;;;-1:-1:-1;;;;;9419:68:0;;:::o;8863:31::-;;;;:::o;23587:232::-;23655:4;;-1:-1:-1;;;;;23655:4:0;23639:12;:10;:12::i;:::-;-1:-1:-1;;;;;23639:20:0;;23631:29;;;;;;23671:13;:20;;-1:-1:-1;;;;;;;;;;;;23671:20:0;;;-1:-1:-1;;;23671:20:0;23702:15;;;;-1:-1:-1;;;23702:15:0;23728;-1:-1:-1;;;23728:15:0;;;23687:4;23702:8;23754:13;23787:1;23671:13;23778:10;23671:20;23799:8;:12;23587:232::o;8400:79::-;8438:7;8465:6;-1:-1:-1;;;;;8465:6:0;8400:79;:::o;9018:28::-;;;-1:-1:-1;;;9018:28:0;;;;;:::o;10299:26::-;;;;:::o;11783:87::-;11855:7;11848:14;;;;;;;;-1:-1:-1;;11848:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11822:13;;11848:14;;11855:7;;11848:14;;11855:7;11848:14;;;;;;;;;;;;;;;;;;;;;;;;8901:36;;;;:::o;27222:215::-;27343:4;;-1:-1:-1;;;;;27343:4:0;27327:12;:10;:12::i;:::-;-1:-1:-1;;;;;27327:20:0;;27319:29;;;;;;27359:16;:37;;-1:-1:-1;;;;;27359:37:0;;;-1:-1:-1;;;;;;27359:37:0;;;;;;;27407:13;:22;;;;;;;;;;;;;;27222:215::o;13114:269::-;13207:4;13224:129;13233:12;:10;:12::i;:::-;13247:7;13256:96;13295:15;13256:96;;;;;;;;;;;;;;;;;:11;:25;13268:12;:10;:12::i;:::-;-1:-1:-1;;;;;13256:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;13256:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;8944:31::-;;;-1:-1:-1;;;;;8944:31:0;;:::o;12072:167::-;12150:4;12167:42;12177:12;:10;:12::i;:::-;12191:9;12202:6;12167:9;:42::i;23432:104::-;23500:4;;-1:-1:-1;;;;;23500:4:0;23484:12;:10;:12::i;:::-;-1:-1:-1;;;;;23484:20:0;;23476:29;;;;;;23527:1;23516:8;:12;23432:104::o;15434:874::-;8537:12;:10;:12::i;:::-;8527:6;;-1:-1:-1;;;;;8527:6:0;;;:22;;;8519:67;;;;;-1:-1:-1;;;8519:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15496:11:::1;::::0;::::1;;15495:12;15487:47;;;::::0;;-1:-1:-1;;;15487:47:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;15656:15;:34:::0;;-1:-1:-1;;;;;;15656:34:0::1;15602:42;15656:34:::0;;::::1;::::0;;;15735:26:::1;::::0;;-1:-1:-1;;;15735:26:0;;;;15602:42;;15735:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;15602:42;15735:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15735:26:0;15789:23:::1;::::0;;-1:-1:-1;;;15789:23:0;;;;-1:-1:-1;;;;;15717:56:0;;::::1;::::0;::::1;::::0;15782:4:::1;::::0;15789:21;;::::1;::::0;::::1;::::0;:23:::1;::::0;;::::1;::::0;15735:26:::1;::::0;15789:23;;;;;;;;:21;:23;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15789:23:0;15717:96:::1;::::0;;-1:-1:-1;;;;;;15717:96:0::1;::::0;;;;;;-1:-1:-1;;;;;15717:96:0;;::::1;;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;15789:23:::1;::::0;15717:96;;;;;;;-1:-1:-1;15717:96:0;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15717:96:0;15701:13:::1;:112:::0;;-1:-1:-1;;;;;;15701:112:0::1;-1:-1:-1::0;;;;;15701:112:0;;::::1;;::::0;;15856:15:::1;::::0;15874:7:::1;::::0;15824:58:::1;::::0;15841:4:::1;::::0;15856:15:::1;::::0;15824:8:::1;:58::i;:::-;15895:15;::::0;-1:-1:-1;;;;;15895:15:0::1;:31;15934:21;15965:4;15971:24;15965:4:::0;15971:9:::1;:24::i;:::-;16008:4;::::0;15895:135:::1;::::0;;-1:-1:-1;;;;;;15895:135:0::1;::::0;;;;;;-1:-1:-1;;;;;15895:135:0;;::::1;;::::0;::::1;::::0;;;;;;;;15996:1:::1;15895:135:::0;;;;;;;;;;16008:4;::::1;15895:135:::0;;;;16014:15:::1;15895:135:::0;;;;;;;;;;;::::1;::::0;;;;;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;16060:10:0::1;16041:16;:29:::0;;;15895:135:::1;16086:21:::0;;;16126:11:::1;:18:::0;;-1:-1:-1;;16126:18:0::1;-1:-1:-1::0;16126:18:0::1;::::0;;16162:13:::1;::::0;16193:15:::1;::::0;15895:135;16155:71;;-1:-1:-1;;;16155:71:0;;-1:-1:-1;;;;;16193:15:0;;::::1;16155:71;::::0;::::1;::::0;-1:-1:-1;;16155:71:0;;;;;;16162:13;;;::::1;::::0;16155:29:::1;::::0;:71;;;;;;;;;;;-1:-1:-1;16162:13:0;16155:71;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;16237:16:0::1;:63:::0;;-1:-1:-1;;;;;;16237:63:0::1;16257:42;16237:63;::::0;;-1:-1:-1;15434:874:0:o;24637:122::-;24718:4;;-1:-1:-1;;;;;24718:4:0;24702:12;:10;:12::i;:::-;-1:-1:-1;;;;;24702:20:0;;24694:29;;;;;;24734:7;:17;;;;;-1:-1:-1;;;24734:17:0;-1:-1:-1;;;;24734:17:0;;;;;;;;;24637:122::o;16316:204::-;16410:4;;-1:-1:-1;;;;;16410:4:0;16394:12;:10;:12::i;:::-;-1:-1:-1;;;;;16394:20:0;;16386:29;;;;;;16426:21;:32;;;;;-1:-1:-1;;;16426:32:0;;-1:-1:-1;;;;16426:32:0;;;;;;;;;;16474:38;;;;;;;;;;;;;;;;16316:204;:::o;26592:239::-;26731:4;;-1:-1:-1;;;;;26731:4:0;26715:12;:10;:12::i;:::-;-1:-1:-1;;;;;26715:20:0;;26707:29;;;;;;26747:16;:32;;-1:-1:-1;;;;;26747:32:0;;;-1:-1:-1;;;;;;26747:32:0;;;;;;;26790:13;:33;;;;;;;;;;;26592:239::o;13391:91::-;13462:12;;13391:91;:::o;12247:143::-;-1:-1:-1;;;;;12355:18:0;;;12328:7;12355:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12247:143::o;9494:81::-;;;-1:-1:-1;;;;;9494:81:0;;:::o;9348:64::-;;;-1:-1:-1;;;;;9348:64:0;;:::o;9163:90::-;;;-1:-1:-1;;;;;9163:90:0;;:::o;14013:142::-;14096:4;;-1:-1:-1;;;;;14096:4:0;14080:12;:10;:12::i;:::-;-1:-1:-1;;;;;14080:20:0;;14072:29;;;;;;-1:-1:-1;;;;;14112:27:0;14142:5;14112:27;;;:18;:27;;;;;:35;;-1:-1:-1;;14112:35:0;;;14013:142::o;14170:141::-;14259:4;;-1:-1:-1;;;;;14259:4:0;14243:12;:10;:12::i;:::-;-1:-1:-1;;;;;14243:20:0;;14235:29;;;;;;14300:3;14286:17;14275:8;:28;14170:141::o;25010:237::-;25076:4;;-1:-1:-1;;;;;25076:4:0;25060:12;:10;:12::i;:::-;-1:-1:-1;;;;;25060:20:0;;25052:29;;;;;;25121:21;25157:22;;25153:87;;25196:32;25209:18;25196:12;:32::i;27632:435::-;27827:4;;-1:-1:-1;;;;;27827:4:0;27811:12;:10;:12::i;:::-;-1:-1:-1;;;;;27811:20:0;;27803:29;;;;;;27843:9;:16;;;;27870:7;:17;;;;27898:8;:19;;;;27928:6;:14;27953:10;:24;27988:11;:25;28024:16;:35;27632:435::o;15013:127::-;15095:4;;-1:-1:-1;;;;;15095:4:0;15079:12;:10;:12::i;:::-;-1:-1:-1;;;;;15079:20:0;;15071:29;;;;;;-1:-1:-1;;;;;15111:14:0;;;;;:4;:14;;;;;:21;;-1:-1:-1;;15111:21:0;15128:4;15111:21;;;15013:127::o;24235:120::-;24289:8;:18;;-1:-1:-1;;;;24289:18:0;-1:-1:-1;;;24289:18:0;;;;;;;24342:4;;-1:-1:-1;;;;;24342:4:0;24326:12;:10;:12::i;8829:27::-;;;;:::o;9582:81::-;;;-1:-1:-1;;;;;9582:81:0;;:::o;455:98::-;535:10;455:98;:::o;17129:335::-;-1:-1:-1;;;;;17222:19:0;;17214:68;;;;-1:-1:-1;;;17214:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17301:21:0;;17293:68;;;;-1:-1:-1;;;17293:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17372:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17424:32;;;;;;;;;;;;;;;;;17129:335;;;:::o;17597:1904::-;-1:-1:-1;;;;;17685:18:0;;17677:68;;;;-1:-1:-1;;;17677:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17764:16:0;;17756:64;;;;-1:-1:-1;;;17756:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17848:1;17839:6;:10;17831:64;;;;-1:-1:-1;;;17831:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17920:7;:5;:7::i;:::-;-1:-1:-1;;;;;17912:15:0;:4;-1:-1:-1;;;;;17912:15:0;;;:32;;;;;17937:7;:5;:7::i;:::-;-1:-1:-1;;;;;17931:13:0;:2;-1:-1:-1;;;;;17931:13:0;;;17912:32;:57;;;;-1:-1:-1;;;;;;17948:21:0;;17964:4;17948:21;;17912:57;:80;;;;-1:-1:-1;;;;;;17973:19:0;;17987:4;17973:19;;17912:80;17908:902;;;18021:13;;-1:-1:-1;;;;;18013:21:0;;;18021:13;;18013:21;:55;;;;-1:-1:-1;18052:15:0;;-1:-1:-1;;;;;18038:30:0;;;18052:15;;18038:30;;18013:55;:115;;;;-1:-1:-1;;;;;;18075:24:0;;;;;;:18;:24;;;;;;;;18074:25;;:52;;-1:-1:-1;;;;;;18104:22:0;;;;;;:18;:22;;;;;;;;18103:23;18074:52;18009:351;;;18186:16;;18157:25;18175:6;18157:13;18167:2;18157:9;:13::i;:::-;:17;;:25::i;:::-;:45;;18149:101;;;;-1:-1:-1;;;18149:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18287:8;;18277:6;:18;;18269:75;;;;-1:-1:-1;;;18269:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18386:13;;-1:-1:-1;;;;;18378:21:0;;;18386:13;;18378:21;:55;;;;-1:-1:-1;18417:15:0;;-1:-1:-1;;;;;18403:30:0;;;18417:15;;18403:30;;18378:55;:68;;;;-1:-1:-1;;;;;;18438:8:0;;;;;;:4;:8;;;;;;;;18437:9;18378:68;:83;;;;-1:-1:-1;;;;;;18451:10:0;;;;;;:4;:10;;;;;;;;18450:11;18378:83;18374:196;;;18547:7;;18535:9;:19;18374:196;18612:13;;-1:-1:-1;;;;;18606:19:0;;;18612:13;;18606:19;:55;;;;-1:-1:-1;18645:15:0;;-1:-1:-1;;;;;18629:32:0;;;18645:15;;18629:32;;18606:55;:68;;;;-1:-1:-1;;;;;;18666:8:0;;;;;;:4;:8;;;;;;;;18665:9;18606:68;:83;;;;-1:-1:-1;;;;;;18679:10:0;;;;;;:4;:10;;;;;;;;18678:11;18606:83;18602:197;;;18775:8;;18763:9;:20;18602:197;18822:28;18853:24;18871:4;18853:9;:24::i;:::-;18822:55;;18923:8;;18899:20;:32;18896:94;;-1:-1:-1;18970:8:0;;18896:94;19061:10;;19037:34;;;;;;;19086:40;;-1:-1:-1;19110:16:0;;-1:-1:-1;;;19110:16:0;;;;19109:17;19086:40;:65;;;;-1:-1:-1;19138:13:0;;-1:-1:-1;;;;;19130:21:0;;;19138:13;;19130:21;;19086:65;:90;;;;-1:-1:-1;19155:21:0;;-1:-1:-1;;;19155:21:0;;;;19086:90;19082:207;;;19216:10;;19193:33;;19241:36;19256:20;19241:14;:36::i;:::-;-1:-1:-1;;;;;19342:24:0;;19301:12;19342:24;;;:18;:24;;;;;;19316:4;;19342:24;;;:50;;-1:-1:-1;;;;;;19370:22:0;;;;;;:18;:22;;;;;;;;19342:50;19339:96;;;-1:-1:-1;19418:5:0;19339:96;19455:38;19470:4;19475:2;19478:6;19485:7;19455:14;:38::i;:::-;17597:1904;;;;;;:::o;7258:190::-;7344:7;7380:12;7372:6;;;;7364:29;;;;-1:-1:-1;;;7364:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7416:5:0;;;7258:190::o;6927:179::-;6985:7;7017:5;;;7041:6;;;;7033:46;;;;;-1:-1:-1;;;7033:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7097:1;6927:179;-1:-1:-1;;;6927:179:0:o;20775:589::-;20925:16;;;20939:1;20925:16;;;;;;;;20901:21;;20925:16;;;;;;;;;;-1:-1:-1;20925:16:0;20901:40;;20970:4;20952;20957:1;20952:7;;;;;;;;-1:-1:-1;;;;;20952:23:0;;;:7;;;;;;;;;;:23;;;;20996:15;;:22;;;-1:-1:-1;;;20996:22:0;;;;:15;;;;;:20;;:22;;;;;20952:7;;20996:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20996:22:0;20986:7;;:4;;20991:1;;20986:7;;;;;;-1:-1:-1;;;;;20986:32:0;;;:7;;;;;;;;;:32;21063:15;;21031:62;;21048:4;;21063:15;21081:11;21031:8;:62::i;:::-;21132:15;;:224;;-1:-1:-1;;;21132:224:0;;;;;;;;:15;:224;;;;;;21310:4;21132:224;;;;;;21330:15;21132:224;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21132:15:0;;;;:66;;21213:11;;21283:4;;21310;21330:15;21132:224;;;;;;;;;;;;;;;;:15;:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25255:186;25312:19;25334:13;:6;25345:1;25334:10;:13::i;:::-;25358:4;;:26;;25312:35;;-1:-1:-1;;;;;;25358:4:0;;:26;;;;;25312:35;;25358:4;:26;:4;:26;25312:35;25358:4;:26;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25395:4:0;;-1:-1:-1;;;;;25395:4:0;:38;25409:23;:6;25420:11;25409:10;:23::i;:::-;25395:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25255:186;;:::o;19509:1258::-;11200:16;:23;;-1:-1:-1;;;;11200:23:0;-1:-1:-1;;;11200:23:0;;;19643:10:::1;::::0;11200:23;;19618:36:::1;::::0;:20;;:24:::1;:36::i;:::-;19594:61:::0;-1:-1:-1;19666:20:0::1;19690:38;:20:::0;19594:61;19690:24:::1;:38::i;:::-;19666:63;;19740:21;19765:37;19790:11;;19765:20;:24;;:37;;;;:::i;:::-;19740:63;;19814:26;19844:42;19869:16;;19844:20;:24;;:42;;;;:::i;:::-;19904:8;::::0;19814:73;;-1:-1:-1;;;;19904:8:0;::::1;;;:29:::0;::::1;;;;19932:1;19916:13;:17;19904:29;19900:92;;;19950:30;19966:13;19950:15;:30::i;:::-;20008:13;::::0;-1:-1:-1;;;20008:13:0;::::1;;;:39:::0;::::1;;;;20046:1;20025:18;:22;20008:39;20004:112;;;20064:40;20085:18;20064:20;:40::i;:::-;20128:12;20143:19;:12:::0;20160:1:::1;20143:16;:19::i;:::-;20128:34:::0;-1:-1:-1;20173:17:0::1;20193:22;:12:::0;20128:34;20193:16:::1;:22::i;:::-;20173:42:::0;-1:-1:-1;20254:21:0::1;20286:22;20303:4:::0;20286:16:::1;:22::i;:::-;20319:18;20340:44;:21;20366:17:::0;20340:25:::1;:44::i;:::-;20399:7;::::0;20319:65;;-1:-1:-1;;;;20399:7:0;::::1;;;20395:75;;;20423:35;20436:9;20447:10;20423:12;:35::i;:::-;20504:21;20536:30;20553:12:::0;20536:16:::1;:30::i;:::-;20577:21;20601:38;:21;20627:11:::0;20601:25:::1;:38::i;:::-;20577:62;;20660:27;20673:13;20660:12;:27::i;:::-;20716:43;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;::::1;::::0;;;;;;;::::1;-1:-1:-1::0;;11246:16:0;:24;;-1:-1:-1;;;;11246:24:0;;;-1:-1:-1;;;;;;;;;19509:1258:0:o;21905:1449::-;-1:-1:-1;;;;;22022:12:0;;;;;;:4;:12;;;;;;;;22021:13;:33;;;;-1:-1:-1;;;;;;22039:15:0;;;;;;:4;:15;;;;;;;;22038:16;22021:33;22013:42;;;;;;22070:11;;;;22066:141;;-1:-1:-1;;;;;22105:26:0;;;;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;22135:29:0;;;;;;:18;:29;;;;;;;;22105:59;22097:98;;;;;-1:-1:-1;;;22097:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;22225:7;22220:60;;22254:14;:12;:14::i;:::-;22300:20;22323:30;22349:3;22323:21;22334:9;;22323:6;:10;;:21;;;;:::i;:::-;:25;;:30::i;:::-;22300:53;;22364:22;22389:42;22427:3;22389:33;22400:21;22411:9;;22400:6;;:10;;:21;;;;:::i;:::-;22389:6;;:10;:33::i;:42::-;22364:67;-1:-1:-1;22444:24:0;22471:44;22482:32;22364:67;22501:12;22482:18;:32::i;:::-;22471:6;;:10;:44::i;:::-;22444:71;-1:-1:-1;22528:21:0;22552:24;:6;22563:12;22552:10;:24::i;:::-;22591:8;;22528:48;;-1:-1:-1;;;;22591:8:0;;;;22587:66;;;22612:29;22620:6;22628:12;22612:7;:29::i;:::-;-1:-1:-1;;;;;22691:15:0;;;;;;:7;:15;;;;;;:34;;22711:13;22691:19;:34::i;:::-;-1:-1:-1;;;;;22673:15:0;;;;;;;:7;:15;;;;;;:52;;;;22757:18;;;;;;;:40;;22780:16;22757:22;:40::i;:::-;-1:-1:-1;;;;;22736:18:0;;;;;;:7;:18;;;;;;:61;;;;22849:4;22833:22;;;;:42;;22860:14;22833:26;:42::i;:::-;22824:4;22808:22;;;;:7;:22;;;;;:67;22899:8;;-1:-1:-1;;;22899:8:0;;;;:35;;;;-1:-1:-1;22921:13:0;;-1:-1:-1;;;;;22911:23:0;;;22921:13;;22911:23;;22899:35;:62;;;;-1:-1:-1;;;;;;22938:23:0;;22956:4;22938:23;;22899:62;:100;;;;-1:-1:-1;22983:15:0;;-1:-1:-1;;;;;22965:34:0;;;22983:15;;22965:34;;22899:100;:173;;;;-1:-1:-1;23025:15:0;;-1:-1:-1;;;;;23004:37:0;;;23025:15;;23004:37;;:67;;-1:-1:-1;23058:13:0;;-1:-1:-1;;;;;23045:26:0;;;23058:13;;23045:26;23004:67;22896:241;;;23097:13;;23089:36;;-1:-1:-1;;;;;23097:13:0;23112:12;23089:7;:36::i;:::-;23179:9;-1:-1:-1;;;;;23162:45:0;23171:6;-1:-1:-1;;;;;23162:45:0;;23190:16;23162:45;;;;;;;;;;;;;;;;;;23222:18;;23218:103;;23262:47;;;;;;;;23287:4;;-1:-1:-1;;;;;23262:47:0;;;;;;;;;;;;23218:103;23331:15;:13;:15::i;:::-;21905:1449;;;;;;;;:::o;7710:132::-;7768:7;7795:39;7799:1;7802;7795:39;;;;;;;;;;;;;;;;;:3;:39::i;7114:136::-;7172:7;7199:43;7203:1;7206;7199:43;;;;;;;;;;;;;;;;;:3;:43::i;23827:186::-;23888:10;;23884:122;;23912:23;23928:6;23912:15;:23::i;:::-;23969:16;;:28;;23990:6;23969:20;:28::i;:::-;23950:16;:47;23827:186;:::o;24021:206::-;24087:10;;24083:137;;24111:28;24132:6;24111:20;:28::i;:::-;24178:21;;:33;;24204:6;24178:25;:33::i;:::-;24154:21;:57;24021:206;:::o;21372:510::-;21552:15;;21520:62;;21537:4;;-1:-1:-1;;;;;21552:15:0;21570:11;21520:8;:62::i;:::-;21625:15;;21829:4;;21625:249;;;-1:-1:-1;;;21625:249:0;;21697:4;21625:249;;;;;;;;;;:15;:249;;;;;;;;;;-1:-1:-1;;;;;21829:4:0;;;21625:249;;;;21848:15;21625:249;;;;;;:15;;;;;:31;;21664:9;;21625:249;;;;;;;;;;;;;;;21664:9;21625:15;:249;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;21372:510:0:o;16630:229::-;16676:9;;:14;:29;;;;-1:-1:-1;16694:6:0;;:11;16676:29;16673:41;;;16707:7;;16673:41;16753:9;;;16734:16;:28;16790:6;;;16773:14;:23;-1:-1:-1;16817:13:0;;;;16841:10;16630:229;:::o;7456:246::-;7514:7;7538:6;7534:47;;-1:-1:-1;7568:1:0;7561:8;;7534:47;7603:5;;;7607:1;7603;:5;:1;7627:5;;;;;:10;7619:56;;;;-1:-1:-1;;;7619:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13490:351;13589:18;13599:7;13589:9;:18::i;:::-;13573:12;:34;;13564:44;;;;;;-1:-1:-1;;;;;13638:16:0;;;;;;:7;:16;;;;;;:34;;13659:12;13638:20;:34::i;:::-;-1:-1:-1;;;;;13619:16:0;;;;;;:7;:16;;;;;:53;13693:7;;:25;;13705:12;13693:11;:25::i;:::-;13683:7;:35;13744:12;;:30;;13761:12;13744:16;:30::i;:::-;13729:12;:45;13790:43;;;;;;;;13816:1;;-1:-1:-1;;;;;13790:43:0;;;;;;;;;;;;13490:351;;:::o;16871:114::-;16927:16;;16915:9;:28;16963:14;;16954:6;:23;16871:114::o;7850:189::-;7936:7;7971:12;7964:5;7956:28;;;;-1:-1:-1;;;7956:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7995:9;8011:1;8007;:5;;;;;;;7850:189;-1:-1:-1;;;;;7850:189:0:o;26035:549::-;26124:16;;;26138:1;26124:16;;;;;;;;;26100:21;;26124:16;;;;;;;;;;-1:-1:-1;26124:16:0;26100:40;;26169:4;26151;26156:1;26151:7;;;;;;;;-1:-1:-1;;;;;26151:23:0;;;:7;;;;;;;;;;:23;;;;26195:15;;:22;;;-1:-1:-1;;;26195:22:0;;;;:15;;;;;:20;;:22;;;;;26151:7;;26195:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26195:22:0;26185:7;;:4;;26190:1;;26185:7;;;;;;-1:-1:-1;;;;;26185:32:0;;;:7;;;;;;;;;:32;26246:4;;26228:7;;26246:4;;;26228;;26233:1;;26228:7;;;;;;-1:-1:-1;;;;;26228:23:0;;;:7;;;;;;;;;:23;26296:15;;26264:62;;26281:4;;26296:15;26314:11;26264:8;:62::i;:::-;26339:15;;26515:4;;26339:237;;-1:-1:-1;;;26339:237:0;;;;;;;;-1:-1:-1;26339:237:0;;;;;;-1:-1:-1;;;;;26515:4:0;;;26339:237;;;;;;26550:15;26339:237;;;;;;;;;;;;;;;;;;;;;:15;;;;;:69;;:237;;-1:-1:-1;;26339:237:0;;;;;;;;;;-1:-1:-1;26339:237:0;;;;;;;;-1:-1:-1;26339:237:0;;;;;;;;;;;;;;;;25452:575;25546:16;;;25560:1;25546:16;;;;;;;;;25522:21;;25546:16;;;;;;;;;;-1:-1:-1;25546:16:0;25522:40;;25591:4;25573;25578:1;25573:7;;;;;;;;-1:-1:-1;;;;;25573:23:0;;;:7;;;;;;;;;;:23;;;;25617:15;;:22;;;-1:-1:-1;;;25617:22:0;;;;:15;;;;;:20;;:22;;;;;25573:7;;25617:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25617:22:0;25607:7;;:4;;25612:1;;25607:7;;;;;;-1:-1:-1;;;;;25607:32:0;;;:7;;;;;;;;;:32;25668:16;;25650:7;;25668:16;;;25650:4;;25655:1;;25650:7;;;;;;-1:-1:-1;;;;;25650:35:0;;;:7;;;;;;;;;:35;25730:15;;25698:62;;25715:4;;25730:15;25748:11;25698:8;:62::i;:::-;25773:15;;25949:13;;25773:246;;-1:-1:-1;;;25773:246:0;;;;;;;;-1:-1:-1;25773:246:0;;;;;;-1:-1:-1;;;;;25949:13:0;;;25773:246;;;;;;25993:15;25773:246;;;;;;;;;;;;;;;;;;;;;:15;;;;;:69;;:246;;-1:-1:-1;;25773:246:0;;;;;;;;;;-1:-1:-1;25773:246:0;;;;;;;;-1:-1:-1;25773:246:0;;;;;;;;;;;;;;;

Swarm Source

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