ETH Price: $3,273.09 (-11.68%)

Token

Tornado Inu (TORNADO)
 

Overview

Max Total Supply

9,000,000 TORNADO

Holders

76

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
73,972.17163173 TORNADO

Value
$0.00
0x913f8ecf4d9a0240514c1188d44b149a63119a69
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:
TORNADO

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-06
*/

pragma solidity >=0.7.0 <0.8.0;
// SPDX-License-Identifier: Unlicensed
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);
}

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

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

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
}


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

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

    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    mapping (address => bool) private _isBlacklisted;

    address[] private _excluded;  
    bool public tradingLive = false;
   
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 9000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 public _TORNADO_Burned;

    string private _name = "Tornado Inu";
    string private _symbol = "TORNADO";
    uint8 private _decimals = 9;
    
    address payable private _marketingWallet;
    address payable private _dWallet;

    uint256 public firstLiveBlock;
    uint256 public _taxFee = 12; 
    uint256 public _liquidityMarketingFee = 4;
    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousLiquidityMarketingFee = _liquidityMarketingFee;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public antiBotLaunch = false;
    
    uint256 public _maxTxAmount = 87500 * 10**9;
    uint256 public _maxHoldings = 257500 * 10**9;
    bool public maxHoldingsEnabled = true;
    bool public maxTXEnabled = true;
    bool public antiSnipe = true;
    uint256 public numTokensSellToAddToLiquidity = 2000 * 10**9;
    
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //Uni V2
         // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());

        // set the rest of the contract variables
        uniswapV2Router = _uniswapV2Router;
        
        //exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;

        _marketingWallet = 0x60EB0f1cb44eBfFb3eE6c3Ef4Ca71c8b7c9521BC;
        _dWallet = 0x212D72cf77797d60D418A063b48da9c93210269F;
        
        emit Transfer(address(0xd11277d411f138a67dc44B1FcD8a48C447d753E4), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

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

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

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }
    
    function airdrop(address recipient, uint256 amount) external onlyOwner() {
        removeAllFee();
        _transfer(_msgSender(), recipient, amount * 10**9);
        restoreAllFee();
    }
    
    function airdropInternal(address recipient, uint256 amount) internal {
        removeAllFee();
        _transfer(_msgSender(), recipient, amount);
        restoreAllFee();
    }
    
    function airdropArray(address[] calldata newholders, uint256[] calldata amounts) external onlyOwner(){
        uint256 iterator = 0;
        require(newholders.length == amounts.length, "must be the same length");
        while(iterator < newholders.length){
            airdropInternal(newholders[iterator], amounts[iterator] * 10**9);
            iterator += 1;
        }
    }

    function burnTORNADO(uint amount) external {  
        address account = msg.sender;
        require( amount <= balanceOf(account));
        uint256 currentRate = _getRate();
        uint256 tBurn = amount;
        uint256 rBurn = tBurn.mul(currentRate);
        if(_isExcluded[account]){
            _tOwned[account] = _tOwned[account].sub(tBurn);
        }
        _rOwned[account] = _rOwned[account].sub(rBurn);
        _tTotal = _tTotal.sub(tBurn);
        _rTotal = _rTotal.sub(rBurn);
        _TORNADO_Burned = _TORNADO_Burned.add(tBurn);
    }
    function spinTORNADO(uint amount) external {  
        address account = tx.origin;
        require( amount <= balanceOf(account));
        uint256 currentRate = _getRate();
        uint256 tBurn = amount;
        uint256 rBurn = tBurn.mul(currentRate);
        if(_isExcluded[account]){
            _tOwned[account] = _tOwned[account].sub(tBurn);
        }
        _rOwned[account] = _rOwned[account].sub(rBurn);
        _tTotal = _tTotal.sub(tBurn);
        _rTotal = _rTotal.sub(rBurn);
        _TORNADO_Burned = _TORNADO_Burned.add(tBurn);
    }

    function distributeToAllHolders(uint256 tAmount) external {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

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

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function excludeFromReward(address account) external onlyOwner() {
        // require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.');
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }    
    
    function excludeFromFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    function includeInFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function setMarketingWallet(address payable _address) external onlyOwner {
        _marketingWallet = _address;
    }
    function setDWallet(address payable _address) external onlyOwner {
        _dWallet = _address;
    }
       
    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount * 10**9;
    }

    function setMaxHoldings(uint256 maxHoldings) external onlyOwner() {
        _maxHoldings = maxHoldings * 10**9;
    }
    function setMaxTXEnabled(bool enabled) external onlyOwner() {
        maxTXEnabled = enabled;
    }
    
    function setMaxHoldingsEnabled(bool enabled) external onlyOwner() {
        maxHoldingsEnabled = enabled;
    }
    
    function setAntiSnipe(bool enabled) external onlyOwner() {
        antiSnipe = enabled;
    }
    
    function setSwapThresholdAmount(uint256 SwapThresholdAmount) external onlyOwner() {
        numTokensSellToAddToLiquidity = SwapThresholdAmount * 10**9;
    }
    
    function claimETH (address walletaddress) external onlyOwner {
        // make sure we capture all ETH that may or may not be sent to this contract
        payable(walletaddress).transfer(address(this).balance);
    }
    
    function claimAltTokens(IERC20 tokenAddress, address walletaddress) external onlyOwner() {
        tokenAddress.transfer(walletaddress, tokenAddress.balanceOf(address(this)));
    }
    
    function clearStuckBalance (address payable walletaddress) external onlyOwner() {
        walletaddress.transfer(address(this).balance);
    }
    
    function blacklist(address _address) external onlyOwner() {
        _isBlacklisted[_address] = true;
    }
    
    function removeFromBlacklist(address _address) external onlyOwner() {
        _isBlacklisted[_address] = false;
    }
    
    function getIsBlacklistedStatus(address _address) external view returns (bool) {
        return _isBlacklisted[_address];
    }
    
    function allowtrading() external onlyOwner() {
        tradingLive = true;
        firstLiveBlock = block.number;        
    }

    function setSwapAndLiquifyEnabled(bool _enabled) external onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }
    
     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity);
    }

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(_taxFee).div(100);
        uint256 tLiquidity = tAmount.mul(_liquidityMarketingFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity);
        return (tTransferAmount, tFee, tLiquidity);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
    
    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate =  _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }
    
    function removeAllFee() private {
        if(_taxFee == 0 && _liquidityMarketingFee == 0) return;
        
        _previousTaxFee = _taxFee;
        _previousLiquidityMarketingFee = _liquidityMarketingFee;
        
        _taxFee = 0;
        _liquidityMarketingFee = 0;
    }
    
    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _liquidityMarketingFee = _previousLiquidityMarketingFee;
    }
    
    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

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


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

        if(maxTXEnabled){
            if(from != owner() && to != owner()){
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }
        }

        if(antiSnipe){
            if(from == uniswapV2Pair && to != address(uniswapV2Router) && to != address(this)){
            require( tx.origin == to);
            }
        }

        if(maxHoldingsEnabled){
            if(from == uniswapV2Pair && from != owner() && to != owner() && to != address(uniswapV2Router) && to != address(this)) {
                uint balance = balanceOf(to);
                require(balance.add(amount) <= _maxHoldings);
            }
        }

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

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

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint tokensForLiq = (contractTokenBalance.div(3));
        uint tokensDAFMARKDEV = contractTokenBalance.sub(tokensForLiq).sub(1);

        uint256 half = tokensForLiq.div(2);
        uint256 otherHalf = tokensForLiq.sub(half);
        uint256 initialBalance = address(this).balance;
        swapTokensForEth(half);
        uint256 newBalance = address(this).balance.sub(initialBalance);
        addLiquidity(otherHalf, newBalance);

        uint256 nextBalance = address(this).balance;
        swapTokensForEth(tokensDAFMARKDEV);
        uint256 newestBalance = address(this).balance.sub(nextBalance);
        uint256 DAFGOVIDO = newestBalance.mul(4).div(9);
        uint marketing = newestBalance.sub(DAFGOVIDO).mul(3).div(5);

        payable(owner()).transfer(DAFGOVIDO);
        payable(_marketingWallet).transfer(marketing);
        payable(_dWallet).transfer(address(this).balance);   
        
        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
            owner(),
            block.timestamp
        );
    }

    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
        require(!_isBlacklisted[sender] && !_isBlacklisted[recipient]);

        if(antiBotLaunch){
            if(block.number <= firstLiveBlock && sender == uniswapV2Pair && recipient != address(uniswapV2Router) && recipient != address(this)){
                _isBlacklisted[recipient] = true;
            }
        }

        if(!tradingLive){
            require(sender == owner()); // only owner allowed to trade or add liquidity
        }       

        if(!takeFee)
            removeAllFee();
        
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }                
        
        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);           
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);        
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
}

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":"_TORNADO_Burned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"newholders","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropArray","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":[],"name":"allowtrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"antiBotLaunch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiSnipe","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"_address","type":"address"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnTORNADO","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenAddress","type":"address"},{"internalType":"address","name":"walletaddress","type":"address"}],"name":"claimAltTokens","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"distributeToAllHolders","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"firstLiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldingsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTXEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setAntiSnipe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"}],"name":"setDWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxHoldings","type":"uint256"}],"name":"setMaxHoldings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setMaxHoldingsEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setMaxTXEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"spinTORNADO","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"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"}]

