ETH Price: $3,715.99 (+3.46%)

Token

ERC-20: AnarchyInu (Anarchy)
 

Overview

Max Total Supply

10,000,000,000 Anarchy

Holders

55

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
revengetradoor.eth
Balance
127,932.597905738 Anarchy

Value
$0.00
0x750652124deafb69a4a93023d940696bd71a8d80
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:
AnarchyInu

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-24
*/

// SPDX-License-Identifier: Unlicensed
/* 

🔺️Anarchy Inu🔺️

🔺️No rules
🔺️No restrictions 
🔺️No one above you 
🔺️No one below you 
🔺️Boss of your own

That is 🔺️Anarchy Inu🐕

Tax is 1/2% because this is purely a community driven token made for community supporting Anarchy.

TG: https://t.me/AnarchyInu
Website:Anarchyinu.xyz

*/
pragma solidity ^0.6.12;

    abstract contract Context {
        function _msgSender() internal view virtual returns (address payable) {
            return msg.sender;
        }
        function _msgData() internal view virtual returns (bytes memory) {
            this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
            return msg.data;
        }
    }

    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;
        }
        function mod(uint256 a, uint256 b) internal pure returns (uint256) {
            return mod(a, b, "SafeMath: modulo by zero");
        }
        function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
            require(b != 0, errorMessage);
            return a % b;
        }
    }

    library Address {
        function isContract(address account) internal view returns (bool) {
            bytes32 codehash;
            bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
            assembly { codehash := extcodehash(account) }
            return (codehash != accountHash && codehash != 0x0);
        }
        function sendValue(address payable recipient, uint256 amount) internal {
            require(address(this).balance >= amount, "Address: insufficient balance");
            (bool success, ) = recipient.call{ value: amount }("");
            require(success, "Address: unable to send value, recipient may have reverted");
        }
        function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
        }
        function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
            return _functionCallWithValue(target, data, 0, errorMessage);
        }
        function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
            return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
        }
        function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
            require(address(this).balance >= value, "Address: insufficient balance for call");
            return _functionCallWithValue(target, data, value, errorMessage);
        }
        function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
            require(isContract(target), "Address: call to non-contract");
            (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
            if (success) {
                return returndata;
            } else {
                if (returndata.length > 0) {
                    assembly {
                        let returndata_size := mload(returndata)
                        revert(add(32, returndata), returndata_size)
                    }
                } else {
                    revert(errorMessage);
                }
            }
        }
    }

    contract Ownable is Context {
        address private _owner;
        address private _previousOwner;
        uint256 private _lockTime;
        event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
        constructor () internal {
            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);
        }
        function transferOwnership(address newOwner) public virtual onlyOwner {
            require(newOwner != address(0), "Ownable: new owner is the zero address");
            emit OwnershipTransferred(_owner, newOwner);
            _owner = newOwner;
        }
        function geUnlockTime() public view returns (uint256) {
            return _lockTime;
        }
        function lock(uint256 time) public virtual onlyOwner {
            _previousOwner = _owner;
            _owner = address(0);
            _lockTime = now + time;
            emit OwnershipTransferred(_owner, address(0));
        }
        function unlock() public virtual {
            require(_previousOwner == msg.sender, "You don't have permission to unlock");
            require(now > _lockTime , "Contract is locked until 7 days");
            emit OwnershipTransferred(_owner, _previousOwner);
            _owner = _previousOwner;
        }
    }  

    interface IUniswapV2Factory {
        event PairCreated(address indexed token0, address indexed token1, address pair, uint);
        function feeTo() external view returns (address);
        function feeToSetter() external view returns (address);
        function getPair(address tokenA, address tokenB) external view returns (address pair);
        function allPairs(uint) external view returns (address pair);
        function allPairsLength() external view returns (uint);
        function createPair(address tokenA, address tokenB) external returns (address pair);
        function setFeeTo(address) external;
        function setFeeToSetter(address) external;
    } 

    interface IUniswapV2Pair {
        event Approval(address indexed owner, address indexed spender, uint value);
        event Transfer(address indexed from, address indexed to, uint value);
        function name() external pure returns (string memory);
        function symbol() external pure returns (string memory);
        function decimals() external pure returns (uint8);
        function totalSupply() external view returns (uint);
        function balanceOf(address owner) external view returns (uint);
        function allowance(address owner, address spender) external view returns (uint);
        function approve(address spender, uint value) external returns (bool);
        function transfer(address to, uint value) external returns (bool);
        function transferFrom(address from, address to, uint value) external returns (bool);
        function DOMAIN_SEPARATOR() external view returns (bytes32);
        function PERMIT_TYPEHASH() external pure returns (bytes32);
        function nonces(address owner) external view returns (uint);
        function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
        event Mint(address indexed sender, uint amount0, uint amount1);
        event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
        event Swap(
            address indexed sender,
            uint amount0In,
            uint amount1In,
            uint amount0Out,
            uint amount1Out,
            address indexed to
        );
        event Sync(uint112 reserve0, uint112 reserve1);
        function MINIMUM_LIQUIDITY() external pure returns (uint);
        function factory() external view returns (address);
        function token0() external view returns (address);
        function token1() external view returns (address);
        function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
        function price0CumulativeLast() external view returns (uint);
        function price1CumulativeLast() external view returns (uint);
        function kLast() external view returns (uint);
        function mint(address to) external returns (uint liquidity);
        function burn(address to) external returns (uint amount0, uint amount1);
        function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
        function skim(address to) external;
        function sync() external;
        function initialize(address, address) external;
    }

    interface IUniswapV2Router01 {
        function factory() external pure returns (address);
        function WETH() external pure returns (address);
        function addLiquidity(
            address tokenA,
            address tokenB,
            uint amountADesired,
            uint amountBDesired,
            uint amountAMin,
            uint amountBMin,
            address to,
            uint deadline
        ) external returns (uint amountA, uint amountB, uint liquidity);
        function addLiquidityETH(
            address token,
            uint amountTokenDesired,
            uint amountTokenMin,
            uint amountETHMin,
            address to,
            uint deadline
        ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
        function removeLiquidity(
            address tokenA,
            address tokenB,
            uint liquidity,
            uint amountAMin,
            uint amountBMin,
            address to,
            uint deadline
        ) external returns (uint amountA, uint amountB);
        function removeLiquidityETH(
            address token,
            uint liquidity,
            uint amountTokenMin,
            uint amountETHMin,
            address to,
            uint deadline
        ) external returns (uint amountToken, uint amountETH);
        function removeLiquidityWithPermit(
            address tokenA,
            address tokenB,
            uint liquidity,
            uint amountAMin,
            uint amountBMin,
            address to,
            uint deadline,
            bool approveMax, uint8 v, bytes32 r, bytes32 s
        ) external returns (uint amountA, uint amountB);
        function removeLiquidityETHWithPermit(
            address token,
            uint liquidity,
            uint amountTokenMin,
            uint amountETHMin,
            address to,
            uint deadline,
            bool approveMax, uint8 v, bytes32 r, bytes32 s
        ) external returns (uint amountToken, uint amountETH);
        function swapExactTokensForTokens(
            uint amountIn,
            uint amountOutMin,
            address[] calldata path,
            address to,
            uint deadline
        ) external returns (uint[] memory amounts);
        function swapTokensForExactTokens(
            uint amountOut,
            uint amountInMax,
            address[] calldata path,
            address to,
            uint deadline
        ) external returns (uint[] memory amounts);
        function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
            external
            payable
            returns (uint[] memory amounts);
        function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
            external
            returns (uint[] memory amounts);
        function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
            external
            returns (uint[] memory amounts);
        function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
            external
            payable
            returns (uint[] memory amounts);

        function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
        function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
        function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
        function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
        function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
    }

    interface IUniswapV2Router02 is IUniswapV2Router01 {
        function removeLiquidityETHSupportingFeeOnTransferTokens(
            address token,
            uint liquidity,
            uint amountTokenMin,
            uint amountETHMin,
            address to,
            uint deadline
        ) external returns (uint amountETH);
        function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
            address token,
            uint liquidity,
            uint amountTokenMin,
            uint amountETHMin,
            address to,
            uint deadline,
            bool approveMax, uint8 v, bytes32 r, bytes32 s
        ) external returns (uint amountETH);

        function swapExactTokensForTokensSupportingFeeOnTransferTokens(
            uint amountIn,
            uint amountOutMin,
            address[] calldata path,
            address to,
            uint deadline
        ) external;
        function swapExactETHForTokensSupportingFeeOnTransferTokens(
            uint amountOutMin,
            address[] calldata path,
            address to,
            uint deadline
        ) external payable;
        function swapExactTokensForETHSupportingFeeOnTransferTokens(
            uint amountIn,
            uint amountOutMin,
            address[] calldata path,
            address to,
            uint deadline
        ) external;
    }

    contract AnarchyInu is Context, IERC20, Ownable {
        using SafeMath for uint256;
        using Address for address;

        mapping (address => bool) public _isBlacklisted;
        mapping (address => uint256) private _rOwned;
        mapping (address => uint256) private _tOwned;
        mapping (address => mapping (address => uint256)) private _allowances;
        mapping (address => bool) private _isExcludedFromFee;

        mapping (address => bool) private _isExcluded;
        address[] private _excluded;
    
        uint256 private constant MAX = ~uint256(0);
        uint256 private _tTotal = 10000000000 * 10**9;
        uint256 private _rTotal = (MAX - (MAX % _tTotal));
        uint256 private _tFeeTotal;

        string private _name = 'AnarchyInu';
        string private _symbol = 'Anarchy';
        uint8 private _decimals = 9;

        uint256 private _taxFee = 2; 
        uint256 private _MarketingFee = 10;
        uint256 private _previousTaxFee = _taxFee;
        uint256 private _previousMarketingFee = _MarketingFee;

        address payable public _MarketingWalletAddress;
        
        IUniswapV2Router02 public immutable uniswapV2Router;
        address public immutable uniswapV2Pair;

        bool inSwap = false;
        bool public swapEnabled = true;

        uint256 private _maxTxAmount = 200000000e9;
        // We will set a minimum amount of tokens to be swaped => 5M
        uint256 private _numOfTokensToExchangeForMarketing = 5 * 10**3 * 10**9;

        event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
        event SwapEnabledUpdated(bool enabled);

        modifier lockTheSwap {
            inSwap = true;
            _;
            inSwap = false;
        }

        constructor (address payable MarketingWalletAddress) public {
            _MarketingWalletAddress = MarketingWalletAddress;
            _rOwned[_msgSender()] = _rTotal;

            IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            // 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;
            _isExcludedFromFee[_MarketingWalletAddress] = true;
       

            emit Transfer(address(0), _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 isExcluded(address account) public view returns (bool) {
            return _isExcluded[account];
        }

        function setExcludeFromFee(address account, bool excluded) external onlyOwner() {
            _isExcludedFromFee[account] = excluded;
        }

        function totalFees() public view returns (uint256) {return _tFeeTotal;}

        function deliver(uint256 tAmount) public {
            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 excludeAccount(address account) external onlyOwner() {
            require(account != 0x50e617C888934F49054e8D0D23E8EED62b7a4395, '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 includeAccount(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 removeAllFee() private {
            if(_taxFee == 0 && _MarketingFee == 0) return;
            
            _previousTaxFee = _taxFee;
            _previousMarketingFee = _MarketingFee;
            
            _taxFee = 0;
            _MarketingFee = 0;
        }
    
        function restoreAllFee() private {
            _taxFee = _previousTaxFee;
            _MarketingFee = _previousMarketingFee;
        }
    
        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 sender, address recipient, uint256 amount) private {
            //blacklisted addresses can not buy! If you have ever used a bot, or scammed anybody, then you're wallet address will probably be blacklisted.
            require(!_isBlacklisted[sender] && !_isBlacklisted[recipient], "This address is blacklisted");
            require(sender != address(0), "ERC20: transfer from the zero address");
            require(recipient != address(0), "ERC20: transfer to the zero address");
            require(amount > 0, "Transfer amount must be greater than zero");
            
            if(sender != owner() && recipient != owner())
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");

            // is the token balance of this contract address over the min number of
            // tokens that we need to initiate a swap?
            // also, don't swap if sender is uniswap pair.
            uint256 contractTokenBalance = balanceOf(address(this));
            
            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }
            
            bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForMarketing;
            if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) {
                // We need to swap the current tokens to ETH and send to the Marketing wallet
                swapTokensForEth(contractTokenBalance);
                
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToMarketing(address(this).balance);
                }
            }
            
            //indicates if fee should be deducted from transfer
            bool takeFee = true;
            
            //if any account belongs to _isExcludedFromFee account then remove the fee
            if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){
                takeFee = false;
            }
            
            //transfer amount, it will take tax and Marketing fee
            _tokenTransfer(sender,recipient,amount,takeFee);
        }

        function swapTokensForEth(uint256 tokenAmount) private lockTheSwap{
            // 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 sendETHToMarketing(uint256 amount) private {
            _MarketingWalletAddress.transfer(amount.mul(3).div(8));
          
        }
        
        // We are exposing these functions to be able to manual swap and send
        // in case the token is highly valued and 5M becomes too much
        function manualSwap() external onlyOwner() {
            uint256 contractBalance = balanceOf(address(this));
            swapTokensForEth(contractBalance);
        }
        
        function manualSend() external {
            require(msg.sender==_MarketingWalletAddress);
            uint256 contractETHBalance = address(this).balance;
            sendETHToMarketing(contractETHBalance);
        }

        function setSwapEnabled(bool enabled) external onlyOwner(){
            swapEnabled = enabled;
        }
        
        function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
            if(!takeFee)
                removeAllFee();

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

            if(!takeFee)
                restoreAllFee();
        }

        function _transferStandard(address sender, address recipient, uint256 tAmount) private {
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tMarketing) = _getValues(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
            _takeMarketing(tMarketing); 
            _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 tMarketing) = _getValues(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);    
            _takeMarketing(tMarketing);           
            _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 tMarketing) = _getValues(tAmount);
            _tOwned[sender] = _tOwned[sender].sub(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
            _takeMarketing(tMarketing);   
            _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 tMarketing) = _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);   
            _takeMarketing(tMarketing);         
            _reflectFee(rFee, tFee);
            emit Transfer(sender, recipient, tTransferAmount);
        }

        function _takeMarketing(uint256 tMarketing) private {
            uint256 currentRate =  _getRate();
            uint256 rMarketing = tMarketing.mul(currentRate);
            _rOwned[address(this)] = _rOwned[address(this)].add(rMarketing);
            if(_isExcluded[address(this)])
                _tOwned[address(this)] = _tOwned[address(this)].add(tMarketing);
        }

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

         //to recieve ETH from uniswapV2Router when swaping
        receive() external payable {}

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

        function _getTValues(uint256 tAmount, uint256 taxFee, uint256 MarketingFee) private pure returns (uint256, uint256, uint256) {
            uint256 tFee = tAmount.mul(taxFee).div(100);
            uint256 tMarketing = tAmount.mul(MarketingFee).div(100);
            uint256 tTransferAmount = tAmount.sub(tFee).sub(tMarketing);
            return (tTransferAmount, tFee, tMarketing);
        }

        function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
            uint256 rAmount = tAmount.mul(currentRate);
            uint256 rFee = tFee.mul(currentRate);
            uint256 rTransferAmount = rAmount.sub(rFee);
            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 _getTaxFee() private view returns(uint256) {return _taxFee;}
        function _getMaxTxAmount() public view returns(uint256) {return _maxTxAmount;}
        function _getETHBalance() public view returns(uint256 balance) {return address(this).balance;}
        
        function _setTaxFee(uint256 taxFee) external onlyOwner() {
            require(taxFee >= 0 && taxFee <= 10, 'taxFee should be in 0 - 10');
            _taxFee = taxFee;
        }

        function _setMarketingFee(uint256 MarketingFee) external onlyOwner() {
            require(MarketingFee >= 1 && MarketingFee <= 10, 'MarketingFee should be in 1 - 10');
            _MarketingFee = MarketingFee;
        }
        
        function _setMarketingWallet(address payable MarketingWalletAddress) external onlyOwner() {
            _MarketingWalletAddress = MarketingWalletAddress;
        }
        
        function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {_maxTxAmount = maxTxAmount;}
        function removeFromBlackList(address account) external onlyOwner{_isBlacklisted[account] = false;}

         //adding multiple address to the blacklist - used to manually block known bots and scammers
        function addToBlackList(address[] calldata  addresses) external onlyOwner {
        for(uint256 i; i < addresses.length; ++i) {
            _isBlacklisted[addresses[i]] = true;
            }
        }
   
    }

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"MarketingWalletAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","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":"_MarketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getMaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"MarketingFee","type":"uint256"}],"name":"_setMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"MarketingWalletAddress","type":"address"}],"name":"_setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","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":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052678ac7230489e80000600a55600a54600019816200001e57fe5b0660001903600b556040518060400160405280600a81526020017f416e6172636879496e7500000000000000000000000000000000000000000000815250600d90805190602001906200007392919062000703565b506040518060400160405280600781526020017f416e617263687900000000000000000000000000000000000000000000000000815250600e9080519060200190620000c192919062000703565b506009600f60006101000a81548160ff021916908360ff1602179055506002601055600a60115560105460125560115460135560006014806101000a81548160ff0219169083151502179055506001601460156101000a81548160ff0219169083151502179055506702c68af0bb14000060155565048c273950006016553480156200014c57600080fd5b5060405162005cb538038062005cb5833981810160405260208110156200017257600080fd5b8101908080519060200190929190505050600062000195620006d260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b54600460006200028b620006d260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032957600080fd5b505afa1580156200033e573d6000803e3d6000fd5b505050506040513d60208110156200035557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c957600080fd5b505afa158015620003de573d6000803e3d6000fd5b505050506040513d6020811015620003f557600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200047057600080fd5b505af115801562000485573d6000803e3d6000fd5b505050506040513d60208110156200049c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505060016007600062000530620006da60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000663620006d260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a546040518082815260200191505060405180910390a35050620007a9565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200074657805160ff191683800117855562000777565b8280016001018555821562000777579182015b828111156200077657825182559160200191906001019062000759565b5b5090506200078691906200078a565b5090565b5b80821115620007a55760008160009055506001016200078b565b5090565b60805160601c60a05160601c6154ce620007e76000398061167452806137d4525080610fd95280613c2e5280613d1a5280613d4152506154ce6000f3fe6080604052600436106102555760003560e01c8063715018a611610139578063dd467064116100b6578063f2fde38b1161007a578063f2fde38b14610d78578063f429389014610dc9578063f7a9159114610de0578063f815a84214610e0b578063f84354f114610e36578063ff89757014610e875761025c565b8063dd46706414610be9578063dd62ed3e14610c24578063e01af92c14610ca9578063eedeacbe14610ce6578063f2cc0c1814610d275761025c565b8063a69df4b5116100fd578063a69df4b514610a72578063a9059cbb14610a89578063af9549e014610afa578063b6c5232414610b57578063cba0e99614610b825761025c565b8063715018a6146108de5780638da5cb5b146108f557806395d89b4114610936578063a457c2d7146109c6578063a52fe9bb14610a375761025c565b8063313ce567116101d25780634a49ac4c116101965780634a49ac4c1461074257806351bc3c85146107935780635342acb4146107aa5780635880b873146108115780636ddd17131461084c57806370a08231146108795761025c565b8063313ce567146105cc57806339509351146105fa5780633bd5d1731461066b5780634549b039146106a657806349bd5a5e146107015761025c565b80631bbae6e0116102195780631bbae6e0146103f95780631cdd3be3146104345780631ff53b601461049b57806323b872dd146104ec5780632d8381191461057d5761025c565b806306fdde0314610261578063095ea7b3146102f157806313114a9d146103625780631694505e1461038d57806318160ddd146103ce5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610f0d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102b657808201518184015260208101905061029b565b50505050905090810190601f1680156102e35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102fd57600080fd5b5061034a6004803603604081101561031457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610faf565b60405180821515815260200191505060405180910390f35b34801561036e57600080fd5b50610377610fcd565b6040518082815260200191505060405180910390f35b34801561039957600080fd5b506103a2610fd7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103da57600080fd5b506103e3610ffb565b6040518082815260200191505060405180910390f35b34801561040557600080fd5b506104326004803603602081101561041c57600080fd5b8101908080359060200190929190505050611005565b005b34801561044057600080fd5b506104836004803603602081101561045757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d7565b60405180821515815260200191505060405180910390f35b3480156104a757600080fd5b506104ea600480360360208110156104be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110f7565b005b3480156104f857600080fd5b506105656004803603606081101561050f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611203565b60405180821515815260200191505060405180910390f35b34801561058957600080fd5b506105b6600480360360208110156105a057600080fd5b81019080803590602001909291905050506112dc565b6040518082815260200191505060405180910390f35b3480156105d857600080fd5b506105e1611360565b604051808260ff16815260200191505060405180910390f35b34801561060657600080fd5b506106536004803603604081101561061d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611377565b60405180821515815260200191505060405180910390f35b34801561067757600080fd5b506106a46004803603602081101561068e57600080fd5b810190808035906020019092919050505061142a565b005b3480156106b257600080fd5b506106eb600480360360408110156106c957600080fd5b81019080803590602001909291908035151590602001909291905050506115bb565b6040518082815260200191505060405180910390f35b34801561070d57600080fd5b50610716611672565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561074e57600080fd5b506107916004803603602081101561076557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611696565b005b34801561079f57600080fd5b506107a86117b9565b005b3480156107b657600080fd5b506107f9600480360360208110156107cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061189a565b60405180821515815260200191505060405180910390f35b34801561081d57600080fd5b5061084a6004803603602081101561083457600080fd5b81019080803590602001909291905050506118f0565b005b34801561085857600080fd5b50610861611a46565b60405180821515815260200191505060405180910390f35b34801561088557600080fd5b506108c86004803603602081101561089c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a59565b6040518082815260200191505060405180910390f35b3480156108ea57600080fd5b506108f3611b44565b005b34801561090157600080fd5b5061090a611cca565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561094257600080fd5b5061094b611cf3565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561098b578082015181840152602081019050610970565b50505050905090810190601f1680156109b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156109d257600080fd5b50610a1f600480360360408110156109e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d95565b60405180821515815260200191505060405180910390f35b348015610a4357600080fd5b50610a7060048036036020811015610a5a57600080fd5b8101908080359060200190929190505050611e62565b005b348015610a7e57600080fd5b50610a87611fb8565b005b348015610a9557600080fd5b50610ae260048036036040811015610aac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506121d5565b60405180821515815260200191505060405180910390f35b348015610b0657600080fd5b50610b5560048036036040811015610b1d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506121f3565b005b348015610b6357600080fd5b50610b6c612316565b6040518082815260200191505060405180910390f35b348015610b8e57600080fd5b50610bd160048036036020811015610ba557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612320565b60405180821515815260200191505060405180910390f35b348015610bf557600080fd5b50610c2260048036036020811015610c0c57600080fd5b8101908080359060200190929190505050612376565b005b348015610c3057600080fd5b50610c9360048036036040811015610c4757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612567565b6040518082815260200191505060405180910390f35b348015610cb557600080fd5b50610ce460048036036020811015610ccc57600080fd5b810190808035151590602001909291905050506125ee565b005b348015610cf257600080fd5b50610cfb6126d3565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d3357600080fd5b50610d7660048036036020811015610d4a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126f9565b005b348015610d8457600080fd5b50610dc760048036036020811015610d9b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612aac565b005b348015610dd557600080fd5b50610dde612cb7565b005b348015610dec57600080fd5b50610df5612d22565b6040518082815260200191505060405180910390f35b348015610e1757600080fd5b50610e20612d2c565b6040518082815260200191505060405180910390f35b348015610e4257600080fd5b50610e8560048036036020811015610e5957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d34565b005b348015610e9357600080fd5b50610f0b60048036036020811015610eaa57600080fd5b8101908080359060200190640100000000811115610ec757600080fd5b820183602082011115610ed957600080fd5b80359060200191846020830284011164010000000083111715610efb57600080fd5b90919293919293905050506130be565b005b6060600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fa55780601f10610f7a57610100808354040283529160200191610fa5565b820191906000526020600020905b815481529060010190602001808311610f8857829003601f168201915b5050505050905090565b6000610fc3610fbc613224565b848461322c565b6001905092915050565b6000600c54905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600a54905090565b61100d613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060158190555050565b60036020528060005260406000206000915054906101000a900460ff1681565b6110ff613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611210848484613423565b6112d18461121c613224565b6112cc8560405180606001604052806028815260200161536960289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611282613224565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139109092919063ffffffff16565b61322c565b600190509392505050565b6000600b54821115611339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806152ae602a913960400191505060405180910390fd5b60006113436139d0565b905061135881846139fb90919063ffffffff16565b915050919050565b6000600f60009054906101000a900460ff16905090565b6000611420611384613224565b8461141b8560066000611395613224565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b61322c565b6001905092915050565b6000611434613224565b9050600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615425602c913960400191505060405180910390fd5b60006114e483613acd565b5050505050905061153d81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061159581600b54613b3490919063ffffffff16565b600b819055506115b083600c54613a4590919063ffffffff16565b600c81905550505050565b6000600a54831115611635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b8161165557600061164584613acd565b505050505090508091505061166c565b600061166084613acd565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b61169e613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461175e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6117c1613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611881576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600061188c30611a59565b905061189781613b7e565b50565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6118f8613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600081101580156119ca5750600a8111155b611a3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7461784665652073686f756c6420626520696e2030202d20313000000000000081525060200191505060405180910390fd5b8060108190555050565b601460159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611af457600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611b3f565b611b3c600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112dc565b90505b919050565b611b4c613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c0c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600e8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d8b5780601f10611d6057610100808354040283529160200191611d8b565b820191906000526020600020905b815481529060010190602001808311611d6e57829003601f168201915b5050505050905090565b6000611e58611da2613224565b84611e53856040518060600160405280602581526020016154746025913960066000611dcc613224565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139109092919063ffffffff16565b61322c565b6001905092915050565b611e6a613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f2a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015611f3c5750600a8111155b611fae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4d61726b6574696e674665652073686f756c6420626520696e2031202d20313081525060200191505060405180910390fd5b8060118190555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461205e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806154516023913960400191505060405180910390fd5b60025442116120d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006121e96121e2613224565b8484613423565b6001905092915050565b6121fb613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600254905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61237e613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461243e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6125f6613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601460156101000a81548160ff02191690831515021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612701613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b7350e617c888934f49054e8d0d23e8eed62b7a439573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561285a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806154036022913960400191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561291a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156129ee576129aa600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112dc565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612ab4613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b74576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612bfa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806152d86026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612d1157600080fd5b6000479050612d1f81613e60565b50565b6000601554905090565b600047905090565b612d3c613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612dfc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ebb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b6009805490508110156130ba578173ffffffffffffffffffffffffffffffffffffffff1660098281548110612eef57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156130ad57600960016009805490500381548110612f4b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660098281548110612f8357fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600980548061307357fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556130ba565b8080600101915050612ebe565b5050565b6130c6613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613186576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b8282905081101561321f576001600360008585858181106131a657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806001019050613189565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156132b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806153df6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613338576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806152fe6022913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134c75750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613539576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686973206164647265737320697320626c61636b6c6973746564000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806153ba6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061528b6023913960400191505060405180910390fd5b6000811161369e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806153916029913960400191505060405180910390fd5b6136a6611cca565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561371457506136e4611cca565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561377557601554811115613774576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806153206028913960400191505060405180910390fd5b5b600061378030611a59565b905060155481106137915760155490505b6000601654821015905060148054906101000a900460ff161580156137c25750601460159054906101000a900460ff165b80156137cb5750805b801561382357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561384b5761383182613b7e565b600047905060008111156138495761384847613e60565b5b505b600060019050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138f25750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156138fc57600090505b61390886868684613ef2565b505050505050565b60008383111582906139bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613982578082015181840152602081019050613967565b50505050905090810190601f1680156139af5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008060006139dd614203565b915091506139f481836139fb90919063ffffffff16565b9250505090565b6000613a3d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614494565b905092915050565b600080828401905083811015613ac3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000613aea8a60105460115461455a565b9250925092506000613afa6139d0565b90506000806000613b0c8e87866145f0565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000613b7683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613910565b905092915050565b60016014806101000a81548160ff0219169083151502179055506060600267ffffffffffffffff81118015613bb257600080fd5b50604051908082528060200260200182016040528015613be15781602001602082028036833780820191505090505b5090503081600081518110613bf257fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613c9257600080fd5b505afa158015613ca6573d6000803e3d6000fd5b505050506040513d6020811015613cbc57600080fd5b810190808051906020019092919050505081600181518110613cda57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d3f307f00000000000000000000000000000000000000000000000000000000000000008461322c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613e01578082015181840152602081019050613de6565b505050509050019650505050505050600060405180830381600087803b158015613e2a57600080fd5b505af1158015613e3e573d6000803e3d6000fd5b505050505060006014806101000a81548160ff02191690831515021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc613ec36008613eb560038661464e90919063ffffffff16565b6139fb90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613eee573d6000803e3d6000fd5b5050565b80613f0057613eff6146d4565b5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613fa35750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613fb857613fb3848484614717565b6141ef565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561405b5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156140705761406b848484614977565b6141ee565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156141145750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561412957614124848484614bd7565b6141ed565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156141cb5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156141e0576141db848484614da2565b6141ec565b6141eb848484614bd7565b5b5b5b5b806141fd576141fc615097565b5b50505050565b6000806000600b5490506000600a54905060005b6009805490508110156144575782600460006009848154811061423657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061431d57508160056000600984815481106142b557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561433457600b54600a5494509450505050614490565b6143bd600460006009848154811061434857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613b3490919063ffffffff16565b925061444860056000600984815481106143d357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613b3490919063ffffffff16565b91508080600101915050614217565b5061446f600a54600b546139fb90919063ffffffff16565b82101561448757600b54600a54935093505050614490565b81819350935050505b9091565b60008083118290614540576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156145055780820151818401526020810190506144ea565b50505050905090810190601f1680156145325780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161454c57fe5b049050809150509392505050565b6000806000806145866064614578888a61464e90919063ffffffff16565b6139fb90919063ffffffff16565b905060006145b060646145a2888b61464e90919063ffffffff16565b6139fb90919063ffffffff16565b905060006145d9826145cb858c613b3490919063ffffffff16565b613b3490919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080614609858861464e90919063ffffffff16565b90506000614620868861464e90919063ffffffff16565b905060006146378284613b3490919063ffffffff16565b905082818395509550955050505093509350939050565b60008083141561466157600090506146ce565b600082840290508284828161467257fe5b04146146c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806153486021913960400191505060405180910390fd5b809150505b92915050565b60006010541480156146e857506000601154145b156146f257614715565b601054601281905550601154601381905550600060108190555060006011819055505b565b60008060008060008061472987613acd565b95509550955095509550955061478787600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061481c86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148b185600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148fd816150ab565b6149078483615250565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061498987613acd565b9550955095509550955095506149e786600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a7c83600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b1185600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b5d816150ab565b614b678483615250565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614be987613acd565b955095509550955095509550614c4786600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614cdc85600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d28816150ab565b614d328483615250565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614db487613acd565b955095509550955095509550614e1287600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ea786600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614f3c83600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614fd185600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061501d816150ab565b6150278483615250565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601254601081905550601354601181905550565b60006150b56139d0565b905060006150cc828461464e90919063ffffffff16565b905061512081600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561524b5761520783600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61526582600b54613b3490919063ffffffff16565b600b8190555061528081600c54613a4590919063ffffffff16565b600c81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208ae8b7ab56a906b01ea20d507b6cefc845bd2ffaccb724739789d4ec2e1c349c64736f6c634300060c0033000000000000000000000000af81ee95e1f90c1f42db5980c15c67cbb5b6a0d4