6009805460ff19169055661ff973cafa8000600a556607222fb4d4ffff19600b90815561010060405260c08190526a546f726e61646f20496e7560a81b60e09081526200005091600e91906200044f565b5060408051808201909152600780825266544f524e41444f60c81b60209092019182526200008191600f916200044f565b506010805460ff19908116600917909155600c6013819055600460148190556015919091556016556017805462ff00001961ff00199182166101009081178216909355654f94ae6af80060185565ea31e4079800601955601a805490941660011790911690911716620100001790556501d1a94a2000601b553480156200010757600080fd5b506000620001146200043c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600b54600260006200016f6200043c565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001e657600080fd5b505afa158015620001fb573d6000803e3d6000fd5b505050506040513d60208110156200021257600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b1580156200026357600080fd5b505afa15801562000278573d6000803e3d6000fd5b505050506040513d60208110156200028f57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b158015620002e257600080fd5b505af1158015620002f7573d6000803e3d6000fd5b505050506040513d60208110156200030e57600080fd5b50516001600160601b0319606091821b811660a0529082901b166080526001600560006200033b62000440565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526005909252902080549091166001179055601080547460eb0f1cb44ebffb3ee6c3ef4ca71c8b7c9521bc00610100600160a81b0319909116179055601180546001600160a01b03191673212d72cf77797d60d418a063b48da9c93210269f179055620003d56200043c565b6001600160a01b031673d11277d411f138a67dc44b1fcd8a48c447d753e46001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a546040518082815260200191505060405180910390a350620004fb565b3390565b6000546001600160a01b031690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620004875760008555620004d2565b82601f10620004a257805160ff1916838001178555620004d2565b82800160010185558215620004d2579182015b82811115620004d2578251825591602001919060010190620004b5565b50620004e0929150620004e4565b5090565b5b80821115620004e05760008155600101620004e5565b60805160601c60a05160601c61393362000561600039806115f752806125d7528061268452806127bc5280612d9b525080610f865280612613528061270a5280612dd8528061314c5280613204528061322b5280613311528061333852506139336000f3fe6080604052600436106103855760003560e01c80635ae9e94b116101d157806395f6f56711610102578063d12a7688116100a0578063e0abe9121161006f578063e0abe91214610cc4578063ea2f0b3714610cf7578063ec28438a14610d2a578063f9f92be414610d545761038c565b8063d12a768814610b90578063d4a3883f14610ba5578063dcebf63b14610c74578063dd62ed3e14610c895761038c565b8063a9059cbb116100dc578063a9059cbb14610aec578063aafeb2ce14610b25578063c41ba81014610b4f578063c49b9a8014610b645761038c565b806395f6f56714610a72578063a457c2d714610a9e578063a633423114610ad75761038c565b80637d1db4a51161016f57806388f820201161014957806388f82020146109dc5780638ba4cc3c14610a0f5780638da5cb5b14610a4857806395d89b4114610a5d5761038c565b80637d1db4a5146109b25780637e66c0b91461097f57806381a6731a146109c75761038c565b806370a08231116101ab57806370a082311461090b578063715018a61461093e578063725e076914610953578063764d72bf1461097f5761038c565b80635ae9e94b146108845780635bb12424146108ae5780635d098b38146108d85761038c565b8063313ce567116102b6578063437823ec116102545780634e45e92a116102235780634e45e92a146107d657806352390c02146107eb5780635342acb41461081e578063537df3b6146108515761038c565b8063437823ec146107475780634549b0391461077a57806349bd5a5e146107ac5780634a74bb02146107c15761038c565b80633b124fe7116102905780633b124fe7146106b65780633f9b7607146106cb578063413550e314610706578063423ad375146107325761038c565b8063313ce5671461061f5780633685d4191461064a578063395093511461067d5761038c565b806312e395f71161032357806318160ddd116102fd57806318160ddd1461057357806323b872dd1461058857806329e04b4a146105cb5780632d838119146105f55761038c565b806312e395f71461050157806313114a9d1461052d5780631694505e146105425761038c565b8063095d2d331161035f578063095d2d3314610489578063095ea7b31461049e57806311704f52146104d757806312db0016146104ec5761038c565b806306fdde031461039157806308296a631461041b578063084e4f8a146104425761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103a6610d87565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103e05781810151838201526020016103c8565b50505050905090810190601f16801561040d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042757600080fd5b50610430610e1d565b60408051918252519081900360200190f35b34801561044e57600080fd5b506104756004803603602081101561046557600080fd5b50356001600160a01b0316610e23565b604080519115158252519081900360200190f35b34801561049557600080fd5b50610430610e45565b3480156104aa57600080fd5b50610475600480360360408110156104c157600080fd5b506001600160a01b038135169060200135610e4b565b3480156104e357600080fd5b50610475610e69565b3480156104f857600080fd5b50610475610e72565b34801561050d57600080fd5b5061052b6004803603602081101561052457600080fd5b5035610e7b565b005b34801561053957600080fd5b50610430610f7e565b34801561054e57600080fd5b50610557610f84565b604080516001600160a01b039092168252519081900360200190f35b34801561057f57600080fd5b50610430610fa8565b34801561059457600080fd5b50610475600480360360608110156105ab57600080fd5b506001600160a01b03813581169160208101359091169060400135610fae565b3480156105d757600080fd5b5061052b600480360360208110156105ee57600080fd5b5035611035565b34801561060157600080fd5b506104306004803603602081101561061857600080fd5b5035611098565b34801561062b57600080fd5b506106346110f8565b6040805160ff9092168252519081900360200190f35b34801561065657600080fd5b5061052b6004803603602081101561066d57600080fd5b50356001600160a01b0316611101565b34801561068957600080fd5b50610475600480360360408110156106a057600080fd5b506001600160a01b0381351690602001356112c2565b3480156106c257600080fd5b50610430611310565b3480156106d757600080fd5b5061052b600480360360408110156106ee57600080fd5b506001600160a01b0381358116916020013516611316565b34801561071257600080fd5b5061052b6004803603602081101561072957600080fd5b50351515611476565b34801561073e57600080fd5b506104306114e1565b34801561075357600080fd5b5061052b6004803603602081101561076a57600080fd5b50356001600160a01b03166114e7565b34801561078657600080fd5b506104306004803603604081101561079d57600080fd5b50803590602001351515611563565b3480156107b857600080fd5b506105576115f5565b3480156107cd57600080fd5b50610475611619565b3480156107e257600080fd5b50610475611627565b3480156107f757600080fd5b5061052b6004803603602081101561080e57600080fd5b50356001600160a01b0316611635565b34801561082a57600080fd5b506104756004803603602081101561084157600080fd5b50356001600160a01b03166117bb565b34801561085d57600080fd5b5061052b6004803603602081101561087457600080fd5b50356001600160a01b03166117d9565b34801561089057600080fd5b5061052b600480360360208110156108a757600080fd5b5035611852565b3480156108ba57600080fd5b5061052b600480360360208110156108d157600080fd5b50356118b5565b3480156108e457600080fd5b5061052b600480360360208110156108fb57600080fd5b50356001600160a01b03166118bf565b34801561091757600080fd5b506104306004803603602081101561092e57600080fd5b50356001600160a01b031661193f565b34801561094a57600080fd5b5061052b6119a1565b34801561095f57600080fd5b5061052b6004803603602081101561097657600080fd5b50351515611a43565b34801561098b57600080fd5b5061052b600480360360208110156109a257600080fd5b50356001600160a01b0316611ab7565b3480156109be57600080fd5b50610430611b44565b3480156109d357600080fd5b50610430611b4a565b3480156109e857600080fd5b50610475600480360360208110156109ff57600080fd5b50356001600160a01b0316611b50565b348015610a1b57600080fd5b5061052b60048036036040811015610a3257600080fd5b506001600160a01b038135169060200135611b6e565b348015610a5457600080fd5b50610557611bee565b348015610a6957600080fd5b506103a6611bfd565b348015610a7e57600080fd5b5061052b60048036036020811015610a9557600080fd5b50351515611c5e565b348015610aaa57600080fd5b5061047560048036036040811015610ac157600080fd5b506001600160a01b038135169060200135611cd0565b348015610ae357600080fd5b5061052b611d38565b348015610af857600080fd5b5061047560048036036040811015610b0f57600080fd5b506001600160a01b038135169060200135611da3565b348015610b3157600080fd5b5061052b60048036036020811015610b4857600080fd5b5035611db7565b348015610b5b57600080fd5b50610475611e91565b348015610b7057600080fd5b5061052b60048036036020811015610b8757600080fd5b50351515611ea0565b348015610b9c57600080fd5b50610430611f47565b348015610bb157600080fd5b5061052b60048036036040811015610bc857600080fd5b810190602081018135640100000000811115610be357600080fd5b820183602082011115610bf557600080fd5b80359060200191846020830284011164010000000083111715610c1757600080fd5b919390929091602081019035640100000000811115610c3557600080fd5b820183602082011115610c4757600080fd5b80359060200191846020830284011164010000000083111715610c6957600080fd5b509092509050611f4d565b348015610c8057600080fd5b5061047561204f565b348015610c9557600080fd5b5061043060048036036040811015610cac57600080fd5b506001600160a01b038135811691602001351661205e565b348015610cd057600080fd5b5061052b60048036036020811015610ce757600080fd5b50356001600160a01b0316612089565b348015610d0357600080fd5b5061052b60048036036020811015610d1a57600080fd5b50356001600160a01b0316612103565b348015610d3657600080fd5b5061052b60048036036020811015610d4d57600080fd5b503561217c565b348015610d6057600080fd5b5061052b60048036036020811015610d7757600080fd5b50356001600160a01b03166121df565b600e8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e135780601f10610de857610100808354040283529160200191610e13565b820191906000526020600020905b815481529060010190602001808311610df657829003601f168201915b5050505050905090565b600d5481565b6001600160a01b03811660009081526007602052604090205460ff165b919050565b60195481565b6000610e5f610e5861225b565b848461225f565b5060015b92915050565b60095460ff1681565b601a5460ff1681565b32610e858161193f565b821115610e9157600080fd5b6000610e9b61234b565b9050826000610eaa828461236e565b6001600160a01b03851660009081526006602052604090205490915060ff1615610f0b576001600160a01b038416600090815260036020526040902054610ef190836123c7565b6001600160a01b0385166000908152600360205260409020555b6001600160a01b038416600090815260026020526040902054610f2e90826123c7565b6001600160a01b038516600090815260026020526040902055600a54610f5490836123c7565b600a55600b54610f6490826123c7565b600b55600d54610f749083612409565b600d555050505050565b600c5490565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a5490565b6000610fbb848484612463565b61102b84610fc761225b565b611026856040518060600160405280602881526020016137f3602891396001600160a01b038a1660009081526004602052604081209061100561225b565b6001600160a01b031681526020810191909152604001600020549190612876565b61225f565b5060019392505050565b61103d61225b565b6000546001600160a01b0390811691161461108d576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b633b9aca0002601b55565b6000600b548211156110db5760405162461bcd60e51b815260040180806020018281038252602a81526020018061375e602a913960400191505060405180910390fd5b60006110e561234b565b90506110f1838261290d565b9392505050565b60105460ff1690565b61110961225b565b6000546001600160a01b03908116911614611159576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526006602052604090205460ff166111c6576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b6008548110156112be57816001600160a01b0316600882815481106111ea57fe5b6000918252602090912001546001600160a01b031614156112b65760088054600019810190811061121757fe5b600091825260209091200154600880546001600160a01b03909216918390811061123d57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600382526040808220829055600690925220805460ff19169055600880548061128f57fe5b600082815260209020810160001990810180546001600160a01b03191690550190556112be565b6001016111c9565b5050565b6000610e5f6112cf61225b565b8461102685600460006112e061225b565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490612409565b60135481565b61131e61225b565b6000546001600160a01b0390811691161461136e576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b816001600160a01b031663a9059cbb82846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156113cb57600080fd5b505afa1580156113df573d6000803e3d6000fd5b505050506040513d60208110156113f557600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b15801561144657600080fd5b505af115801561145a573d6000803e3d6000fd5b505050506040513d602081101561147057600080fd5b50505050565b61147e61225b565b6000546001600160a01b039081169116146114ce576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b601a805460ff1916911515919091179055565b60125481565b6114ef61225b565b6000546001600160a01b0390811691161461153f576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000600a548311156115bc576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b816115db5760006115cc8461294f565b50939550610e63945050505050565b60006115e68461294f565b50929550610e63945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601754610100900460ff1681565b601a54610100900460ff1681565b61163d61225b565b6000546001600160a01b0390811691161461168d576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526006602052604090205460ff16156116fb576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090205415611755576001600160a01b03811660009081526002602052604090205461173b90611098565b6001600160a01b0382166000908152600360205260409020555b6001600160a01b03166000818152600660205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6001600160a01b031660009081526005602052604090205460ff1690565b6117e161225b565b6000546001600160a01b03908116911614611831576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600760205260409020805460ff19169055565b61185a61225b565b6000546001600160a01b039081169116146118aa576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b633b9aca0002601955565b33610e858161193f565b6118c761225b565b6000546001600160a01b03908116911614611917576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b601080546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b03811660009081526006602052604081205460ff161561197f57506001600160a01b038116600090815260036020526040902054610e40565b6001600160a01b038216600090815260026020526040902054610e6390611098565b6119a961225b565b6000546001600160a01b039081169116146119f9576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b611a4b61225b565b6000546001600160a01b03908116911614611a9b576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b601a8054911515620100000262ff000019909216919091179055565b611abf61225b565b6000546001600160a01b03908116911614611b0f576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b6040516001600160a01b038216904780156108fc02916000818181858888f193505050501580156112be573d6000803e3d6000fd5b60185481565b60145481565b6001600160a01b031660009081526006602052604090205460ff1690565b611b7661225b565b6000546001600160a01b03908116911614611bc6576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b611bce61299e565b611be6611bd961225b565b8383633b9aca0002612463565b6112be6129d0565b6000546001600160a01b031690565b600f8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e135780601f10610de857610100808354040283529160200191610e13565b611c6661225b565b6000546001600160a01b03908116911614611cb6576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b601a80549115156101000261ff0019909216919091179055565b6000610e5f611cdd61225b565b84611026856040518060600160405280602581526020016138d96025913960046000611d0761225b565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612876565b611d4061225b565b6000546001600160a01b03908116911614611d90576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b6009805460ff1916600117905543601255565b6000610e5f611db061225b565b8484612463565b6000611dc161225b565b6001600160a01b03811660009081526006602052604090205490915060ff1615611e1c5760405162461bcd60e51b815260040180806020018281038252602c8152602001806138ad602c913960400191505060405180910390fd5b6000611e278361294f565b505050506001600160a01b038416600090815260026020526040902054919250611e53919050826123c7565b6001600160a01b038316600090815260026020526040902055600b54611e7990826123c7565b600b55600c54611e899084612409565b600c55505050565b601a5462010000900460ff1681565b611ea861225b565b6000546001600160a01b03908116911614611ef8576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b60178054821515610100810261ff00199092169190911790915560408051918252517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599181900360200190a150565b601b5481565b611f5561225b565b6000546001600160a01b03908116911614611fa5576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b6000838214611ffb576040805162461bcd60e51b815260206004820152601760248201527f6d757374206265207468652073616d65206c656e677468000000000000000000604482015290519081900360640190fd5b838110156120485761204085858381811061201257fe5b905060200201356001600160a01b031684848481811061202e57fe5b90506020020135633b9aca00026129de565b600101611ffb565b5050505050565b60175462010000900460ff1681565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b61209161225b565b6000546001600160a01b039081169116146120e1576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b61210b61225b565b6000546001600160a01b0390811691161461215b576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600560205260409020805460ff19169055565b61218461225b565b6000546001600160a01b039081169116146121d4576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b633b9aca0002601855565b6121e761225b565b6000546001600160a01b03908116911614612237576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b3390565b6001600160a01b0383166122a45760405162461bcd60e51b81526004018080602001828103825260248152602001806138896024913960400191505060405180910390fd5b6001600160a01b0382166122e95760405162461bcd60e51b81526004018080602001828103825260228152602001806137886022913960400191505060405180910390fd5b6001600160a01b03808416600081815260046020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60008060006123586129f8565b9092509050612367828261290d565b9250505090565b60008261237d57506000610e63565b8282028284828161238a57fe5b04146110f15760405162461bcd60e51b81526004018080602001828103825260218152602001806137d26021913960400191505060405180910390fd5b60006110f183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612876565b6000828201838110156110f1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b0383166124a85760405162461bcd60e51b81526004018080602001828103825260258152602001806138646025913960400191505060405180910390fd5b6001600160a01b0382166124ed5760405162461bcd60e51b815260040180806020018281038252602381526020018061373b6023913960400191505060405180910390fd5b6000811161252c5760405162461bcd60e51b815260040180806020018281038252602981526020018061383b6029913960400191505060405180910390fd5b601a54610100900460ff16156125c457612544611bee565b6001600160a01b0316836001600160a01b03161415801561257e5750612568611bee565b6001600160a01b0316826001600160a01b031614155b156125c4576018548111156125c45760405162461bcd60e51b81526004018080602001828103825260288152602001806137aa6028913960400191505060405180910390fd5b601a5462010000900460ff1615612677577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614801561264857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b801561265d57506001600160a01b0382163014155b1561267757326001600160a01b0383161461267757600080fd5b601a5460ff1615612781577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161480156126dc57506126c6611bee565b6001600160a01b0316836001600160a01b031614155b801561270157506126eb611bee565b6001600160a01b0316826001600160a01b031614155b801561273f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b801561275457506001600160a01b0382163014155b156127815760006127648361193f565b6019549091506127748284612409565b111561277f57600080fd5b505b600061278c3061193f565b9050601854811061279c57506018545b601b54811080159081906127b3575060175460ff16155b80156127f157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b80156128045750601754610100900460ff165b1561281757601b54915061281782612b5b565b6001600160a01b03851660009081526005602052604090205460019060ff168061285957506001600160a01b03851660009081526005602052604090205460ff165b15612862575060005b61286e86868684612d30565b505050505050565b600081848411156129055760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156128ca5781810151838201526020016128b2565b50505050905090810190601f1680156128f75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60006110f183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612fe8565b60008060008060008060008060006129668a61304d565b92509250925060008060006129848d868661297f61234b565b6130ab565b919f909e50909c50959a5093985091965092945050505050565b6013541580156129ae5750601454155b156129b8576129ce565b6013805460155560148054601655600091829055555b565b601554601355601654601455565b6129e661299e565b611be66129f161225b565b8383612463565b600b54600a546000918291825b600854811015612b2957826002600060088481548110612a2157fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612a865750816003600060088481548110612a5f57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612a9d57600b54600a5494509450505050612b57565b612add6002600060088481548110612ab157fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906123c7565b9250612b1f6003600060088481548110612af357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906123c7565b9150600101612a05565b50600a54600b54612b399161290d565b821015612b5157600b54600a54935093505050612b57565b90925090505b9091565b6017805460ff191660011790556000612b7582600361290d565b90506000612b8e6001612b8885856123c7565b906123c7565b90506000612b9d83600261290d565b90506000612bab84836123c7565b905047612bb7836130fb565b6000612bc347836123c7565b9050612bcf838261330b565b47612bd9866130fb565b6000612be547836123c7565b90506000612bff6009612bf984600461236e565b9061290d565b90506000612c1d6005612bf96003612c1787876123c7565b9061236e565b9050612c27611bee565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015612c5f573d6000803e3d6000fd5b506010546040516101009091046001600160a01b0316906108fc8315029083906000818181858888f19350505050158015612c9e573d6000803e3d6000fd5b506011546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612cd8573d6000803e3d6000fd5b50604080518981526020810187905280820189905290517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a150506017805460ff19169055505050505050505050565b6001600160a01b03841660009081526007602052604090205460ff16158015612d7257506001600160a01b03831660009081526007602052604090205460ff16155b612d7b57600080fd5b60175462010000900460ff1615612e4b576012544311158015612dcf57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316145b8015612e0d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b8015612e2257506001600160a01b0383163014155b15612e4b576001600160a01b0383166000908152600760205260409020805460ff191660011790555b60095460ff16612e7a57612e5d611bee565b6001600160a01b0316846001600160a01b031614612e7a57600080fd5b80612e8757612e8761299e565b6001600160a01b03841660009081526006602052604090205460ff168015612ec857506001600160a01b03831660009081526006602052604090205460ff16155b15612edd57612ed8848484613409565b612fdb565b6001600160a01b03841660009081526006602052604090205460ff16158015612f1e57506001600160a01b03831660009081526006602052604090205460ff165b15612f2e57612ed884848461352d565b6001600160a01b03841660009081526006602052604090205460ff16158015612f7057506001600160a01b03831660009081526006602052604090205460ff16155b15612f8057612ed88484846135d6565b6001600160a01b03841660009081526006602052604090205460ff168015612fc057506001600160a01b03831660009081526006602052604090205460ff165b15612fd057612ed884848461361a565b612fdb8484846135d6565b80611470576114706129d0565b600081836130375760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156128ca5781810151838201526020016128b2565b50600083858161304357fe5b0495945050505050565b60008060008061306d6064612bf96013548861236e90919063ffffffff16565b9050600061308b6064612bf96014548961236e90919063ffffffff16565b9050600061309d82612b8889866123c7565b979296509094509092505050565b60008080806130ba888661236e565b905060006130c8888761236e565b905060006130d6888861236e565b905060006130e882612b8886866123c7565b939b939a50919850919650505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061312a57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156131a357600080fd5b505afa1580156131b7573d6000803e3d6000fd5b505050506040513d60208110156131cd57600080fd5b50518151829060019081106131de57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050613229307f00000000000000000000000000000000000000000000000000000000000000008461225f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156132ce5781810151838201526020016132b6565b505050509050019650505050505050600060405180830381600087803b1580156132f757600080fd5b505af115801561286e573d6000803e3d6000fd5b613336307f00000000000000000000000000000000000000000000000000000000000000008461225f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d719823085600080613373611bee565b426040518863ffffffff1660e01b815260040180876001600160a01b03168152602001868152602001858152602001848152602001836001600160a01b0316815260200182815260200196505050505050506060604051808303818588803b1580156133de57600080fd5b505af11580156133f2573d6000803e3d6000fd5b50505050506040513d606081101561147057600080fd5b60008060008060008061341b8761294f565b6001600160a01b038f16600090815260036020526040902054959b5093995091975095509350915061344d90886123c7565b6001600160a01b038a1660009081526003602090815260408083209390935560029052205461347c90876123c7565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546134ab9086612409565b6001600160a01b0389166000908152600260205260409020556134cd8161368d565b6134d78483613716565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061353f8761294f565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061357190876123c7565b6001600160a01b03808b16600090815260026020908152604080832094909455918b168152600390915220546135a79084612409565b6001600160a01b0389166000908152600360209081526040808320939093556002905220546134ab9086612409565b6000806000806000806135e88761294f565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061347c90876123c7565b60008060008060008061362c8761294f565b6001600160a01b038f16600090815260036020526040902054959b5093995091975095509350915061365e90886123c7565b6001600160a01b038a1660009081526003602090815260408083209390935560029052205461357190876123c7565b600061369761234b565b905060006136a5838361236e565b306000908152600260205260409020549091506136c29082612409565b3060009081526002602090815260408083209390935560069052205460ff161561371157306000908152600360205260409020546137009084612409565b306000908152600360205260409020555b505050565b600b5461372390836123c7565b600b55600c546137339082612409565b600c55505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e7345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220483ba913a203c1720d645a41605ac68c1bc3473948f269b3cb14d2f7bbf37e7864736f6c63430007060033