Deployed Bytecode

0x6080604052600436106102555760003560e01c8063715018a611610139578063dd467064116100b6578063f2fde38b1161007a578063f2fde38b14610d78578063f429389014610dc9578063f7a9159114610de0578063f815a84214610e0b578063f84354f114610e36578063ff89757014610e875761025c565b8063dd46706414610be9578063dd62ed3e14610c24578063e01af92c14610ca9578063eedeacbe14610ce6578063f2cc0c1814610d275761025c565b8063a69df4b5116100fd578063a69df4b514610a72578063a9059cbb14610a89578063af9549e014610afa578063b6c5232414610b57578063cba0e99614610b825761025c565b8063715018a6146108de5780638da5cb5b146108f557806395d89b4114610936578063a457c2d7146109c6578063a52fe9bb14610a375761025c565b8063313ce567116101d25780634a49ac4c116101965780634a49ac4c1461074257806351bc3c85146107935780635342acb4146107aa5780635880b873146108115780636ddd17131461084c57806370a08231146108795761025c565b8063313ce567146105cc57806339509351146105fa5780633bd5d1731461066b5780634549b039146106a657806349bd5a5e146107015761025c565b80631bbae6e0116102195780631bbae6e0146103f95780631cdd3be3146104345780631ff53b601461049b57806323b872dd146104ec5780632d8381191461057d5761025c565b806306fdde0314610261578063095ea7b3146102f157806313114a9d146103625780631694505e1461038d57806318160ddd146103ce5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610f0d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102b657808201518184015260208101905061029b565b50505050905090810190601f1680156102e35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102fd57600080fd5b5061034a6004803603604081101561031457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610faf565b60405180821515815260200191505060405180910390f35b34801561036e57600080fd5b50610377610fcd565b6040518082815260200191505060405180910390f35b34801561039957600080fd5b506103a2610fd7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103da57600080fd5b506103e3610ffb565b6040518082815260200191505060405180910390f35b34801561040557600080fd5b506104326004803603602081101561041c57600080fd5b8101908080359060200190929190505050611005565b005b34801561044057600080fd5b506104836004803603602081101561045757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d7565b60405180821515815260200191505060405180910390f35b3480156104a757600080fd5b506104ea600480360360208110156104be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110f7565b005b3480156104f857600080fd5b506105656004803603606081101561050f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611203565b60405180821515815260200191505060405180910390f35b34801561058957600080fd5b506105b6600480360360208110156105a057600080fd5b81019080803590602001909291905050506112dc565b6040518082815260200191505060405180910390f35b3480156105d857600080fd5b506105e1611360565b604051808260ff16815260200191505060405180910390f35b34801561060657600080fd5b506106536004803603604081101561061d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611377565b60405180821515815260200191505060405180910390f35b34801561067757600080fd5b506106a46004803603602081101561068e57600080fd5b810190808035906020019092919050505061142a565b005b3480156106b257600080fd5b506106eb600480360360408110156106c957600080fd5b81019080803590602001909291908035151590602001909291905050506115bb565b6040518082815260200191505060405180910390f35b34801561070d57600080fd5b50610716611672565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561074e57600080fd5b506107916004803603602081101561076557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611696565b005b34801561079f57600080fd5b506107a86117b9565b005b3480156107b657600080fd5b506107f9600480360360208110156107cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061189a565b60405180821515815260200191505060405180910390f35b34801561081d57600080fd5b5061084a6004803603602081101561083457600080fd5b81019080803590602001909291905050506118f0565b005b34801561085857600080fd5b50610861611a46565b60405180821515815260200191505060405180910390f35b34801561088557600080fd5b506108c86004803603602081101561089c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a59565b6040518082815260200191505060405180910390f35b3480156108ea57600080fd5b506108f3611b44565b005b34801561090157600080fd5b5061090a611cca565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561094257600080fd5b5061094b611cf3565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561098b578082015181840152602081019050610970565b50505050905090810190601f1680156109b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156109d257600080fd5b50610a1f600480360360408110156109e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d95565b60405180821515815260200191505060405180910390f35b348015610a4357600080fd5b50610a7060048036036020811015610a5a57600080fd5b8101908080359060200190929190505050611e62565b005b348015610a7e57600080fd5b50610a87611fb8565b005b348015610a9557600080fd5b50610ae260048036036040811015610aac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506121d5565b60405180821515815260200191505060405180910390f35b348015610b0657600080fd5b50610b5560048036036040811015610b1d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506121f3565b005b348015610b6357600080fd5b50610b6c612316565b6040518082815260200191505060405180910390f35b348015610b8e57600080fd5b50610bd160048036036020811015610ba557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612320565b60405180821515815260200191505060405180910390f35b348015610bf557600080fd5b50610c2260048036036020811015610c0c57600080fd5b8101908080359060200190929190505050612376565b005b348015610c3057600080fd5b50610c9360048036036040811015610c4757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612567565b6040518082815260200191505060405180910390f35b348015610cb557600080fd5b50610ce460048036036020811015610ccc57600080fd5b810190808035151590602001909291905050506125ee565b005b348015610cf257600080fd5b50610cfb6126d3565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d3357600080fd5b50610d7660048036036020811015610d4a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126f9565b005b348015610d8457600080fd5b50610dc760048036036020811015610d9b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612aac565b005b348015610dd557600080fd5b50610dde612cb7565b005b348015610dec57600080fd5b50610df5612d22565b6040518082815260200191505060405180910390f35b348015610e1757600080fd5b50610e20612d2c565b6040518082815260200191505060405180910390f35b348015610e4257600080fd5b50610e8560048036036020811015610e5957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d34565b005b348015610e9357600080fd5b50610f0b60048036036020811015610eaa57600080fd5b8101908080359060200190640100000000811115610ec757600080fd5b820183602082011115610ed957600080fd5b80359060200191846020830284011164010000000083111715610efb57600080fd5b90919293919293905050506130be565b005b6060600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fa55780601f10610f7a57610100808354040283529160200191610fa5565b820191906000526020600020905b815481529060010190602001808311610f8857829003601f168201915b5050505050905090565b6000610fc3610fbc613224565b848461322c565b6001905092915050565b6000600c54905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600a54905090565b61100d613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060158190555050565b60036020528060005260406000206000915054906101000a900460ff1681565b6110ff613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611210848484613423565b6112d18461121c613224565b6112cc8560405180606001604052806028815260200161536960289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611282613224565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139109092919063ffffffff16565b61322c565b600190509392505050565b6000600b54821115611339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806152ae602a913960400191505060405180910390fd5b60006113436139d0565b905061135881846139fb90919063ffffffff16565b915050919050565b6000600f60009054906101000a900460ff16905090565b6000611420611384613224565b8461141b8560066000611395613224565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b61322c565b6001905092915050565b6000611434613224565b9050600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615425602c913960400191505060405180910390fd5b60006114e483613acd565b5050505050905061153d81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061159581600b54613b3490919063ffffffff16565b600b819055506115b083600c54613a4590919063ffffffff16565b600c81905550505050565b6000600a54831115611635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b8161165557600061164584613acd565b505050505090508091505061166c565b600061166084613acd565b50505050915050809150505b92915050565b7f00000000000000000000000083a902c40d41848ada0f1e8d8bb23a3e2d51576581565b61169e613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461175e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6117c1613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611881576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600061188c30611a59565b905061189781613b7e565b50565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6118f8613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600081101580156119ca5750600a8111155b611a3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7461784665652073686f756c6420626520696e2030202d20313000000000000081525060200191505060405180910390fd5b8060108190555050565b601460159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611af457600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611b3f565b611b3c600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112dc565b90505b919050565b611b4c613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c0c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600e8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d8b5780601f10611d6057610100808354040283529160200191611d8b565b820191906000526020600020905b815481529060010190602001808311611d6e57829003601f168201915b5050505050905090565b6000611e58611da2613224565b84611e53856040518060600160405280602581526020016154746025913960066000611dcc613224565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139109092919063ffffffff16565b61322c565b6001905092915050565b611e6a613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f2a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015611f3c5750600a8111155b611fae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4d61726b6574696e674665652073686f756c6420626520696e2031202d20313081525060200191505060405180910390fd5b8060118190555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461205e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806154516023913960400191505060405180910390fd5b60025442116120d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006121e96121e2613224565b8484613423565b6001905092915050565b6121fb613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600254905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61237e613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461243e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6125f6613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601460156101000a81548160ff02191690831515021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612701613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b7350e617c888934f49054e8d0d23e8eed62b7a439573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561285a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806154036022913960400191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561291a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156129ee576129aa600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112dc565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612ab4613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b74576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612bfa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806152d86026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612d1157600080fd5b6000479050612d1f81613e60565b50565b6000601554905090565b600047905090565b612d3c613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612dfc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ebb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b6009805490508110156130ba578173ffffffffffffffffffffffffffffffffffffffff1660098281548110612eef57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156130ad57600960016009805490500381548110612f4b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660098281548110612f8357fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600980548061307357fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556130ba565b8080600101915050612ebe565b5050565b6130c6613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613186576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b8282905081101561321f576001600360008585858181106131a657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806001019050613189565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156132b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806153df6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613338576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806152fe6022913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134c75750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613539576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686973206164647265737320697320626c61636b6c6973746564000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806153ba6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061528b6023913960400191505060405180910390fd5b6000811161369e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806153916029913960400191505060405180910390fd5b6136a6611cca565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561371457506136e4611cca565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561377557601554811115613774576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806153206028913960400191505060405180910390fd5b5b600061378030611a59565b905060155481106137915760155490505b6000601654821015905060148054906101000a900460ff161580156137c25750601460159054906101000a900460ff165b80156137cb5750805b801561382357507f00000000000000000000000083a902c40d41848ada0f1e8d8bb23a3e2d51576573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561384b5761383182613b7e565b600047905060008111156138495761384847613e60565b5b505b600060019050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138f25750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156138fc57600090505b61390886868684613ef2565b505050505050565b60008383111582906139bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613982578082015181840152602081019050613967565b50505050905090810190601f1680156139af5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008060006139dd614203565b915091506139f481836139fb90919063ffffffff16565b9250505090565b6000613a3d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614494565b905092915050565b600080828401905083811015613ac3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000613aea8a60105460115461455a565b9250925092506000613afa6139d0565b90506000806000613b0c8e87866145f0565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000613b7683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613910565b905092915050565b60016014806101000a81548160ff0219169083151502179055506060600267ffffffffffffffff81118015613bb257600080fd5b50604051908082528060200260200182016040528015613be15781602001602082028036833780820191505090505b5090503081600081518110613bf257fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613c9257600080fd5b505afa158015613ca6573d6000803e3d6000fd5b505050506040513d6020811015613cbc57600080fd5b810190808051906020019092919050505081600181518110613cda57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d3f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461322c565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613e01578082015181840152602081019050613de6565b505050509050019650505050505050600060405180830381600087803b158015613e2a57600080fd5b505af1158015613e3e573d6000803e3d6000fd5b505050505060006014806101000a81548160ff02191690831515021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc613ec36008613eb560038661464e90919063ffffffff16565b6139fb90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613eee573d6000803e3d6000fd5b5050565b80613f0057613eff6146d4565b5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613fa35750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613fb857613fb3848484614717565b6141ef565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561405b5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156140705761406b848484614977565b6141ee565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156141145750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561412957614124848484614bd7565b6141ed565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156141cb5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156141e0576141db848484614da2565b6141ec565b6141eb848484614bd7565b5b5b5b5b806141fd576141fc615097565b5b50505050565b6000806000600b5490506000600a54905060005b6009805490508110156144575782600460006009848154811061423657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061431d57508160056000600984815481106142b557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561433457600b54600a5494509450505050614490565b6143bd600460006009848154811061434857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613b3490919063ffffffff16565b925061444860056000600984815481106143d357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613b3490919063ffffffff16565b91508080600101915050614217565b5061446f600a54600b546139fb90919063ffffffff16565b82101561448757600b54600a54935093505050614490565b81819350935050505b9091565b60008083118290614540576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156145055780820151818401526020810190506144ea565b50505050905090810190601f1680156145325780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161454c57fe5b049050809150509392505050565b6000806000806145866064614578888a61464e90919063ffffffff16565b6139fb90919063ffffffff16565b905060006145b060646145a2888b61464e90919063ffffffff16565b6139fb90919063ffffffff16565b905060006145d9826145cb858c613b3490919063ffffffff16565b613b3490919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080614609858861464e90919063ffffffff16565b90506000614620868861464e90919063ffffffff16565b905060006146378284613b3490919063ffffffff16565b905082818395509550955050505093509350939050565b60008083141561466157600090506146ce565b600082840290508284828161467257fe5b04146146c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806153486021913960400191505060405180910390fd5b809150505b92915050565b60006010541480156146e857506000601154145b156146f257614715565b601054601281905550601154601381905550600060108190555060006011819055505b565b60008060008060008061472987613acd565b95509550955095509550955061478787600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061481c86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148b185600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148fd816150ab565b6149078483615250565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061498987613acd565b9550955095509550955095506149e786600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a7c83600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b1185600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b5d816150ab565b614b678483615250565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614be987613acd565b955095509550955095509550614c4786600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614cdc85600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d28816150ab565b614d328483615250565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614db487613acd565b955095509550955095509550614e1287600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ea786600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614f3c83600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614fd185600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061501d816150ab565b6150278483615250565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601254601081905550601354601181905550565b60006150b56139d0565b905060006150cc828461464e90919063ffffffff16565b905061512081600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561524b5761520783600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61526582600b54613b3490919063ffffffff16565b600b8190555061528081600c54613a4590919063ffffffff16565b600c81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208ae8b7ab56a906b01ea20d507b6cefc845bd2ffaccb724739789d4ec2e1c349c64736f6c634300060c0033

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

000000000000000000000000af81ee95e1f90c1f42db5980c15c67cbb5b6a0d4

-----Decoded View---------------
Arg [0] : MarketingWalletAddress (address): 0xAF81ee95e1F90c1f42dB5980C15C67CBB5b6a0D4

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000af81ee95e1f90c1f42db5980c15c67cbb5b6a0d4


Deployed Bytecode Sourcemap

16083:19587:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18791:67;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19685:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21033:71;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17238:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19026:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;35136:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16217:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;34951:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19870:329;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22017:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18949:67;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20211:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21116:405;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21533:472;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17300:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;35242:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27556:168;;;;;;;;;;;;;:::i;:::-;;23770:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;34515:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17381:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19117:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6292:160;;;;;;;;;;;;;:::i;:::-;;6054:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18868:71;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20453:281;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;34708:223;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7083:313;;;;;;;;;;;;;:::i;:::-;;19339:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20876:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6732:97;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20746:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6839:234;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19522:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27976:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17171:46;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22298:475;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6462:260;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27744:220;;;;;;;;;;;;;:::i;:::-;;34313:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;34401:94;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22785:522;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;35454:204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18791:67;18828:13;18851:5;18844:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18791:67;:::o;19685:173::-;19760:4;19781:39;19790:12;:10;:12::i;:::-;19804:7;19813:6;19781:8;:39::i;:::-;19842:4;19835:11;;19685:173;;;;:::o;21033:71::-;21075:7;21092:10;;21085:17;;21033:71;:::o;17238:51::-;;;:::o;19026:79::-;19079:7;19096;;19089:14;;19026:79;:::o;35136:96::-;6205:12;:10;:12::i;:::-;6195:22;;:6;;;;;;;;;;:22;;;6187:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35219:11:::1;35204:12;:26;;;;35136:96:::0;:::o;16217:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;34951:165::-;6205:12;:10;:12::i;:::-;6195:22;;:6;;;;;;;;;;:22;;;6187:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35082:22:::1;35056:23;;:48;;;;;;;;;;;;;;;;;;34951:165:::0;:::o;19870:329::-;19968:4;19989:36;19999:6;20007:9;20018:6;19989:9;:36::i;:::-;20040:121;20049:6;20057:12;:10;:12::i;:::-;20071:89;20109:6;20071:89;;;;;;;;;;;;;;;;;:11;:19;20083:6;20071:19;;;;;;;;;;;;;;;:33;20091:12;:10;:12::i;:::-;20071:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;20040:8;:121::i;:::-;20183:4;20176:11;;19870:329;;;;;:::o;22017:269::-;22083:7;22126;;22115;:18;;22107:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22195:19;22218:10;:8;:10::i;:::-;22195:33;;22250:24;22262:11;22250:7;:11;;:24;;;;:::i;:::-;22243:31;;;22017:269;;;:::o;18949:67::-;18990:5;19005:9;;;;;;;;;;;18998:16;;18949:67;:::o;20211:230::-;20299:4;20320:83;20329:12;:10;:12::i;:::-;20343:7;20352:50;20391:10;20352:11;:25;20364:12;:10;:12::i;:::-;20352:25;;;;;;;;;;;;;;;:34;20378:7;20352:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;20320:8;:83::i;:::-;20425:4;20418:11;;20211:230;;;;:::o;21116:405::-;21172:14;21189:12;:10;:12::i;:::-;21172:29;;21225:11;:19;21237:6;21225:19;;;;;;;;;;;;;;;;;;;;;;;;;21224:20;21216:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21309:15;21333:19;21344:7;21333:10;:19::i;:::-;21308:44;;;;;;;21385:28;21405:7;21385;:15;21393:6;21385:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;21367:7;:15;21375:6;21367:15;;;;;;;;;;;;;;;:46;;;;21438:20;21450:7;21438;;:11;;:20;;;;:::i;:::-;21428:7;:30;;;;21486:23;21501:7;21486:10;;:14;;:23;;;;:::i;:::-;21473:10;:36;;;;21116:405;;;:::o;21533:472::-;21623:7;21666;;21655;:18;;21647:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21729:17;21724:270;;21768:15;21792:19;21803:7;21792:10;:19::i;:::-;21767:44;;;;;;;21837:7;21830:14;;;;;21724:270;21887:23;21918:19;21929:7;21918:10;:19::i;:::-;21885:52;;;;;;;21963:15;21956:22;;;21533:472;;;;;:::o;17300:38::-;;;:::o;35242:98::-;6205:12;:10;:12::i;:::-;6195:22;;:6;;;;;;;;;;:22;;;6187:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35333:5:::1;35307:14;:23;35322:7;35307:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;35242:98:::0;:::o;27556:168::-;6205:12;:10;:12::i;:::-;6195:22;;:6;;;;;;;;;;:22;;;6187:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27614:23:::1;27640:24;27658:4;27640:9;:24::i;:::-;27614:50;;27679:33;27696:15;27679:16;:33::i;:::-;6269:1;27556:168::o:0;23770:131::-;23834:4;23862:18;:27;23881:7;23862:27;;;;;;;;;;;;;;;;;;;;;;;;;23855:34;;23770:131;;;:::o;34515:181::-;6205:12;:10;:12::i;:::-;6195:22;;:6;;;;;;;;;;:22;;;6187:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34605:1:::1;34595:6;:11;;:27;;;;;34620:2;34610:6;:12;;34595:27;34587:66;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;34678:6;34668:7;:16;;;;34515:181:::0;:::o;17381:30::-;;;;;;;;;;;;;:::o;19117:210::-;19183:7;19211:11;:20;19223:7;19211:20;;;;;;;;;;;;;;;;;;;;;;;;;19207:49;;;19240:7;:16;19248:7;19240:16;;;;;;;;;;;;;;;;19233:23;;;;19207:49;19278:37;19298:7;:16;19306:7;19298:16;;;;;;;;;;;;;;;;19278:19;:37::i;:::-;19271:44;;19117:210;;;;:::o;6292:160::-;6205:12;:10;:12::i;:::-;6195:22;;:6;;;;;;;;;;:22;;;6187:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6403:1:::1;6366:40;;6387:6;::::0;::::1;;;;;;;;6366:40;;;;;;;;;;;;6438:1;6421:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6292:160::o:0;6054:87::-;6092:7;6123:6;;;;;;;;;;;6116:13;;6054:87;:::o;18868:71::-;18907:13;18930:7;18923:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18868:71;:::o;20453:281::-;20546:4;20567:129;20576:12;:10;:12::i;:::-;20590:7;20599:96;20638:15;20599:96;;;;;;;;;;;;;;;;;:11;:25;20611:12;:10;:12::i;:::-;20599:25;;;;;;;;;;;;;;;:34;20625:7;20599:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;20567:8;:129::i;:::-;20718:4;20711:11;;20453:281;;;;:::o;34708:223::-;6205:12;:10;:12::i;:::-;6195:22;;:6;;;;;;;;;;:22;;;6187:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34816:1:::1;34800:12;:17;;:39;;;;;34837:2;34821:12;:18;;34800:39;34792:84;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;34907:12;34891:13;:28;;;;34708:223:::0;:::o;7083:313::-;7157:10;7139:28;;:14;;;;;;;;;;;:28;;;7131:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7236:9;;7230:3;:15;7222:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7331:14;;;;;;;;;;;7302:44;;7323:6;;;;;;;;;;7302:44;;;;;;;;;;;;7370:14;;;;;;;;;;;7361:6;;:23;;;;;;;;;;;;;;;;;;7083:313::o;19339:171::-;19417:4;19434:42;19444:12;:10;:12::i;:::-;19458:9;19469:6;19434:9;:42::i;:::-;19494:4;19487:11;;19339:171;;;;:::o;20876:145::-;6205:12;:10;:12::i;:::-;6195:22;;:6;;;;;;;;;;:22;;;6187:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21001:8:::1;20971:18;:27;20990:7;20971:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;20876:145:::0;;:::o;6732:97::-;6777:7;6808:9;;6801:16;;6732:97;:::o;20746:118::-;20804:4;20832:11;:20;20844:7;20832:20;;;;;;;;;;;;;;;;;;;;;;;;;20825:27;;20746:118;;;:::o;6839:234::-;6205:12;:10;:12::i;:::-;6195:22;;:6;;;;;;;;;;:22;;;6187:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6924:6:::1;::::0;::::1;;;;;;;;6907:14;;:23;;;;;;;;;;;;;;;;;;6962:1;6945:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6997:4;6991:3;:10;6979:9;:22;;;;7058:1;7021:40;;7042:6;::::0;::::1;;;;;;;;7021:40;;;;;;;;;;;;6839:234:::0;:::o;19522:151::-;19603:7;19634:11;:18;19646:5;19634:18;;;;;;;;;;;;;;;:27;19653:7;19634:27;;;;;;;;;;;;;;;;19627:34;;19522:151;;;;:::o;27976:106::-;6205:12;:10;:12::i;:::-;6195:22;;:6;;;;;;;;;;:22;;;6187:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28063:7:::1;28049:11;;:21;;;;;;;;;;;;;;;;;;27976:106:::0;:::o;17171:46::-;;;;;;;;;;;;;:::o;22298:475::-;6205:12;:10;:12::i;:::-;6195:22;;:6;;;;;;;;;;:22;;;6187:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22394:42:::1;22383:53;;:7;:53;;;;22375:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22499:11;:20;22511:7;22499:20;;;;;;;;;;;;;;;;;;;;;;;;;22498:21;22490:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;22588:1;22569:7;:16;22577:7;22569:16;;;;;;;;;;;;;;;;:20;22566:116;;;22629:37;22649:7;:16;22657:7;22649:16;;;;;;;;;;;;;;;;22629:19;:37::i;:::-;22610:7;:16;22618:7;22610:16;;;;;;;;;;;;;;;:56;;;;22566:116;22719:4;22696:11;:20;22708:7;22696:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;22738:9;22753:7;22738:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22298:475:::0;:::o;6462:260::-;6205:12;:10;:12::i;:::-;6195:22;;:6;;;;;;;;;;:22;;;6187:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6575:1:::1;6555:22;;:8;:22;;;;6547:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6669:8;6640:38;;6661:6;::::0;::::1;;;;;;;;6640:38;;;;;;;;;;;;6702:8;6693:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6462:260:::0;:::o;27744:220::-;27810:23;;;;;;;;;;;27798:35;;:10;:35;;;27790:44;;;;;;27849:26;27878:21;27849:50;;27914:38;27933:18;27914;:38::i;:::-;27744:220;:::o;34313:78::-;34360:7;34377:12;;34370:19;;34313:78;:::o;34401:94::-;34447:15;34472:21;34465:28;;34401:94;:::o;22785:522::-;6205:12;:10;:12::i;:::-;6195:22;;:6;;;;;;;;;;:22;;;6187:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22870:11:::1;:20;22882:7;22870:20;;;;;;;;;;;;;;;;;;;;;;;;;22862:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;22942:9;22937:359;22961:9;:16;;;;22957:1;:20;22937:359;;;23023:7;23007:23;;:9;23017:1;23007:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;23003:278;;;23070:9;23099:1;23080:9;:16;;;;:20;23070:31;;;;;;;;;;;;;;;;;;;;;;;;;23055:9;23065:1;23055:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;23143:1;23124:7;:16;23132:7;23124:16;;;;;;;;;;;;;;;:20;;;;23190:5;23167:11;:20;23179:7;23167:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;23218:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23256:5;;23003:278;22979:3;;;;;;;22937:359;;;;22785:522:::0;:::o;35454:204::-;6205:12;:10;:12::i;:::-;6195:22;;:6;;;;;;;;;;:22;;;6187:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35543:9:::1;35539:108;35558:9;;:16;;35554:1;:20;35539:108;;;35627:4;35596:14;:28;35611:9;;35621:1;35611:12;;;;;;;;;;;;;;;35596:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;35576:3;;;;;35539:108;;;;35454:204:::0;;:::o;461:114::-;514:15;553:10;546:17;;461:114;:::o;23913:357::-;24027:1;24010:19;;:5;:19;;;;24002:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24112:1;24093:21;;:7;:21;;;;24085:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24200:6;24170:11;:18;24182:5;24170:18;;;;;;;;;;;;;;;:27;24189:7;24170:27;;;;;;;;;;;;;;;:36;;;;24242:7;24226:32;;24235:5;24226:32;;;24251:6;24226:32;;;;;;;;;;;;;;;;;;23913:357;;;:::o;24282:2271::-;24540:14;:22;24555:6;24540:22;;;;;;;;;;;;;;;;;;;;;;;;;24539:23;:53;;;;;24567:14;:25;24582:9;24567:25;;;;;;;;;;;;;;;;;;;;;;;;;24566:26;24539:53;24531:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24665:1;24647:20;;:6;:20;;;;24639:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24753:1;24732:23;;:9;:23;;;;24724:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24827:1;24818:6;:10;24810:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24916:7;:5;:7::i;:::-;24906:17;;:6;:17;;;;:41;;;;;24940:7;:5;:7::i;:::-;24927:20;;:9;:20;;;;24906:41;24903:138;;;24984:12;;24974:6;:22;;24966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24903:138;25259:28;25290:24;25308:4;25290:9;:24::i;:::-;25259:55;;25370:12;;25346:20;:36;25343:124;;25439:12;;25416:35;;25343:124;25495:24;25546:34;;25522:20;:58;;25495:85;;25600:6;;;;;;;;;;25599:7;:22;;;;;25610:11;;;;;;;;;;;25599:22;:45;;;;;25625:19;25599:45;:72;;;;;25658:13;25648:23;;:6;:23;;;;25599:72;25595:462;;;25787:38;25804:20;25787:16;:38::i;:::-;25862:26;25891:21;25862:50;;25955:1;25934:18;:22;25931:111;;;25981:41;26000:21;25981:18;:41::i;:::-;25931:111;25595:462;;26150:12;26165:4;26150:19;;26289:18;:26;26308:6;26289:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;26319:18;:29;26338:9;26319:29;;;;;;;;;;;;;;;;;;;;;;;;;26289:59;26286:113;;;26378:5;26368:15;;26286:113;26494:47;26509:6;26516:9;26526:6;26533:7;26494:14;:47::i;:::-;24282:2271;;;;;;:::o;1949:206::-;2035:7;2072:1;2067;:6;;2075:12;2059:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2103:9;2119:1;2115;:5;2103:17;;2142:1;2135:8;;;1949:206;;;;;:::o;33426:175::-;33467:7;33492:15;33509;33528:19;:17;:19::i;:::-;33491:56;;;;33569:20;33581:7;33569;:11;;:20;;;;:::i;:::-;33562:27;;;;33426:175;:::o;2449:140::-;2507:7;2538:39;2542:1;2545;2538:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2531:46;;2449:140;;;;:::o;1590:195::-;1648:7;1672:9;1688:1;1684;:5;1672:17;;1717:1;1712;:6;;1704:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1772:1;1765:8;;;1590:195;;;;:::o;32144:496::-;32203:7;32212;32221;32230;32239;32248;32273:23;32298:12;32312:18;32334:44;32346:7;32355;;32364:13;;32334:11;:44::i;:::-;32272:106;;;;;;32393:19;32416:10;:8;:10::i;:::-;32393:33;;32442:15;32459:23;32484:12;32500:39;32512:7;32521:4;32527:11;32500;:39::i;:::-;32441:98;;;;;;32562:7;32571:15;32588:4;32594:15;32611:4;32617:10;32554:74;;;;;;;;;;;;;;;;;;;32144:496;;;;;;;:::o;1795:144::-;1853:7;1884:43;1888:1;1891;1884:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1877:50;;1795:144;;;;:::o;26565:656::-;17798:4;17789:6;;:13;;;;;;;;;;;;;;;;;;26710:21:::1;26748:1;26734:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26710:40;;26783:4;26765;26770:1;26765:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;26813:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;26803:4;26808:1;26803:7;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;26852:62;26869:4;26884:15;26902:11;26852:8;:62::i;:::-;26961:15;:66;;;27046:11;27076:1;27124:4;27155;27179:15;26961:248;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17817:1;17842:5:::0;17833:6;;:14;;;;;;;;;;;;;;;;;;26565:656;:::o;27241:145::-;27308:23;;;;;;;;;;;:32;;:54;27341:20;27359:1;27341:13;27352:1;27341:6;:10;;:13;;;;:::i;:::-;:17;;:20;;;;:::i;:::-;27308:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27241:145;:::o;28102:883::-;28218:7;28214:44;;28244:14;:12;:14::i;:::-;28214:44;28279:11;:19;28291:6;28279:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;28303:11;:22;28315:9;28303:22;;;;;;;;;;;;;;;;;;;;;;;;;28302:23;28279:46;28275:637;;;28346:48;28368:6;28376:9;28387:6;28346:21;:48::i;:::-;28275:637;;;28421:11;:19;28433:6;28421:19;;;;;;;;;;;;;;;;;;;;;;;;;28420:20;:46;;;;;28444:11;:22;28456:9;28444:22;;;;;;;;;;;;;;;;;;;;;;;;;28420:46;28416:496;;;28487:46;28507:6;28515:9;28526:6;28487:19;:46::i;:::-;28416:496;;;28560:11;:19;28572:6;28560:19;;;;;;;;;;;;;;;;;;;;;;;;;28559:20;:47;;;;;28584:11;:22;28596:9;28584:22;;;;;;;;;;;;;;;;;;;;;;;;;28583:23;28559:47;28555:357;;;28627:44;28645:6;28653:9;28664:6;28627:17;:44::i;:::-;28555:357;;;28697:11;:19;28709:6;28697:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;28720:11;:22;28732:9;28720:22;;;;;;;;;;;;;;;;;;;;;;;;;28697:45;28693:219;;;28763:48;28785:6;28793:9;28804:6;28763:21;:48::i;:::-;28693:219;;;28852:44;28870:6;28878:9;28889:6;28852:17;:44::i;:::-;28693:219;28555:357;28416:496;28275:637;28932:7;28928:45;;28958:15;:13;:15::i;:::-;28928:45;28102:883;;;;:::o;33613:601::-;33663:7;33672;33696:15;33714:7;;33696:25;;33736:15;33754:7;;33736:25;;33787:9;33782:305;33806:9;:16;;;;33802:1;:20;33782:305;;;33876:7;33852;:21;33860:9;33870:1;33860:12;;;;;;;;;;;;;;;;;;;;;;;;;33852:21;;;;;;;;;;;;;;;;:31;:66;;;;33911:7;33887;:21;33895:9;33905:1;33895:12;;;;;;;;;;;;;;;;;;;;;;;;;33887:21;;;;;;;;;;;;;;;;:31;33852:66;33848:97;;;33928:7;;33937;;33920:25;;;;;;;;;33848:97;33974:34;33986:7;:21;33994:9;34004:1;33994:12;;;;;;;;;;;;;;;;;;;;;;;;;33986:21;;;;;;;;;;;;;;;;33974:7;:11;;:34;;;;:::i;:::-;33964:44;;34037:34;34049:7;:21;34057:9;34067:1;34057:12;;;;;;;;;;;;;;;;;;;;;;;;;34049:21;;;;;;;;;;;;;;;;34037:7;:11;;:34;;;;:::i;:::-;34027:44;;33824:3;;;;;;;33782:305;;;;34115:20;34127:7;;34115;;:11;;:20;;;;:::i;:::-;34105:7;:30;34101:61;;;34145:7;;34154;;34137:25;;;;;;;;34101:61;34185:7;34194;34177:25;;;;;;33613:601;;;:::o;2599:205::-;2685:7;2721:1;2717;:5;2724:12;2709:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2752:9;2768:1;2764;:5;;;;;;2752:17;;2791:1;2784:8;;;2599:205;;;;;:::o;32652:396::-;32750:7;32759;32768;32792:12;32807:28;32831:3;32807:19;32819:6;32807:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;32792:43;;32850:18;32871:34;32901:3;32871:25;32883:12;32871:7;:11;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;32850:55;;32920:23;32946:33;32968:10;32946:17;32958:4;32946:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;32920:59;;33002:15;33019:4;33025:10;32994:42;;;;;;;;;32652:396;;;;;;;:::o;33060:354::-;33155:7;33164;33173;33197:15;33215:24;33227:11;33215:7;:11;;:24;;;;:::i;:::-;33197:42;;33254:12;33269:21;33278:11;33269:4;:8;;:21;;;;:::i;:::-;33254:36;;33305:23;33331:17;33343:4;33331:7;:11;;:17;;;;:::i;:::-;33305:43;;33371:7;33380:15;33397:4;33363:39;;;;;;;;;33060:354;;;;;;;:::o;2165:274::-;2223:7;2256:1;2251;:6;2247:55;;;2285:1;2278:8;;;;2247:55;2316:9;2332:1;2328;:5;2316:17;;2365:1;2360;2356;:5;;;;;;:10;2348:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2426:1;2419:8;;;2165:274;;;;;:::o;23319:282::-;23380:1;23369:7;;:12;:34;;;;;23402:1;23385:13;;:18;23369:34;23366:46;;;23405:7;;23366:46;23458:7;;23440:15;:25;;;;23504:13;;23480:21;:37;;;;23556:1;23546:7;:11;;;;23588:1;23572:13;:17;;;;23319:282;:::o;30175:599::-;30282:15;30299:23;30324:12;30338:23;30363:12;30377:18;30399:19;30410:7;30399:10;:19::i;:::-;30281:137;;;;;;;;;;;;30451:28;30471:7;30451;:15;30459:6;30451:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;30433:7;:15;30441:6;30433:15;;;;;;;;;;;;;;;:46;;;;30512:28;30532:7;30512;:15;30520:6;30512:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;30494:7;:15;30502:6;30494:15;;;;;;;;;;;;;;;:46;;;;30576:39;30599:15;30576:7;:18;30584:9;30576:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;30555:7;:18;30563:9;30555:18;;;;;;;;;;;;;;;:60;;;;30631:26;30646:10;30631:14;:26::i;:::-;30675:23;30687:4;30693;30675:11;:23::i;:::-;30735:9;30718:44;;30727:6;30718:44;;;30746:15;30718:44;;;;;;;;;;;;;;;;;;30175:599;;;;;;;;;:::o;29541:622::-;29646:15;29663:23;29688:12;29702:23;29727:12;29741:18;29763:19;29774:7;29763:10;:19::i;:::-;29645:137;;;;;;;;;;;;29815:28;29835:7;29815;:15;29823:6;29815:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;29797:7;:15;29805:6;29797:15;;;;;;;;;;;;;;;:46;;;;29879:39;29902:15;29879:7;:18;29887:9;29879:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;29858:7;:18;29866:9;29858:18;;;;;;;;;;;;;;;:60;;;;29954:39;29977:15;29954:7;:18;29962:9;29954:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;29933:7;:18;29941:9;29933:18;;;;;;;;;;;;;;;:60;;;;30012:26;30027:10;30012:14;:26::i;:::-;30064:23;30076:4;30082;30064:11;:23::i;:::-;30124:9;30107:44;;30116:6;30107:44;;;30135:15;30107:44;;;;;;;;;;;;;;;;;;29541:622;;;;;;;;;:::o;28997:532::-;29100:15;29117:23;29142:12;29156:23;29181:12;29195:18;29217:19;29228:7;29217:10;:19::i;:::-;29099:137;;;;;;;;;;;;29269:28;29289:7;29269;:15;29277:6;29269:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;29251:7;:15;29259:6;29251:15;;;;;;;;;;;;;;;:46;;;;29333:39;29356:15;29333:7;:18;29341:9;29333:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;29312:7;:18;29320:9;29312:18;;;;;;;;;;;;;;;:60;;;;29388:26;29403:10;29388:14;:26::i;:::-;29430:23;29442:4;29448;29430:11;:23::i;:::-;29490:9;29473:44;;29482:6;29473:44;;;29501:15;29473:44;;;;;;;;;;;;;;;;;;28997:532;;;;;;;;;:::o;30786:682::-;30893:15;30910:23;30935:12;30949:23;30974:12;30988:18;31010:19;31021:7;31010:10;:19::i;:::-;30892:137;;;;;;;;;;;;31062:28;31082:7;31062;:15;31070:6;31062:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;31044:7;:15;31052:6;31044:15;;;;;;;;;;;;;;;:46;;;;31123:28;31143:7;31123;:15;31131:6;31123:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;31105:7;:15;31113:6;31105:15;;;;;;;;;;;;;;;:46;;;;31187:39;31210:15;31187:7;:18;31195:9;31187:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;31166:7;:18;31174:9;31166:18;;;;;;;;;;;;;;;:60;;;;31262:39;31285:15;31262:7;:18;31270:9;31262:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;31241:7;:18;31249:9;31241:18;;;;;;;;;;;;;;;:60;;;;31319:26;31334:10;31319:14;:26::i;:::-;31369:23;31381:4;31387;31369:11;:23::i;:::-;31429:9;31412:44;;31421:6;31412:44;;;31440:15;31412:44;;;;;;;;;;;;;;;;;;30786:682;;;;;;;;;:::o;23617:137::-;23675:15;;23665:7;:25;;;;23721:21;;23705:13;:37;;;;23617:137::o;31480:379::-;31547:19;31570:10;:8;:10::i;:::-;31547:33;;31595:18;31616:27;31631:11;31616:10;:14;;:27;;;;:::i;:::-;31595:48;;31683:38;31710:10;31683:7;:22;31699:4;31683:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;31658:7;:22;31674:4;31658:22;;;;;;;;;;;;;;;:63;;;;31739:11;:26;31759:4;31739:26;;;;;;;;;;;;;;;;;;;;;;;;;31736:111;;;31809:38;31836:10;31809:7;:22;31825:4;31809:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;31784:7;:22;31800:4;31784:22;;;;;;;;;;;;;;;:63;;;;31736:111;31480:379;;;:::o;31871:159::-;31953:17;31965:4;31953:7;;:11;;:17;;;;:::i;:::-;31943:7;:27;;;;31998:20;32013:4;31998:10;;:14;;:20;;;;:::i;:::-;31985:10;:33;;;;31871:159;;:::o

Swarm Source

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