Deployed Bytecode

0x6080604052600436106103855760003560e01c80635ae9e94b116101d157806395f6f56711610102578063d12a7688116100a0578063e0abe9121161006f578063e0abe91214610cc4578063ea2f0b3714610cf7578063ec28438a14610d2a578063f9f92be414610d545761038c565b8063d12a768814610b90578063d4a3883f14610ba5578063dcebf63b14610c74578063dd62ed3e14610c895761038c565b8063a9059cbb116100dc578063a9059cbb14610aec578063aafeb2ce14610b25578063c41ba81014610b4f578063c49b9a8014610b645761038c565b806395f6f56714610a72578063a457c2d714610a9e578063a633423114610ad75761038c565b80637d1db4a51161016f57806388f820201161014957806388f82020146109dc5780638ba4cc3c14610a0f5780638da5cb5b14610a4857806395d89b4114610a5d5761038c565b80637d1db4a5146109b25780637e66c0b91461097f57806381a6731a146109c75761038c565b806370a08231116101ab57806370a082311461090b578063715018a61461093e578063725e076914610953578063764d72bf1461097f5761038c565b80635ae9e94b146108845780635bb12424146108ae5780635d098b38146108d85761038c565b8063313ce567116102b6578063437823ec116102545780634e45e92a116102235780634e45e92a146107d657806352390c02146107eb5780635342acb41461081e578063537df3b6146108515761038c565b8063437823ec146107475780634549b0391461077a57806349bd5a5e146107ac5780634a74bb02146107c15761038c565b80633b124fe7116102905780633b124fe7146106b65780633f9b7607146106cb578063413550e314610706578063423ad375146107325761038c565b8063313ce5671461061f5780633685d4191461064a578063395093511461067d5761038c565b806312e395f71161032357806318160ddd116102fd57806318160ddd1461057357806323b872dd1461058857806329e04b4a146105cb5780632d838119146105f55761038c565b806312e395f71461050157806313114a9d1461052d5780631694505e146105425761038c565b8063095d2d331161035f578063095d2d3314610489578063095ea7b31461049e57806311704f52146104d757806312db0016146104ec5761038c565b806306fdde031461039157806308296a631461041b578063084e4f8a146104425761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103a6610d87565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103e05781810151838201526020016103c8565b50505050905090810190601f16801561040d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042757600080fd5b50610430610e1d565b60408051918252519081900360200190f35b34801561044e57600080fd5b506104756004803603602081101561046557600080fd5b50356001600160a01b0316610e23565b604080519115158252519081900360200190f35b34801561049557600080fd5b50610430610e45565b3480156104aa57600080fd5b50610475600480360360408110156104c157600080fd5b506001600160a01b038135169060200135610e4b565b3480156104e357600080fd5b50610475610e69565b3480156104f857600080fd5b50610475610e72565b34801561050d57600080fd5b5061052b6004803603602081101561052457600080fd5b5035610e7b565b005b34801561053957600080fd5b50610430610f7e565b34801561054e57600080fd5b50610557610f84565b604080516001600160a01b039092168252519081900360200190f35b34801561057f57600080fd5b50610430610fa8565b34801561059457600080fd5b50610475600480360360608110156105ab57600080fd5b506001600160a01b03813581169160208101359091169060400135610fae565b3480156105d757600080fd5b5061052b600480360360208110156105ee57600080fd5b5035611035565b34801561060157600080fd5b506104306004803603602081101561061857600080fd5b5035611098565b34801561062b57600080fd5b506106346110f8565b6040805160ff9092168252519081900360200190f35b34801561065657600080fd5b5061052b6004803603602081101561066d57600080fd5b50356001600160a01b0316611101565b34801561068957600080fd5b50610475600480360360408110156106a057600080fd5b506001600160a01b0381351690602001356112c2565b3480156106c257600080fd5b50610430611310565b3480156106d757600080fd5b5061052b600480360360408110156106ee57600080fd5b506001600160a01b0381358116916020013516611316565b34801561071257600080fd5b5061052b6004803603602081101561072957600080fd5b50351515611476565b34801561073e57600080fd5b506104306114e1565b34801561075357600080fd5b5061052b6004803603602081101561076a57600080fd5b50356001600160a01b03166114e7565b34801561078657600080fd5b506104306004803603604081101561079d57600080fd5b50803590602001351515611563565b3480156107b857600080fd5b506105576115f5565b3480156107cd57600080fd5b50610475611619565b3480156107e257600080fd5b50610475611627565b3480156107f757600080fd5b5061052b6004803603602081101561080e57600080fd5b50356001600160a01b0316611635565b34801561082a57600080fd5b506104756004803603602081101561084157600080fd5b50356001600160a01b03166117bb565b34801561085d57600080fd5b5061052b6004803603602081101561087457600080fd5b50356001600160a01b03166117d9565b34801561089057600080fd5b5061052b600480360360208110156108a757600080fd5b5035611852565b3480156108ba57600080fd5b5061052b600480360360208110156108d157600080fd5b50356118b5565b3480156108e457600080fd5b5061052b600480360360208110156108fb57600080fd5b50356001600160a01b03166118bf565b34801561091757600080fd5b506104306004803603602081101561092e57600080fd5b50356001600160a01b031661193f565b34801561094a57600080fd5b5061052b6119a1565b34801561095f57600080fd5b5061052b6004803603602081101561097657600080fd5b50351515611a43565b34801561098b57600080fd5b5061052b600480360360208110156109a257600080fd5b50356001600160a01b0316611ab7565b3480156109be57600080fd5b50610430611b44565b3480156109d357600080fd5b50610430611b4a565b3480156109e857600080fd5b50610475600480360360208110156109ff57600080fd5b50356001600160a01b0316611b50565b348015610a1b57600080fd5b5061052b60048036036040811015610a3257600080fd5b506001600160a01b038135169060200135611b6e565b348015610a5457600080fd5b50610557611bee565b348015610a6957600080fd5b506103a6611bfd565b348015610a7e57600080fd5b5061052b60048036036020811015610a9557600080fd5b50351515611c5e565b348015610aaa57600080fd5b5061047560048036036040811015610ac157600080fd5b506001600160a01b038135169060200135611cd0565b348015610ae357600080fd5b5061052b611d38565b348015610af857600080fd5b5061047560048036036040811015610b0f57600080fd5b506001600160a01b038135169060200135611da3565b348015610b3157600080fd5b5061052b60048036036020811015610b4857600080fd5b5035611db7565b348015610b5b57600080fd5b50610475611e91565b348015610b7057600080fd5b5061052b60048036036020811015610b8757600080fd5b50351515611ea0565b348015610b9c57600080fd5b50610430611f47565b348015610bb157600080fd5b5061052b60048036036040811015610bc857600080fd5b810190602081018135640100000000811115610be357600080fd5b820183602082011115610bf557600080fd5b80359060200191846020830284011164010000000083111715610c1757600080fd5b919390929091602081019035640100000000811115610c3557600080fd5b820183602082011115610c4757600080fd5b80359060200191846020830284011164010000000083111715610c6957600080fd5b509092509050611f4d565b348015610c8057600080fd5b5061047561204f565b348015610c9557600080fd5b5061043060048036036040811015610cac57600080fd5b506001600160a01b038135811691602001351661205e565b348015610cd057600080fd5b5061052b60048036036020811015610ce757600080fd5b50356001600160a01b0316612089565b348015610d0357600080fd5b5061052b60048036036020811015610d1a57600080fd5b50356001600160a01b0316612103565b348015610d3657600080fd5b5061052b60048036036020811015610d4d57600080fd5b503561217c565b348015610d6057600080fd5b5061052b60048036036020811015610d7757600080fd5b50356001600160a01b03166121df565b600e8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e135780601f10610de857610100808354040283529160200191610e13565b820191906000526020600020905b815481529060010190602001808311610df657829003601f168201915b5050505050905090565b600d5481565b6001600160a01b03811660009081526007602052604090205460ff165b919050565b60195481565b6000610e5f610e5861225b565b848461225f565b5060015b92915050565b60095460ff1681565b601a5460ff1681565b32610e858161193f565b821115610e9157600080fd5b6000610e9b61234b565b9050826000610eaa828461236e565b6001600160a01b03851660009081526006602052604090205490915060ff1615610f0b576001600160a01b038416600090815260036020526040902054610ef190836123c7565b6001600160a01b0385166000908152600360205260409020555b6001600160a01b038416600090815260026020526040902054610f2e90826123c7565b6001600160a01b038516600090815260026020526040902055600a54610f5490836123c7565b600a55600b54610f6490826123c7565b600b55600d54610f749083612409565b600d555050505050565b600c5490565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b600a5490565b6000610fbb848484612463565b61102b84610fc761225b565b611026856040518060600160405280602881526020016137f3602891396001600160a01b038a1660009081526004602052604081209061100561225b565b6001600160a01b031681526020810191909152604001600020549190612876565b61225f565b5060019392505050565b61103d61225b565b6000546001600160a01b0390811691161461108d576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b633b9aca0002601b55565b6000600b548211156110db5760405162461bcd60e51b815260040180806020018281038252602a81526020018061375e602a913960400191505060405180910390fd5b60006110e561234b565b90506110f1838261290d565b9392505050565b60105460ff1690565b61110961225b565b6000546001600160a01b03908116911614611159576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526006602052604090205460ff166111c6576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b6008548110156112be57816001600160a01b0316600882815481106111ea57fe5b6000918252602090912001546001600160a01b031614156112b65760088054600019810190811061121757fe5b600091825260209091200154600880546001600160a01b03909216918390811061123d57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600382526040808220829055600690925220805460ff19169055600880548061128f57fe5b600082815260209020810160001990810180546001600160a01b03191690550190556112be565b6001016111c9565b5050565b6000610e5f6112cf61225b565b8461102685600460006112e061225b565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490612409565b60135481565b61131e61225b565b6000546001600160a01b0390811691161461136e576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b816001600160a01b031663a9059cbb82846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156113cb57600080fd5b505afa1580156113df573d6000803e3d6000fd5b505050506040513d60208110156113f557600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b15801561144657600080fd5b505af115801561145a573d6000803e3d6000fd5b505050506040513d602081101561147057600080fd5b50505050565b61147e61225b565b6000546001600160a01b039081169116146114ce576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b601a805460ff1916911515919091179055565b60125481565b6114ef61225b565b6000546001600160a01b0390811691161461153f576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000600a548311156115bc576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b816115db5760006115cc8461294f565b50939550610e63945050505050565b60006115e68461294f565b50929550610e63945050505050565b7f000000000000000000000000c1fb5aa7bd87f25193f126dc856b82fef4902b6781565b601754610100900460ff1681565b601a54610100900460ff1681565b61163d61225b565b6000546001600160a01b0390811691161461168d576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526006602052604090205460ff16156116fb576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090205415611755576001600160a01b03811660009081526002602052604090205461173b90611098565b6001600160a01b0382166000908152600360205260409020555b6001600160a01b03166000818152600660205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6001600160a01b031660009081526005602052604090205460ff1690565b6117e161225b565b6000546001600160a01b03908116911614611831576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600760205260409020805460ff19169055565b61185a61225b565b6000546001600160a01b039081169116146118aa576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b633b9aca0002601955565b33610e858161193f565b6118c761225b565b6000546001600160a01b03908116911614611917576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b601080546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b03811660009081526006602052604081205460ff161561197f57506001600160a01b038116600090815260036020526040902054610e40565b6001600160a01b038216600090815260026020526040902054610e6390611098565b6119a961225b565b6000546001600160a01b039081169116146119f9576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b611a4b61225b565b6000546001600160a01b03908116911614611a9b576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b601a8054911515620100000262ff000019909216919091179055565b611abf61225b565b6000546001600160a01b03908116911614611b0f576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b6040516001600160a01b038216904780156108fc02916000818181858888f193505050501580156112be573d6000803e3d6000fd5b60185481565b60145481565b6001600160a01b031660009081526006602052604090205460ff1690565b611b7661225b565b6000546001600160a01b03908116911614611bc6576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b611bce61299e565b611be6611bd961225b565b8383633b9aca0002612463565b6112be6129d0565b6000546001600160a01b031690565b600f8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610e135780601f10610de857610100808354040283529160200191610e13565b611c6661225b565b6000546001600160a01b03908116911614611cb6576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b601a80549115156101000261ff0019909216919091179055565b6000610e5f611cdd61225b565b84611026856040518060600160405280602581526020016138d96025913960046000611d0761225b565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612876565b611d4061225b565b6000546001600160a01b03908116911614611d90576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b6009805460ff1916600117905543601255565b6000610e5f611db061225b565b8484612463565b6000611dc161225b565b6001600160a01b03811660009081526006602052604090205490915060ff1615611e1c5760405162461bcd60e51b815260040180806020018281038252602c8152602001806138ad602c913960400191505060405180910390fd5b6000611e278361294f565b505050506001600160a01b038416600090815260026020526040902054919250611e53919050826123c7565b6001600160a01b038316600090815260026020526040902055600b54611e7990826123c7565b600b55600c54611e899084612409565b600c55505050565b601a5462010000900460ff1681565b611ea861225b565b6000546001600160a01b03908116911614611ef8576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b60178054821515610100810261ff00199092169190911790915560408051918252517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599181900360200190a150565b601b5481565b611f5561225b565b6000546001600160a01b03908116911614611fa5576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b6000838214611ffb576040805162461bcd60e51b815260206004820152601760248201527f6d757374206265207468652073616d65206c656e677468000000000000000000604482015290519081900360640190fd5b838110156120485761204085858381811061201257fe5b905060200201356001600160a01b031684848481811061202e57fe5b90506020020135633b9aca00026129de565b600101611ffb565b5050505050565b60175462010000900460ff1681565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b61209161225b565b6000546001600160a01b039081169116146120e1576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b61210b61225b565b6000546001600160a01b0390811691161461215b576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600560205260409020805460ff19169055565b61218461225b565b6000546001600160a01b039081169116146121d4576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b633b9aca0002601855565b6121e761225b565b6000546001600160a01b03908116911614612237576040805162461bcd60e51b8152602060048201819052602482015260008051602061381b833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b3390565b6001600160a01b0383166122a45760405162461bcd60e51b81526004018080602001828103825260248152602001806138896024913960400191505060405180910390fd5b6001600160a01b0382166122e95760405162461bcd60e51b81526004018080602001828103825260228152602001806137886022913960400191505060405180910390fd5b6001600160a01b03808416600081815260046020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60008060006123586129f8565b9092509050612367828261290d565b9250505090565b60008261237d57506000610e63565b8282028284828161238a57fe5b04146110f15760405162461bcd60e51b81526004018080602001828103825260218152602001806137d26021913960400191505060405180910390fd5b60006110f183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612876565b6000828201838110156110f1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b0383166124a85760405162461bcd60e51b81526004018080602001828103825260258152602001806138646025913960400191505060405180910390fd5b6001600160a01b0382166124ed5760405162461bcd60e51b815260040180806020018281038252602381526020018061373b6023913960400191505060405180910390fd5b6000811161252c5760405162461bcd60e51b815260040180806020018281038252602981526020018061383b6029913960400191505060405180910390fd5b601a54610100900460ff16156125c457612544611bee565b6001600160a01b0316836001600160a01b03161415801561257e5750612568611bee565b6001600160a01b0316826001600160a01b031614155b156125c4576018548111156125c45760405162461bcd60e51b81526004018080602001828103825260288152602001806137aa6028913960400191505060405180910390fd5b601a5462010000900460ff1615612677577f000000000000000000000000c1fb5aa7bd87f25193f126dc856b82fef4902b676001600160a01b0316836001600160a01b031614801561264857507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b801561265d57506001600160a01b0382163014155b1561267757326001600160a01b0383161461267757600080fd5b601a5460ff1615612781577f000000000000000000000000c1fb5aa7bd87f25193f126dc856b82fef4902b676001600160a01b0316836001600160a01b03161480156126dc57506126c6611bee565b6001600160a01b0316836001600160a01b031614155b801561270157506126eb611bee565b6001600160a01b0316826001600160a01b031614155b801561273f57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b801561275457506001600160a01b0382163014155b156127815760006127648361193f565b6019549091506127748284612409565b111561277f57600080fd5b505b600061278c3061193f565b9050601854811061279c57506018545b601b54811080159081906127b3575060175460ff16155b80156127f157507f000000000000000000000000c1fb5aa7bd87f25193f126dc856b82fef4902b676001600160a01b0316856001600160a01b031614155b80156128045750601754610100900460ff165b1561281757601b54915061281782612b5b565b6001600160a01b03851660009081526005602052604090205460019060ff168061285957506001600160a01b03851660009081526005602052604090205460ff165b15612862575060005b61286e86868684612d30565b505050505050565b600081848411156129055760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156128ca5781810151838201526020016128b2565b50505050905090810190601f1680156128f75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60006110f183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612fe8565b60008060008060008060008060006129668a61304d565b92509250925060008060006129848d868661297f61234b565b6130ab565b919f909e50909c50959a5093985091965092945050505050565b6013541580156129ae5750601454155b156129b8576129ce565b6013805460155560148054601655600091829055555b565b601554601355601654601455565b6129e661299e565b611be66129f161225b565b8383612463565b600b54600a546000918291825b600854811015612b2957826002600060088481548110612a2157fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612a865750816003600060088481548110612a5f57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612a9d57600b54600a5494509450505050612b57565b612add6002600060088481548110612ab157fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906123c7565b9250612b1f6003600060088481548110612af357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906123c7565b9150600101612a05565b50600a54600b54612b399161290d565b821015612b5157600b54600a54935093505050612b57565b90925090505b9091565b6017805460ff191660011790556000612b7582600361290d565b90506000612b8e6001612b8885856123c7565b906123c7565b90506000612b9d83600261290d565b90506000612bab84836123c7565b905047612bb7836130fb565b6000612bc347836123c7565b9050612bcf838261330b565b47612bd9866130fb565b6000612be547836123c7565b90506000612bff6009612bf984600461236e565b9061290d565b90506000612c1d6005612bf96003612c1787876123c7565b9061236e565b9050612c27611bee565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015612c5f573d6000803e3d6000fd5b506010546040516101009091046001600160a01b0316906108fc8315029083906000818181858888f19350505050158015612c9e573d6000803e3d6000fd5b506011546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612cd8573d6000803e3d6000fd5b50604080518981526020810187905280820189905290517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a150506017805460ff19169055505050505050505050565b6001600160a01b03841660009081526007602052604090205460ff16158015612d7257506001600160a01b03831660009081526007602052604090205460ff16155b612d7b57600080fd5b60175462010000900460ff1615612e4b576012544311158015612dcf57507f000000000000000000000000c1fb5aa7bd87f25193f126dc856b82fef4902b676001600160a01b0316846001600160a01b0316145b8015612e0d57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316836001600160a01b031614155b8015612e2257506001600160a01b0383163014155b15612e4b576001600160a01b0383166000908152600760205260409020805460ff191660011790555b60095460ff16612e7a57612e5d611bee565b6001600160a01b0316846001600160a01b031614612e7a57600080fd5b80612e8757612e8761299e565b6001600160a01b03841660009081526006602052604090205460ff168015612ec857506001600160a01b03831660009081526006602052604090205460ff16155b15612edd57612ed8848484613409565b612fdb565b6001600160a01b03841660009081526006602052604090205460ff16158015612f1e57506001600160a01b03831660009081526006602052604090205460ff165b15612f2e57612ed884848461352d565b6001600160a01b03841660009081526006602052604090205460ff16158015612f7057506001600160a01b03831660009081526006602052604090205460ff16155b15612f8057612ed88484846135d6565b6001600160a01b03841660009081526006602052604090205460ff168015612fc057506001600160a01b03831660009081526006602052604090205460ff165b15612fd057612ed884848461361a565b612fdb8484846135d6565b80611470576114706129d0565b600081836130375760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156128ca5781810151838201526020016128b2565b50600083858161304357fe5b0495945050505050565b60008060008061306d6064612bf96013548861236e90919063ffffffff16565b9050600061308b6064612bf96014548961236e90919063ffffffff16565b9050600061309d82612b8889866123c7565b979296509094509092505050565b60008080806130ba888661236e565b905060006130c8888761236e565b905060006130d6888861236e565b905060006130e882612b8886866123c7565b939b939a50919850919650505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061312a57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156131a357600080fd5b505afa1580156131b7573d6000803e3d6000fd5b505050506040513d60208110156131cd57600080fd5b50518151829060019081106131de57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050613229307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461225f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156132ce5781810151838201526020016132b6565b505050509050019650505050505050600060405180830381600087803b1580156132f757600080fd5b505af115801561286e573d6000803e3d6000fd5b613336307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461225f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d719823085600080613373611bee565b426040518863ffffffff1660e01b815260040180876001600160a01b03168152602001868152602001858152602001848152602001836001600160a01b0316815260200182815260200196505050505050506060604051808303818588803b1580156133de57600080fd5b505af11580156133f2573d6000803e3d6000fd5b50505050506040513d606081101561147057600080fd5b60008060008060008061341b8761294f565b6001600160a01b038f16600090815260036020526040902054959b5093995091975095509350915061344d90886123c7565b6001600160a01b038a1660009081526003602090815260408083209390935560029052205461347c90876123c7565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546134ab9086612409565b6001600160a01b0389166000908152600260205260409020556134cd8161368d565b6134d78483613716565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061353f8761294f565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061357190876123c7565b6001600160a01b03808b16600090815260026020908152604080832094909455918b168152600390915220546135a79084612409565b6001600160a01b0389166000908152600360209081526040808320939093556002905220546134ab9086612409565b6000806000806000806135e88761294f565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061347c90876123c7565b60008060008060008061362c8761294f565b6001600160a01b038f16600090815260036020526040902054959b5093995091975095509350915061365e90886123c7565b6001600160a01b038a1660009081526003602090815260408083209390935560029052205461357190876123c7565b600061369761234b565b905060006136a5838361236e565b306000908152600260205260409020549091506136c29082612409565b3060009081526002602090815260408083209390935560069052205460ff161561371157306000908152600360205260409020546137009084612409565b306000908152600360205260409020555b505050565b600b5461372390836123c7565b600b55600c546137339082612409565b600c55505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e7345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220483ba913a203c1720d645a41605ac68c1bc3473948f269b3cb14d2f7bbf37e7864736f6c63430007060033

Deployed Bytecode Sourcemap

3548:22746:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6526:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4248:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;14739:129;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14739:129:0;-1:-1:-1;;;;;14739:129:0;;:::i;:::-;;;;;;;;;;;;;;;;;;5026:44;;;;;;;;;;;;;:::i;7438:161::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7438:161:0;;;;;;;;:::i;4019:31::-;;;;;;;;;;;;;:::i;5077:37::-;;;;;;;;;;;;;:::i;10019:562::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10019:562:0;;:::i;:::-;;8559:87;;;;;;;;;;;;;:::i;4746:51::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;4746:51:0;;;;;;;;;;;;;;6803:95;;;;;;;;;;;;;:::i;7607:313::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7607:313:0;;;;;;;;;;;;;;;;;:::i;13733:160::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13733:160:0;;:::i;11435:253::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11435:253:0;;:::i;6712:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12153:479;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12153:479:0;-1:-1:-1;;;;;12153:479:0;;:::i;7928:218::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7928:218:0;;;;;;;;:::i;4535:27::-;;;;;;;;;;;;;:::i;14137:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14137:183:0;;;;;;;;;;:::i;13501:113::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13501:113:0;;;;:::i;4499:29::-;;;;;;;;;;;;;:::i;12648:113::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12648:113:0;-1:-1:-1;;;;;12648:113:0;;:::i;10991:436::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10991:436:0;;;;;;;;;:::i;4804:38::-;;;;;;;;;;;;;:::i;4883:40::-;;;;;;;;;;;;;:::i;5121:31::-;;;;;;;;;;;;;:::i;11696:449::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11696:449:0;-1:-1:-1;;;;;11696:449:0;;:::i;18237:123::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18237:123:0;-1:-1:-1;;;;;18237:123:0;;:::i;14608:119::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14608:119:0;-1:-1:-1;;;;;14608:119:0;;:::i;13263:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13263:119:0;;:::i;9450:563::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9450:563:0;;:::i;12893:119::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12893:119:0;-1:-1:-1;;;;;12893:119:0;;:::i;6906:198::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6906:198:0;-1:-1:-1;;;;;6906:198:0;;:::i;2599:148::-;;;;;;;;;;;;;:::i;13626:95::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13626:95:0;;;;:::i;14332:144::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14332:144:0;-1:-1:-1;;;;;14332:144:0;;:::i;4976:43::-;;;;;;;;;;;;;:::i;4570:41::-;;;;;;;;;;;;;:::i;8431:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8431:120:0;-1:-1:-1;;;;;8431:120:0;;:::i;8658:193::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8658:193:0;;;;;;;;:::i;2385:79::-;;;;;;;;;;;;;:::i;6617:87::-;;;;;;;;;;;;;:::i;13388:101::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13388:101:0;;;;:::i;8154:269::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8154:269:0;;;;;;;;:::i;14880:130::-;;;;;;;;;;;;;:::i;7112:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7112:167:0;;;;;;;;:::i;10589:394::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10589:394:0;;:::i;5159:28::-;;;;;;;;;;;;;:::i;15018:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15018:173:0;;;;:::i;5194:59::-;;;;;;;;;;;;;:::i;9056:386::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9056:386:0;;-1:-1:-1;9056:386:0;-1:-1:-1;9056:386:0;:::i;4930:33::-;;;;;;;;;;;;;:::i;7287:143::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7287:143:0;;;;;;;;;;:::i;13018:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13018:103:0;-1:-1:-1;;;;;13018:103:0;;:::i;12773:112::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12773:112:0;-1:-1:-1;;;;;12773:112:0;;:::i;13136:119::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13136:119:0;;:::i;14488:108::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14488:108:0;-1:-1:-1;;;;;14488:108:0;;:::i;6526:83::-;6596:5;6589:12;;;;;;;;-1:-1:-1;;6589:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6563:13;;6589:12;;6596:5;;6589:12;;6596:5;6589:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6526:83;:::o;4248:30::-;;;;:::o;14739:129::-;-1:-1:-1;;;;;14836:24:0;;14812:4;14836:24;;;:14;:24;;;;;;;;14739:129;;;;:::o;5026:44::-;;;;:::o;7438:161::-;7513:4;7530:39;7539:12;:10;:12::i;:::-;7553:7;7562:6;7530:8;:39::i;:::-;-1:-1:-1;7587:4:0;7438:161;;;;;:::o;4019:31::-;;;;;;:::o;5077:37::-;;;;;;:::o;10019:562::-;10093:9;10132:18;10093:9;10132;:18::i;:::-;10122:6;:28;;10113:38;;;;;;10162:19;10184:10;:8;:10::i;:::-;10162:32;-1:-1:-1;10221:6:0;10205:13;10254:22;10221:6;10162:32;10254:9;:22::i;:::-;-1:-1:-1;;;;;10290:20:0;;;;;;:11;:20;;;;;;10238:38;;-1:-1:-1;10290:20:0;;10287:97;;;-1:-1:-1;;;;;10345:16:0;;;;;;:7;:16;;;;;;:27;;10366:5;10345:20;:27::i;:::-;-1:-1:-1;;;;;10326:16:0;;;;;;:7;:16;;;;;:46;10287:97;-1:-1:-1;;;;;10413:16:0;;;;;;:7;:16;;;;;;:27;;10434:5;10413:20;:27::i;:::-;-1:-1:-1;;;;;10394:16:0;;;;;;:7;:16;;;;;:46;10461:7;;:18;;10473:5;10461:11;:18::i;:::-;10451:7;:28;10500:7;;:18;;10512:5;10500:11;:18::i;:::-;10490:7;:28;10547:15;;:26;;10567:5;10547:19;:26::i;:::-;10529:15;:44;-1:-1:-1;;;;;10019:562:0:o;8559:87::-;8628:10;;8559:87;:::o;4746:51::-;;;:::o;6803:95::-;6883:7;;6803:95;:::o;7607:313::-;7705:4;7722:36;7732:6;7740:9;7751:6;7722:9;:36::i;:::-;7769:121;7778:6;7786:12;:10;:12::i;:::-;7800:89;7838:6;7800:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7800:19:0;;;;;;:11;:19;;;;;;7820:12;:10;:12::i;:::-;-1:-1:-1;;;;;7800:33:0;;;;;;;;;;;;-1:-1:-1;7800:33:0;;;:89;:37;:89::i;:::-;7769:8;:121::i;:::-;-1:-1:-1;7908:4:0;7607:313;;;;;:::o;13733:160::-;2522:12;:10;:12::i;:::-;2512:6;;-1:-1:-1;;;;;2512:6:0;;;:22;;;2504:67;;;;;-1:-1:-1;;;2504:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2504:67:0;;;;;;;;;;;;;;;13880:5:::1;13858:27;13826:29;:59:::0;13733:160::o;11435:253::-;11501:7;11540;;11529;:18;;11521:73;;;;-1:-1:-1;;;11521:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11605:19;11628:10;:8;:10::i;:::-;11605:33;-1:-1:-1;11656:24:0;:7;11605:33;11656:11;:24::i;:::-;11649:31;11435:253;-1:-1:-1;;;11435:253:0:o;6712:83::-;6778:9;;;;6712:83;:::o;12153:479::-;2522:12;:10;:12::i;:::-;2512:6;;-1:-1:-1;;;;;2512:6:0;;;:22;;;2504:67;;;;;-1:-1:-1;;;2504:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2504:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;12235:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;12227:60;;;::::0;;-1:-1:-1;;;12227:60:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;12303:9;12298:327;12322:9;:16:::0;12318:20;::::1;12298:327;;;12380:7;-1:-1:-1::0;;;;;12364:23:0::1;:9;12374:1;12364:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;12364:12:0::1;:23;12360:254;;;12423:9;12433:16:::0;;-1:-1:-1;;12433:20:0;;;12423:31;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;12408:9:::1;:12:::0;;-1:-1:-1;;;;;12423:31:0;;::::1;::::0;12418:1;;12408:12;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;12408:46:0::1;-1:-1:-1::0;;;;;12408:46:0;;::::1;;::::0;;12473:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;12512:11:::1;:20:::0;;;;:28;;-1:-1:-1;;12512:28:0::1;::::0;;12559:9:::1;:15:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;12559:15:0;;;;;-1:-1:-1;;;;;;12559:15:0::1;::::0;;;;;12593:5:::1;;12360:254;12340:3;;12298:327;;;;12153:479:::0;:::o;7928:218::-;8016:4;8033:83;8042:12;:10;:12::i;:::-;8056:7;8065:50;8104:10;8065:11;:25;8077:12;:10;:12::i;:::-;-1:-1:-1;;;;;8065:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;8065:25:0;;;:34;;;;;;;;;;;:38;:50::i;4535:27::-;;;;:::o;14137:183::-;2522:12;:10;:12::i;:::-;2512:6;;-1:-1:-1;;;;;2512:6:0;;;:22;;;2504:67;;;;;-1:-1:-1;;;2504:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2504:67:0;;;;;;;;;;;;;;;14237:12:::1;-1:-1:-1::0;;;;;14237:21:0::1;;14259:13;14274:12;-1:-1:-1::0;;;;;14274:22:0::1;;14305:4;14274:37;;;;;;;;;;;;;-1:-1:-1::0;;;;;14274:37:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;14274:37:0;14237:75:::1;::::0;;-1:-1:-1;;;;;;14237:75:0::1;::::0;;;;;;-1:-1:-1;;;;;14237:75:0;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;14274:37:::1;::::0;14237:75;;;;;;;-1:-1:-1;14237:75:0;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;;;14137:183:0:o;13501:113::-;2522:12;:10;:12::i;:::-;2512:6;;-1:-1:-1;;;;;2512:6:0;;;:22;;;2504:67;;;;;-1:-1:-1;;;2504:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2504:67:0;;;;;;;;;;;;;;;13578:18:::1;:28:::0;;-1:-1:-1;;13578:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13501:113::o;4499:29::-;;;;:::o;12648:113::-;2522:12;:10;:12::i;:::-;2512:6;;-1:-1:-1;;;;;2512:6:0;;;:22;;;2504:67;;;;;-1:-1:-1;;;2504:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2504:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;12719:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;12719:34:0::1;12749:4;12719:34;::::0;;12648:113::o;10991:436::-;11081:7;11120;;11109;:18;;11101:62;;;;;-1:-1:-1;;;11101:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11179:17;11174:246;;11214:15;11238:19;11249:7;11238:10;:19::i;:::-;-1:-1:-1;11213:44:0;;-1:-1:-1;11272:14:0;;-1:-1:-1;;;;;11272:14:0;11174:246;11321:23;11352:19;11363:7;11352:10;:19::i;:::-;-1:-1:-1;11319:52:0;;-1:-1:-1;11386:22:0;;-1:-1:-1;;;;;11386:22:0;4804:38;;;:::o;4883:40::-;;;;;;;;;:::o;5121:31::-;;;;;;;;;:::o;11696:449::-;2522:12;:10;:12::i;:::-;2512:6;;-1:-1:-1;;;;;2512:6:0;;;:22;;;2504:67;;;;;-1:-1:-1;;;2504:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2504:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11895:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;11894:21;11886:61;;;::::0;;-1:-1:-1;;;11886:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;11961:16:0;::::1;11980:1;11961:16:::0;;;:7:::1;:16;::::0;;;;;:20;11958:108:::1;;-1:-1:-1::0;;;;;12037:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;12017:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;11998:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;11958:108:::1;-1:-1:-1::0;;;;;12076:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;12076:27:0::1;12099:4;12076:27:::0;;::::1;::::0;;;12114:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;12114:23:0::1;::::0;;::::1;::::0;;11696:449::o;18237:123::-;-1:-1:-1;;;;;18325:27:0;18301:4;18325:27;;;:18;:27;;;;;;;;;18237:123::o;14608:119::-;2522:12;:10;:12::i;:::-;2512:6;;-1:-1:-1;;;;;2512:6:0;;;:22;;;2504:67;;;;;-1:-1:-1;;;2504:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2504:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;14687:24:0::1;14714:5;14687:24:::0;;;:14:::1;:24;::::0;;;;:32;;-1:-1:-1;;14687:32:0::1;::::0;;14608:119::o;13263:::-;2522:12;:10;:12::i;:::-;2512:6;;-1:-1:-1;;;;;2512:6:0;;;:22;;;2504:67;;;;;-1:-1:-1;;;2504:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2504:67:0;;;;;;;;;;;;;;;13369:5:::1;13355:19;13340:12;:34:::0;13263:119::o;9450:563::-;9524:10;9564:18;9524:10;9564:9;:18::i;12893:119::-;2522:12;:10;:12::i;:::-;2512:6;;-1:-1:-1;;;;;2512:6:0;;;:22;;;2504:67;;;;;-1:-1:-1;;;2504:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2504:67:0;;;;;;;;;;;;;;;12977:16:::1;:27:::0;;-1:-1:-1;;;;;12977:27:0;;::::1;;;-1:-1:-1::0;;;;;;12977:27:0;;::::1;::::0;;;::::1;::::0;;12893:119::o;6906:198::-;-1:-1:-1;;;;;6996:20:0;;6972:7;6996:20;;;:11;:20;;;;;;;;6992:49;;;-1:-1:-1;;;;;;7025:16:0;;;;;;:7;:16;;;;;;7018:23;;6992:49;-1:-1:-1;;;;;7079:16:0;;;;;;:7;:16;;;;;;7059:37;;:19;:37::i;2599:148::-;2522:12;:10;:12::i;:::-;2512:6;;-1:-1:-1;;;;;2512:6:0;;;:22;;;2504:67;;;;;-1:-1:-1;;;2504:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2504:67:0;;;;;;;;;;;;;;;2706:1:::1;2690:6:::0;;2669:40:::1;::::0;-1:-1:-1;;;;;2690:6:0;;::::1;::::0;2669:40:::1;::::0;2706:1;;2669:40:::1;2737:1;2720:19:::0;;-1:-1:-1;;;;;;2720:19:0::1;::::0;;2599:148::o;13626:95::-;2522:12;:10;:12::i;:::-;2512:6;;-1:-1:-1;;;;;2512:6:0;;;:22;;;2504:67;;;;;-1:-1:-1;;;2504:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2504:67:0;;;;;;;;;;;;;;;13694:9:::1;:19:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;13694:19:0;;::::1;::::0;;;::::1;::::0;;13626:95::o;14332:144::-;2522:12;:10;:12::i;:::-;2512:6;;-1:-1:-1;;;;;2512:6:0;;;:22;;;2504:67;;;;;-1:-1:-1;;;2504:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2504:67:0;;;;;;;;;;;;;;;14423:45:::1;::::0;-1:-1:-1;;;;;14423:22:0;::::1;::::0;14446:21:::1;14423:45:::0;::::1;;;::::0;::::1;::::0;;;14446:21;14423:22;:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;4976:43:::0;;;;:::o;4570:41::-;;;;:::o;8431:120::-;-1:-1:-1;;;;;8523:20:0;8499:4;8523:20;;;:11;:20;;;;;;;;;8431:120::o;8658:193::-;2522:12;:10;:12::i;:::-;2512:6;;-1:-1:-1;;;;;2512:6:0;;;:22;;;2504:67;;;;;-1:-1:-1;;;2504:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2504:67:0;;;;;;;;;;;;;;;8742:14:::1;:12;:14::i;:::-;8767:50;8777:12;:10;:12::i;:::-;8791:9;8802:6;8811:5;8802:14;8767:9;:50::i;:::-;8828:15;:13;:15::i;2385:79::-:0;2423:7;2450:6;-1:-1:-1;;;;;2450:6:0;2385:79;:::o;6617:87::-;6689:7;6682:14;;;;;;;;-1:-1:-1;;6682:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6656:13;;6682:14;;6689:7;;6682:14;;6689:7;6682:14;;;;;;;;;;;;;;;;;;;;;;;;13388:101;2522:12;:10;:12::i;:::-;2512:6;;-1:-1:-1;;;;;2512:6:0;;;:22;;;2504:67;;;;;-1:-1:-1;;;2504:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2504:67:0;;;;;;;;;;;;;;;13459:12:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;13459:22:0;;::::1;::::0;;;::::1;::::0;;13388:101::o;8154:269::-;8247:4;8264:129;8273:12;:10;:12::i;:::-;8287:7;8296:96;8335:15;8296:96;;;;;;;;;;;;;;;;;:11;:25;8308:12;:10;:12::i;:::-;-1:-1:-1;;;;;8296:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;8296:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;14880:130::-;2522:12;:10;:12::i;:::-;2512:6;;-1:-1:-1;;;;;2512:6:0;;;:22;;;2504:67;;;;;-1:-1:-1;;;2504:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2504:67:0;;;;;;;;;;;;;;;14936:11:::1;:18:::0;;-1:-1:-1;;14936:18:0::1;14950:4;14936:18;::::0;;14982:12:::1;14965:14;:29:::0;14880:130::o;7112:167::-;7190:4;7207:42;7217:12;:10;:12::i;:::-;7231:9;7242:6;7207:9;:42::i;10589:394::-;10658:14;10675:12;:10;:12::i;:::-;-1:-1:-1;;;;;10707:19:0;;;;;;:11;:19;;;;;;10658:29;;-1:-1:-1;10707:19:0;;10706:20;10698:77;;;;-1:-1:-1;;;10698:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10787:15;10811:19;10822:7;10811:10;:19::i;:::-;-1:-1:-1;;;;;;;;;10859:15:0;;;;;;:7;:15;;;;;;10786:44;;-1:-1:-1;10859:28:0;;:15;-1:-1:-1;10786:44:0;10859:19;:28::i;:::-;-1:-1:-1;;;;;10841:15:0;;;;;;:7;:15;;;;;:46;10908:7;;:20;;10920:7;10908:11;:20::i;:::-;10898:7;:30;10952:10;;:23;;10967:7;10952:14;:23::i;:::-;10939:10;:36;-1:-1:-1;;;10589:394:0:o;5159:28::-;;;;;;;;;:::o;15018:173::-;2522:12;:10;:12::i;:::-;2512:6;;-1:-1:-1;;;;;2512:6:0;;;:22;;;2504:67;;;;;-1:-1:-1;;;2504:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2504:67:0;;;;;;;;;;;;;;;15097:21:::1;:32:::0;;;::::1;;;::::0;::::1;-1:-1:-1::0;;15097:32:0;;::::1;::::0;;;::::1;::::0;;;15145:38:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;15018:173:::0;:::o;5194:59::-;;;;:::o;9056:386::-;2522:12;:10;:12::i;:::-;2512:6;;-1:-1:-1;;;;;2512:6:0;;;:22;;;2504:67;;;;;-1:-1:-1;;;2504:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2504:67:0;;;;;;;;;;;;;;;9168:16:::1;9207:35:::0;;::::1;9199:71;;;::::0;;-1:-1:-1;;;9199:71:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;9287:28:::0;;::::1;9281:154;;;9331:64;9347:10;;9358:8;9347:20;;;;;;;;;;;;;-1:-1:-1::0;;;;;9347:20:0::1;9369:7;;9377:8;9369:17;;;;;;;;;;;;;9389:5;9369:25;9331:15;:64::i;:::-;9422:1;9410:13;9281:154;;;2582:1;9056:386:::0;;;;:::o;4930:33::-;;;;;;;;;:::o;7287:143::-;-1:-1:-1;;;;;7395:18:0;;;7368:7;7395:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7287:143::o;13018:103::-;2522:12;:10;:12::i;:::-;2512:6;;-1:-1:-1;;;;;2512:6:0;;;:22;;;2504:67;;;;;-1:-1:-1;;;2504:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2504:67:0;;;;;;;;;;;;;;;13094:8:::1;:19:::0;;-1:-1:-1;;;;;;13094:19:0::1;-1:-1:-1::0;;;;;13094:19:0;;;::::1;::::0;;;::::1;::::0;;13018:103::o;12773:112::-;2522:12;:10;:12::i;:::-;2512:6;;-1:-1:-1;;;;;2512:6:0;;;:22;;;2504:67;;;;;-1:-1:-1;;;2504:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2504:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;12842:27:0::1;12872:5;12842:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;12842:35:0::1;::::0;;12773:112::o;13136:119::-;2522:12;:10;:12::i;:::-;2512:6;;-1:-1:-1;;;;;2512:6:0;;;:22;;;2504:67;;;;;-1:-1:-1;;;2504:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2504:67:0;;;;;;;;;;;;;;;13242:5:::1;13228:19;13213:12;:34:::0;13136:119::o;14488:108::-;2522:12;:10;:12::i;:::-;2512:6;;-1:-1:-1;;;;;2512:6:0;;;:22;;;2504:67;;;;;-1:-1:-1;;;2504:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2504:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;14557:24:0::1;;::::0;;;:14:::1;:24;::::0;;;;:31;;-1:-1:-1;;14557:31:0::1;14584:4;14557:31;::::0;;14488:108::o;106:98::-;186:10;106:98;:::o;18368:335::-;-1:-1:-1;;;;;18461:19:0;;18453:68;;;;-1:-1:-1;;;18453:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18540:21:0;;18532:68;;;;-1:-1:-1;;;18532:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18611:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;18663:32;;;;;;;;;;;;;;;;;18368:335;;;:::o;16673:163::-;16714:7;16735:15;16752;16771:19;:17;:19::i;:::-;16734:56;;-1:-1:-1;16734:56:0;-1:-1:-1;16808:20:0;16734:56;;16808:11;:20::i;:::-;16801:27;;;;16673:163;:::o;1441:246::-;1499:7;1523:6;1519:47;;-1:-1:-1;1553:1:0;1546:8;;1519:47;1588:5;;;1592:1;1588;:5;:1;1612:5;;;;;:10;1604:56;;;;-1:-1:-1;;;1604:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1099:136;1157:7;1184:43;1188:1;1191;1184:43;;;;;;;;;;;;;;;;;:3;:43::i;912:179::-;970:7;1002:5;;;1026:6;;;;1018:46;;;;;-1:-1:-1;;;1018:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;18713:1731;-1:-1:-1;;;;;18801:18:0;;18793:68;;;;-1:-1:-1;;;18793:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18880:16:0;;18872:64;;;;-1:-1:-1;;;18872:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18964:1;18955:6;:10;18947:64;;;;-1:-1:-1;;;18947:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19027:12;;;;;;;19024:188;;;19066:7;:5;:7::i;:::-;-1:-1:-1;;;;;19058:15:0;:4;-1:-1:-1;;;;;19058:15:0;;;:32;;;;;19083:7;:5;:7::i;:::-;-1:-1:-1;;;;;19077:13:0;:2;-1:-1:-1;;;;;19077:13:0;;;19058:32;19055:146;;;19128:12;;19118:6;:22;;19110:75;;;;-1:-1:-1;;;19110:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19227:9;;;;;;;19224:177;;;19263:13;-1:-1:-1;;;;;19255:21:0;:4;-1:-1:-1;;;;;19255:21:0;;:55;;;;;19294:15;-1:-1:-1;;;;;19280:30:0;:2;-1:-1:-1;;;;;19280:30:0;;;19255:55;:78;;;;-1:-1:-1;;;;;;19314:19:0;;19328:4;19314:19;;19255:78;19252:138;;;19358:9;-1:-1:-1;;;;;19358:15:0;;;19349:25;;;;;;19416:18;;;;19413:293;;;19461:13;-1:-1:-1;;;;;19453:21:0;:4;-1:-1:-1;;;;;19453:21:0;;:40;;;;;19486:7;:5;:7::i;:::-;-1:-1:-1;;;;;19478:15:0;:4;-1:-1:-1;;;;;19478:15:0;;;19453:40;:57;;;;;19503:7;:5;:7::i;:::-;-1:-1:-1;;;;;19497:13:0;:2;-1:-1:-1;;;;;19497:13:0;;;19453:57;:91;;;;;19528:15;-1:-1:-1;;;;;19514:30:0;:2;-1:-1:-1;;;;;19514:30:0;;;19453:91;:114;;;;-1:-1:-1;;;;;;19548:19:0;;19562:4;19548:19;;19453:114;19450:245;;;19588:12;19603:13;19613:2;19603:9;:13::i;:::-;19666:12;;19588:28;;-1:-1:-1;19643:19:0;19588:28;19655:6;19643:11;:19::i;:::-;:35;;19635:44;;;;;;19450:245;;19718:28;19749:24;19767:4;19749:9;:24::i;:::-;19718:55;;19819:12;;19795:20;:36;19792:102;;-1:-1:-1;19870:12:0;;19792:102;19965:29;;19941:53;;;;;;;20010:40;;-1:-1:-1;20034:16:0;;;;20033:17;20010:40;:65;;;;;20062:13;-1:-1:-1;;;;;20054:21:0;:4;-1:-1:-1;;;;;20054:21:0;;;20010:65;:90;;;;-1:-1:-1;20079:21:0;;;;;;;20010:90;20005:227;;;20140:29;;20117:52;;20184:36;20199:20;20184:14;:36::i;:::-;-1:-1:-1;;;;;20285:24:0;;20244:12;20285:24;;;:18;:24;;;;;;20259:4;;20285:24;;;:50;;-1:-1:-1;;;;;;20313:22:0;;;;;;:18;:22;;;;;;;;20285:50;20282:96;;;-1:-1:-1;20361:5:0;20282:96;20398:38;20413:4;20418:2;20421:6;20428:7;20398:14;:38::i;:::-;18713:1731;;;;;;:::o;1243:190::-;1329:7;1365:12;1357:6;;;;1349:29;;;;-1:-1:-1;;;1349:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1401:5:0;;;1243:190::o;1695:132::-;1753:7;1780:39;1784:1;1787;1780:39;;;;;;;;;;;;;;;;;:3;:39::i;15452:419::-;15511:7;15520;15529;15538;15547;15556;15577:23;15602:12;15616:18;15638:20;15650:7;15638:11;:20::i;:::-;15576:82;;;;;;15670:15;15687:23;15712:12;15728:50;15740:7;15749:4;15755:10;15767;:8;:10::i;:::-;15728:11;:50::i;:::-;15669:109;;;;-1:-1:-1;15669:109:0;;-1:-1:-1;15829:15:0;;-1:-1:-1;15846:4:0;;-1:-1:-1;15852:10:0;;-1:-1:-1;15452:419:0;;-1:-1:-1;;;;;15452:419:0:o;17784:286::-;17830:7;;:12;:43;;;;-1:-1:-1;17846:22:0;;:27;17830:43;17827:55;;;17875:7;;17827:55;17920:7;;;17902:15;:25;17971:22;;;17938:30;:55;-1:-1:-1;18014:11:0;;;;18036:26;17784:286;:::o;18082:143::-;18136:15;;18126:7;:25;18187:30;;18162:22;:55;18082:143::o;8863:181::-;8943:14;:12;:14::i;:::-;8968:42;8978:12;:10;:12::i;:::-;8992:9;9003:6;8968:9;:42::i;16844:561::-;16941:7;;16977;;16894;;;;;17001:289;17025:9;:16;17021:20;;17001:289;;;17091:7;17067;:21;17075:9;17085:1;17075:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17075:12:0;17067:21;;;;;;;;;;;;;:31;;:66;;;17126:7;17102;:21;17110:9;17120:1;17110:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17110:12:0;17102:21;;;;;;;;;;;;;:31;17067:66;17063:97;;;17143:7;;17152;;17135:25;;;;;;;;;17063:97;17185:34;17197:7;:21;17205:9;17215:1;17205:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17205:12:0;17197:21;;;;;;;;;;;;;17185:7;;:11;:34::i;:::-;17175:44;;17244:34;17256:7;:21;17264:9;17274:1;17264:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17264:12:0;17256:21;;;;;;;;;;;;;17244:7;;:11;:34::i;:::-;17234:44;-1:-1:-1;17043:3:0;;17001:289;;;-1:-1:-1;17326:7:0;;17314;;:20;;:11;:20::i;:::-;17304:7;:30;17300:61;;;17344:7;;17353;;17336:25;;;;;;;;17300:61;17380:7;;-1:-1:-1;17389:7:0;-1:-1:-1;16844:561:0;;;:::o;20452:1070::-;5560:16;:23;;-1:-1:-1;;5560:23:0;5579:4;5560:23;;;:16;20558:27:::1;:20:::0;20583:1:::1;20558:24;:27::i;:::-;20537:49:::0;-1:-1:-1;20597:21:0::1;20621:45;20664:1;20621:38;:20:::0;20537:49;20621:24:::1;:38::i;:::-;:42:::0;::::1;:45::i;:::-;20597:69:::0;-1:-1:-1;20679:12:0::1;20694:19;:12:::0;20711:1:::1;20694:16;:19::i;:::-;20679:34:::0;-1:-1:-1;20724:17:0::1;20744:22;:12:::0;20679:34;20744:16:::1;:22::i;:::-;20724:42:::0;-1:-1:-1;20802:21:0::1;20834:22;20851:4:::0;20834:16:::1;:22::i;:::-;20867:18;20888:41;:21;20914:14:::0;20888:25:::1;:41::i;:::-;20867:62;;20940:35;20953:9;20964:10;20940:12;:35::i;:::-;21010:21;21042:34;21059:16:::0;21042::::1;:34::i;:::-;21087:21;21111:38;:21;21137:11:::0;21111:25:::1;:38::i;:::-;21087:62:::0;-1:-1:-1;21160:17:0::1;21180:27;21205:1;21180:20;21087:62:::0;21198:1:::1;21180:17;:20::i;:::-;:24:::0;::::1;:27::i;:::-;21160:47:::0;-1:-1:-1;21218:14:0::1;21235:42;21275:1;21235:35;21268:1;21235:28;:13:::0;21160:47;21235:17:::1;:28::i;:::-;:32:::0;::::1;:35::i;:42::-;21218:59;;21298:7;:5;:7::i;:::-;-1:-1:-1::0;;;;;21290:25:0::1;:36;21316:9;21290:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;21345:16:0::1;::::0;21337:45:::1;::::0;21345:16:::1;::::0;;::::1;-1:-1:-1::0;;;;;21345:16:0::1;::::0;21337:45:::1;::::0;::::1;;::::0;;;::::1;::::0;;;;21345:16;21337:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;21401:8:0::1;::::0;21393:49:::1;::::0;-1:-1:-1;;;;;21401:8:0;;::::1;::::0;21420:21:::1;21393:49:::0;::::1;;;::::0;21401:8:::1;21393:49:::0;21401:8;21393:49;21420:21;21401:8;21393:49;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;21471:43:0::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;::::1;::::0;;;;;;;::::1;-1:-1:-1::0;;5606:16:0;:24;;-1:-1:-1;;5606:24:0;;;-1:-1:-1;;;;;;;;;20452:1070:0:o;22648:1315::-;-1:-1:-1;;;;;22764:22:0;;;;;;:14;:22;;;;;;;;22763:23;:53;;;;-1:-1:-1;;;;;;22791:25:0;;;;;;:14;:25;;;;;;;;22790:26;22763:53;22755:62;;;;;;22833:13;;;;;;;22830:242;;;22881:14;;22865:12;:30;;:57;;;;;22909:13;-1:-1:-1;;;;;22899:23:0;:6;-1:-1:-1;;;;;22899:23:0;;22865:57;:98;;;;;22947:15;-1:-1:-1;;;;;22926:37:0;:9;-1:-1:-1;;;;;22926:37:0;;;22865:98;:128;;;;-1:-1:-1;;;;;;22967:26:0;;22988:4;22967:26;;22865:128;22862:199;;;-1:-1:-1;;;;;23013:25:0;;;;;;:14;:25;;;;;:32;;-1:-1:-1;;23013:32:0;23041:4;23013:32;;;22862:199;23088:11;;;;23084:117;;23133:7;:5;:7::i;:::-;-1:-1:-1;;;;;23123:17:0;:6;-1:-1:-1;;;;;23123:17:0;;23115:26;;;;;;23224:7;23220:40;;23246:14;:12;:14::i;:::-;-1:-1:-1;;;;;23285:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;23309:22:0;;;;;;:11;:22;;;;;;;;23308:23;23285:46;23281:597;;;23348:48;23370:6;23378:9;23389:6;23348:21;:48::i;:::-;23281:597;;;-1:-1:-1;;;;;23419:19:0;;;;;;:11;:19;;;;;;;;23418:20;:46;;;;-1:-1:-1;;;;;;23442:22:0;;;;;;:11;:22;;;;;;;;23418:46;23414:464;;;23481:46;23501:6;23509:9;23520:6;23481:19;:46::i;23414:464::-;-1:-1:-1;;;;;23550:19:0;;;;;;:11;:19;;;;;;;;23549:20;:47;;;;-1:-1:-1;;;;;;23574:22:0;;;;;;:11;:22;;;;;;;;23573:23;23549:47;23545:333;;;23613:44;23631:6;23639:9;23650:6;23613:17;:44::i;23545:333::-;-1:-1:-1;;;;;23679:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;23702:22:0;;;;;;:11;:22;;;;;;;;23679:45;23675:203;;;23741:48;23763:6;23771:9;23782:6;23741:21;:48::i;23675:203::-;23822:44;23840:6;23848:9;23859:6;23822:17;:44::i;:::-;23918:7;23914:41;;23940:15;:13;:15::i;1835:189::-;1921:7;1956:12;1949:5;1941:28;;;;-1:-1:-1;;;1941:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1980:9;1996:1;1992;:5;;;;;;;1835:189;-1:-1:-1;;;;;1835:189:0:o;15879:349::-;15939:7;15948;15957;15977:12;15992:29;16017:3;15992:20;16004:7;;15992;:11;;:20;;;;:::i;:29::-;15977:44;;16032:18;16053:44;16093:3;16053:35;16065:22;;16053:7;:11;;:35;;;;:::i;:44::-;16032:65;-1:-1:-1;16108:23:0;16134:33;16032:65;16134:17;:7;16146:4;16134:11;:17::i;:33::-;16108:59;16203:4;;-1:-1:-1;16209:10:0;;-1:-1:-1;15879:349:0;;-1:-1:-1;;;15879:349:0:o;16236:429::-;16351:7;;;;16407:24;:7;16419:11;16407;:24::i;:::-;16389:42;-1:-1:-1;16442:12:0;16457:21;:4;16466:11;16457:8;:21::i;:::-;16442:36;-1:-1:-1;16489:18:0;16510:27;:10;16525:11;16510:14;:27::i;:::-;16489:48;-1:-1:-1;16548:23:0;16574:33;16489:48;16574:17;:7;16586:4;16574:11;:17::i;:33::-;16626:7;;;;-1:-1:-1;16652:4:0;;-1:-1:-1;16236:429:0;;-1:-1:-1;;;;;;;16236:429:0:o;21530:589::-;21680:16;;;21694:1;21680:16;;;;;;;;21656:21;;21680:16;;;;;;;;;;-1:-1:-1;21680:16:0;21656:40;;21725:4;21707;21712:1;21707:7;;;;;;;;;;;;;:23;-1:-1:-1;;;;;21707:23:0;;;-1:-1:-1;;;;;21707:23:0;;;;;21751:15;-1:-1:-1;;;;;21751:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21751:22:0;21741:7;;:4;;21746:1;;21741:7;;;;;;;;;;;:32;-1:-1:-1;;;;;21741:32:0;;;-1:-1:-1;;;;;21741:32:0;;;;;21786:62;21803:4;21818:15;21836:11;21786:8;:62::i;:::-;21887:15;-1:-1:-1;;;;;21887:66:0;;21968:11;21994:1;22038:4;22065;22085:15;21887:224;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21887:224:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22127:513;22275:62;22292:4;22307:15;22325:11;22275:8;:62::i;:::-;22380:15;-1:-1:-1;;;;;22380:31:0;;22419:9;22452:4;22472:11;22498:1;22541;22584:7;:5;:7::i;:::-;22606:15;22380:252;;;;;;;;;;;;;-1:-1:-1;;;;;22380:252:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22380:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25075:566;25178:15;25195:23;25220:12;25234:23;25259:12;25273:18;25295:19;25306:7;25295:10;:19::i;:::-;-1:-1:-1;;;;;25343:15:0;;;;;;:7;:15;;;;;;25177:137;;-1:-1:-1;25177:137:0;;-1:-1:-1;25177:137:0;;-1:-1:-1;25177:137:0;-1:-1:-1;25177:137:0;-1:-1:-1;25177:137:0;-1:-1:-1;25343:28:0;;25363:7;25343:19;:28::i;:::-;-1:-1:-1;;;;;25325:15:0;;;;;;:7;:15;;;;;;;;:46;;;;25400:7;:15;;;;:28;;25420:7;25400:19;:28::i;:::-;-1:-1:-1;;;;;25382:15:0;;;;;;;:7;:15;;;;;;:46;;;;25460:18;;;;;;;:39;;25483:15;25460:22;:39::i;:::-;-1:-1:-1;;;;;25439:18:0;;;;;;:7;:18;;;;;:60;25513:26;25528:10;25513:14;:26::i;:::-;25550:23;25562:4;25568;25550:11;:23::i;:::-;25606:9;-1:-1:-1;;;;;25589:44:0;25598:6;-1:-1:-1;;;;;25589:44:0;;25617:15;25589:44;;;;;;;;;;;;;;;;;;25075:566;;;;;;;;;:::o;24481:586::-;24582:15;24599:23;24624:12;24638:23;24663:12;24677:18;24699:19;24710:7;24699:10;:19::i;:::-;-1:-1:-1;;;;;24747:15:0;;;;;;:7;:15;;;;;;24581:137;;-1:-1:-1;24581:137:0;;-1:-1:-1;24581:137:0;;-1:-1:-1;24581:137:0;-1:-1:-1;24581:137:0;-1:-1:-1;24581:137:0;-1:-1:-1;24747:28:0;;24581:137;24747:19;:28::i;:::-;-1:-1:-1;;;;;24729:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;24807:18;;;;;:7;:18;;;;;:39;;24830:15;24807:22;:39::i;:::-;-1:-1:-1;;;;;24786:18:0;;;;;;:7;:18;;;;;;;;:60;;;;24878:7;:18;;;;:39;;24901:15;24878:22;:39::i;23971:502::-;24070:15;24087:23;24112:12;24126:23;24151:12;24165:18;24187:19;24198:7;24187:10;:19::i;:::-;-1:-1:-1;;;;;24235:15:0;;;;;;:7;:15;;;;;;24069:137;;-1:-1:-1;24069:137:0;;-1:-1:-1;24069:137:0;;-1:-1:-1;24069:137:0;-1:-1:-1;24069:137:0;-1:-1:-1;24069:137:0;-1:-1:-1;24235:28:0;;24069:137;24235:19;:28::i;25649:642::-;25752:15;25769:23;25794:12;25808:23;25833:12;25847:18;25869:19;25880:7;25869:10;:19::i;:::-;-1:-1:-1;;;;;25917:15:0;;;;;;:7;:15;;;;;;25751:137;;-1:-1:-1;25751:137:0;;-1:-1:-1;25751:137:0;;-1:-1:-1;25751:137:0;-1:-1:-1;25751:137:0;-1:-1:-1;25751:137:0;-1:-1:-1;25917:28:0;;25937:7;25917:19;:28::i;:::-;-1:-1:-1;;;;;25899:15:0;;;;;;:7;:15;;;;;;;;:46;;;;25974:7;:15;;;;:28;;25994:7;25974:19;:28::i;17417:355::-;17480:19;17503:10;:8;:10::i;:::-;17480:33;-1:-1:-1;17524:18:0;17545:27;:10;17480:33;17545:14;:27::i;:::-;17624:4;17608:22;;;;:7;:22;;;;;;17524:48;;-1:-1:-1;17608:38:0;;17524:48;17608:26;:38::i;:::-;17599:4;17583:22;;;;:7;:22;;;;;;;;:63;;;;17660:11;:26;;;;;;17657:107;;;17742:4;17726:22;;;;:7;:22;;;;;;:38;;17753:10;17726:26;:38::i;:::-;17717:4;17701:22;;;;:7;:22;;;;;:63;17657:107;17417:355;;;:::o;15297:147::-;15375:7;;:17;;15387:4;15375:11;:17::i;:::-;15365:7;:27;15416:10;;:20;;15431:4;15416:14;:20::i;:::-;15403:10;:33;-1:-1:-1;;15297:147:0:o

Swarm Source

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