ETH Price: $3,489.52 (+2.63%)
Gas: 13 Gwei

Token

Keyring Token (KEYRING)
 

Overview

Max Total Supply

1,000,000,000 KEYRING

Holders

41

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
4,940,869.570703730558805372 KEYRING

Value
$0.00
0x0a6e6d297fC307cDcFda4E123F3b550aaa1cbB14
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Keyring is a decentralized space where you catch up with the latest trends in the Metaverse and mystifying web3 realms and a non-custodial wallet.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
KeyringToken

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-25
*/

/*
KEYRING TOKEN

WEB: https://keyringtoken.com
TWITTER: twitter.com/keyringtoken
TELEGRAM: t.me/keyringtoken

Introduction
Blockchain is now recognized as a new field in IT. In recent years, there have been kits and services for blockchain 
development, and it has even come to be called the blockchain industry.
One of the biggest barriers to blockchain development is interoperability. Different blockchains cannot communicate 
with each other, and tokens cannot be transferred between them. Several projects have been launched to solve these 
problems. However, the blockchain industry is growing in size and services are fragmented. The Keyring Project focuses 
on the blockchain app industry, which has been developing remarkably in recent years, and aims to solve this interoperability 
problem as well as to create a new, fragmented blockchain service. There are some other problems that Keyring app solves 
as well such as complexity of dealing with crypto assets, currency risks, reliability problem and so on.
The main advantage of the Keyring app is that it combines innovative technologies, brand-new product ideas and leading 
business models in order to overcome the obstacles of the economy we live in.
Keyring token has multiple use cases and acting as a payment method and a tool in keyring app and developing a strong 
sense of community not only on the blockchain but in the real world as well. All the products and different parts of ecosystem 
come together to provide its users with all benefits of blockchain and Web3.
Keyring is pioneering the mass-adoption of DeFi by creating Non-Custodial, Institutional-Grade Investment Products for Core 
Crypto Assets and distributing them. Institutional Market via Keyring Advisors. The Keyring is built on Ethereum and will be built 
on Arbitrum, Ethereum's leading Layer 2 scaling chain soon. It is managed by Keyring team. blockchain services company, and 
governed by holders of the $KEYRING token.
About app
KEYRING offers a compact package for professional travelers to explore the Blockchain space from DeFi to Metaverse comfortably.
At first, KEYRING SWAP seems to be a separate app, but it is actually part of the KEYRING system. This crypto swap app operates as 
a DEX aggregator which automatically sorts out the best rate among different DEXs in every transaction. Its mechanism allows you to 
extend your profit margin through optimized trading at the best rate in every trading session.
KEYRING App now provides an actual multichain environment, where any EVM compatible chains can be added easily and instantly. 
For instance, you can seek a listed network to add right on KEYRING App. During the process, no RPC information is needed. In case 
of custom RPC, or unlisted network, you can add in the network manually by inserting the RPC parameters Since the version 1.8.0, the 
app has enabled users to send any coins, or tokens easily within the app from Bitcoin (BTC), Ethereum (ETH), to other coins on EVM 
compatible networks (Avalanche, Polygon, Optimism, Arbitrum, Harmony ONE, TomoChain, etc.). Unstoppable Domains (UD) is also 
integrated within the feature. This update lets users send & receive cryptocurrencies through crypto domains provided by UD instead 
of using regular Blockchain addresses.  NFC Keycard is a unique feature of KEYRING App that lets users extract account authorization 
to an NTAG215 NFC card. Once extracted, every transaction will require a tap of the set up NFC Keycard for authorization. The same 
thing happens when accessing Private Key on the app. NFC Keycard aims to bring an extra layer of security on top of KEYRING App, 
which should protect you in case your phone gets lost.
Buy Crypto with Credit Card: Buy BTC, Buy ETH & More

This amazing feature is empowered by Simplex, a reputed service in the field. Users can easily purchase BTC, ETH and more cryptocurrencies 
up to $20,000 USD/month directly from KEYRING App by using a credit card, or debit card. The whole process should take less than 30 minutes.

Your Trusted Gateway to the DeFi World
The app opens a secure doorway to any DeFi apps by establishing a bond from your wallet to your app through the Wallet Connect method. 
This differentiates KEYRING App from regular Blockchain wallet as certain limitations are completely removed.

Connect to DeFi apps unlimitedly
By staying on top of Wallet Connect technology, users can connect to any DeFi apps that support Wallet Connect feature. In short, you can 
sign in DeFi apps instantly on any browsers across different devices without having to install an extra extension, or set up anything.

Amazing DeFi Experience  
Simultaneously signing in now comes true on KEYRING SWAP. It eliminates the process of changing RPC while switching chains. In fact, you 
will be able to sign in and trade on Uniswap (Ethereum), Trader JOE (Avalanche), and Quickswap (Polygon) at the same time without worrying 
about changing wallet networks, RPC, or switching the corresponding wallet.

*/
// SPDX-License-Identifier: None

pragma solidity ^0.8.2;

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

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

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 public _owner;
    
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

    mapping (address => bool) private _isExcluded;
    address[] private _excluded;

    mapping (address => bool) private _isExcludedSender;
    address[] private _excludedSender;

    string  public Website = "www.keyringtoken.com";
    string  public Total_Fee = "9%";
    string  public Slippage = "12%";

    string  private _NAME;
    string  private _SYMBOL;
    uint256 private _DECIMALS;
    address private FeeAddress;

    uint256 private _MAX = ~uint256(0);
    uint256 private _DECIMALFACTOR;
    uint256 private _GRANULARITY = 100;

    uint256 private _tTotal;
    uint256 private _rTotal;

    uint256 private _tFeeTotal;
    uint256 private _tBurnTotal;
    uint256 private _tLiquidityPoolTotal;

    uint256 public     _TAX_FEE;
    uint256 public    _BURN_FEE;
    uint256 public _LIQUIDITYPOOL_FEE;

    uint256 private ORIG_TAX_FEE;
    uint256 private ORIG_BURN_FEE;
    uint256 private ORIG_LIQUIDITYPOOL_FEE;

    address private dev;
    mapping (address => bool) private _antiBot;

    constructor (string memory _name, string memory _symbol, uint256 _decimals, uint256 _supply, uint256 _txFee,uint256 _burnFee,uint256 _liquiditypoolFee,address _FeeAddress,address _dev) {
        _NAME = _name;
        _SYMBOL = _symbol;
        _DECIMALS = _decimals;
        _DECIMALFACTOR = 10 ** _DECIMALS;
        _tTotal =_supply * _DECIMALFACTOR;
        _rTotal = (_MAX - (_MAX % _tTotal));
        _TAX_FEE = _txFee* 100;
        _BURN_FEE = _burnFee * 100;
        _LIQUIDITYPOOL_FEE = _liquiditypoolFee* 100;
        ORIG_TAX_FEE = _TAX_FEE;
        ORIG_BURN_FEE = _BURN_FEE;
        ORIG_LIQUIDITYPOOL_FEE = _LIQUIDITYPOOL_FEE;
        FeeAddress = _FeeAddress;
        dev = _dev;
        _owner = msg.sender;
        _rOwned[_owner] = _rTotal;

    }

    modifier onlyDev() {
        require(dev == _msgSender(), "Caller is not the owner");
        _;
    }

    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 uint8(_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, "TOKEN20: 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, "TOKEN20: decreased allowance below zero"));
        return true;
    }

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

    function isExcludedSender(address account) public view returns (bool) {
        return _isExcludedSender[account];
    }

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

    function totalBurn() public view returns (uint256) {
        return _tBurnTotal;
    }

    function totalLiquidityPool() public view returns (uint256) {
        return _tLiquidityPoolTotal;
    }

    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 onlyDev() {
        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 onlyDev() {
        require(_isExcluded[account], "Account is already included");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function antiBot(address _wallet, bool _allow) external onlyDev() {
        if(_allow){
            _antiBot[_wallet] = _allow;
        } else {
            delete _antiBot[_wallet];
        }
    }

    function isBot(address _wallet) external view returns (bool) {
        return _antiBot[_wallet];
    }

    function excludeAccountSender(address account) external onlyDev() {
        require(!_isExcludedSender[account], "Account is already excluded");

        _isExcludedSender[account] = true;
        _excludedSender.push(account);
    }

    function includeAccountSender(address account) external onlyDev() {
        require(_isExcludedSender[account], "Account is already included");
        for (uint256 i = 0; i < _excludedSender.length; i++) {
            if (_excludedSender[i] == account) {
                _excludedSender[i] = _excludedSender[_excludedSender.length - 1];
                _isExcludedSender[account] = false;
                _excludedSender.pop();
                break;
            }
        }
    }

    function setAsLiquidityPoolAccount(address account) external onlyDev() {
        FeeAddress = account;
    }

    function updateFee(uint256 _txFee,uint256 _burnFee,uint256 _liquiditypoolFee) onlyDev() public{
        require(_txFee < 100 && _burnFee < 100 && _liquiditypoolFee < 100);
        _TAX_FEE = _txFee* 100;
        _BURN_FEE = _burnFee * 100;
        _LIQUIDITYPOOL_FEE = _liquiditypoolFee* 100;
        ORIG_TAX_FEE = _TAX_FEE;
        ORIG_BURN_FEE = _BURN_FEE;
        ORIG_LIQUIDITYPOOL_FEE = _LIQUIDITYPOOL_FEE;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "TOKEN20: approve from the zero address");
        require(spender != address(0), "TOKEN20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

        require(!_antiBot[sender], "Bot not allowed");

        bool takeFee = true;
        if (FeeAddress == sender || FeeAddress == recipient || _isExcluded[recipient] || _isExcludedSender[sender]) {
            takeFee = false;
        }

        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 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tLiquidityPool) = _getValues(tAmount);
        uint256 rBurn =  tBurn.mul(currentRate);
        _standardTransferContent(sender, recipient, rAmount, rTransferAmount);
        _sendToLiquidityPool(tLiquidityPool, sender);
        _reflectFee(rFee, rBurn, tFee, tBurn, tLiquidityPool);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _standardTransferContent(address sender, address recipient, uint256 rAmount, uint256 rTransferAmount) private {
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tLiquidityPool) = _getValues(tAmount);
        uint256 rBurn =  tBurn.mul(currentRate);
        _excludedFromTransferContent(sender, recipient, tTransferAmount, rAmount, rTransferAmount);
        _sendToLiquidityPool(tLiquidityPool, sender);
        _reflectFee(rFee, rBurn, tFee, tBurn, tLiquidityPool);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _excludedFromTransferContent(address sender, address recipient, uint256 tTransferAmount, uint256 rAmount, uint256 rTransferAmount) private {
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tLiquidityPool) = _getValues(tAmount);
        uint256 rBurn =  tBurn.mul(currentRate);
        _excludedToTransferContent(sender, recipient, tAmount, rAmount, rTransferAmount);
        _sendToLiquidityPool(tLiquidityPool, sender);
        _reflectFee(rFee, rBurn, tFee, tBurn, tLiquidityPool);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _excludedToTransferContent(address sender, address recipient, uint256 tAmount, uint256 rAmount, uint256 rTransferAmount) private {
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tLiquidityPool) = _getValues(tAmount);
        uint256 rBurn =  tBurn.mul(currentRate);
        _bothTransferContent(sender, recipient, tAmount, rAmount, tTransferAmount, rTransferAmount);
        _sendToLiquidityPool(tLiquidityPool, sender);
        _reflectFee(rFee, rBurn, tFee, tBurn, tLiquidityPool);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _bothTransferContent(address sender, address recipient, uint256 tAmount, uint256 rAmount, uint256 tTransferAmount, uint256 rTransferAmount) private {
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
    }

    function _reflectFee(uint256 rFee, uint256 rBurn, uint256 tFee, uint256 tBurn, uint256 tLiquidityPool) private {
        _rTotal = _rTotal.sub(rFee).sub(rBurn);
        _tFeeTotal = _tFeeTotal.add(tFee);
        _tBurnTotal = _tBurnTotal.add(tBurn);
        _tLiquidityPoolTotal = _tLiquidityPoolTotal.add(tLiquidityPool);
        _tTotal = _tTotal.sub(tBurn);
        emit Transfer(address(this), address(0), tBurn);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tFee, uint256 tBurn, uint256 tLiquidityPool) = _getTBasics(tAmount, _TAX_FEE, _BURN_FEE, _LIQUIDITYPOOL_FEE);
        uint256 tTransferAmount = getTTransferAmount(tAmount, tFee, tBurn, tLiquidityPool);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rFee) = _getRBasics(tAmount, tFee, currentRate);
        uint256 rTransferAmount = _getRTransferAmount(rAmount, rFee, tBurn, tLiquidityPool, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tBurn, tLiquidityPool);
    }

    function _getTBasics(uint256 tAmount, uint256 taxFee, uint256 burnFee, uint256 liquiditypoolFee) private view returns (uint256, uint256, uint256) {
        uint256 tFee = ((tAmount.mul(taxFee)).div(_GRANULARITY)).div(100);
        uint256 tBurn = ((tAmount.mul(burnFee)).div(_GRANULARITY)).div(100);
        uint256 tLiquidityPool = ((tAmount.mul(liquiditypoolFee)).div(_GRANULARITY)).div(100);
        return (tFee, tBurn, tLiquidityPool);
    }

    function getTTransferAmount(uint256 tAmount, uint256 tFee, uint256 tBurn, uint256 tLiquidityPool) private pure returns (uint256) {
        return tAmount.sub(tFee).sub(tBurn).sub(tLiquidityPool);
    }

    function _getRBasics(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        return (rAmount, rFee);
    }

    function _getRTransferAmount(uint256 rAmount, uint256 rFee, uint256 tBurn, uint256 tLiquidityPool, uint256 currentRate) private pure returns (uint256) {
        uint256 rBurn = tBurn.mul(currentRate);
        uint256 rLiquidityPool = tLiquidityPool.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rBurn).sub(rLiquidityPool);
        return rTransferAmount;
    }

    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 _sendToLiquidityPool(uint256 tLiquidityPool, address sender) private {
        uint256 currentRate = _getRate();
        uint256 rLiquidityPool = tLiquidityPool.mul(currentRate);
        _rOwned[FeeAddress] = _rOwned[FeeAddress].add(rLiquidityPool);
        _tOwned[FeeAddress] = _tOwned[FeeAddress].add(tLiquidityPool);
        emit Transfer(sender, FeeAddress, tLiquidityPool);
    }

    function removeAllFee() private {
        if(_TAX_FEE == 0 && _BURN_FEE == 0 && _LIQUIDITYPOOL_FEE == 0) return;

        ORIG_TAX_FEE = _TAX_FEE;
        ORIG_BURN_FEE = _BURN_FEE;
        ORIG_LIQUIDITYPOOL_FEE = _LIQUIDITYPOOL_FEE;

        _TAX_FEE = 0;
        _BURN_FEE = 0;
        _LIQUIDITYPOOL_FEE = 0;
    }

    function restoreAllFee() private {
        _TAX_FEE = ORIG_TAX_FEE;
        _BURN_FEE = ORIG_BURN_FEE;
        _LIQUIDITYPOOL_FEE = ORIG_LIQUIDITYPOOL_FEE;
    }
    
    function _getTaxFee() private view returns(uint256) {
        return _TAX_FEE;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_decimals","type":"uint256"},{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"uint256","name":"_txFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_liquiditypoolFee","type":"uint256"},{"internalType":"address","name":"_FeeAddress","type":"address"},{"internalType":"address","name":"_dev","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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Slippage","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Total_Fee","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Website","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_BURN_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_LIQUIDITYPOOL_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_TAX_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"_wallet","type":"address"},{"internalType":"bool","name":"_allow","type":"bool"}],"name":"antiBot","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccountSender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccountSender","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":"_wallet","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"isExcludedSender","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setAsLiquidityPoolAccount","outputs":[],"stateMutability":"nonpayable","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":"totalBurn","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":"totalLiquidityPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_txFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_liquiditypoolFee","type":"uint256"}],"name":"updateFee","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526040518060400160405280601481526020017f7777772e6b657972696e67746f6b656e2e636f6d00000000000000000000000081525060089080519060200190620000519291906200034b565b506040518060400160405280600281526020017f3925000000000000000000000000000000000000000000000000000000000000815250600990805190602001906200009f9291906200034b565b506040518060400160405280600381526020017f3132250000000000000000000000000000000000000000000000000000000000815250600a9080519060200190620000ed9291906200034b565b50600019600f5560646011553480156200010657600080fd5b5060405162005b2238038062005b2283398181016040528101906200012c9190620004a7565b88600b9080519060200190620001449291906200034b565b5087600c90805190602001906200015d9291906200034b565b5086600d81905550600d54600a6200017691906200067e565b601081905550601054866200018c9190620007bb565b601281905550601254600f54620001a4919062000937565b600f54620001b391906200081c565b601381905550606485620001c89190620007bb565b601781905550606484620001dd9190620007bb565b601881905550606483620001f29190620007bb565b601981905550601754601a81905550601854601b81905550601954601c8190555081600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601354600160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050505050505062000a91565b8280546200035990620008cb565b90600052602060002090601f0160209004810192826200037d5760008555620003c9565b82601f106200039857805160ff1916838001178555620003c9565b82800160010185558215620003c9579182015b82811115620003c8578251825591602001919060010190620003ab565b5b509050620003d89190620003dc565b5090565b5b80821115620003f7576000816000905550600101620003dd565b5090565b6000620004126200040c84620005ed565b620005c4565b90508281526020810184848401111562000431576200043062000a30565b5b6200043e84828562000895565b509392505050565b600081519050620004578162000a5d565b92915050565b600082601f83011262000475576200047462000a2b565b5b815162000487848260208601620003fb565b91505092915050565b600081519050620004a18162000a77565b92915050565b60008060008060008060008060006101208a8c031215620004cd57620004cc62000a3a565b5b60008a015167ffffffffffffffff811115620004ee57620004ed62000a35565b5b620004fc8c828d016200045d565b99505060208a015167ffffffffffffffff81111562000520576200051f62000a35565b5b6200052e8c828d016200045d565b9850506040620005418c828d0162000490565b9750506060620005548c828d0162000490565b9650506080620005678c828d0162000490565b95505060a06200057a8c828d0162000490565b94505060c06200058d8c828d0162000490565b93505060e0620005a08c828d0162000446565b925050610100620005b48c828d0162000446565b9150509295985092959850929598565b6000620005d0620005e3565b9050620005de828262000901565b919050565b6000604051905090565b600067ffffffffffffffff8211156200060b576200060a620009fc565b5b620006168262000a3f565b9050602081019050919050565b6000808291508390505b600185111562000675578086048111156200064d576200064c6200096f565b5b60018516156200065d5780820291505b80810290506200066d8562000a50565b94506200062d565b94509492505050565b60006200068b826200088b565b915062000698836200088b565b9250620006c77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006cf565b905092915050565b600082620006e15760019050620007b4565b81620006f15760009050620007b4565b81600181146200070a576002811462000715576200074b565b6001915050620007b4565b60ff8411156200072a57620007296200096f565b5b8360020a9150848211156200074457620007436200096f565b5b50620007b4565b5060208310610133831016604e8410600b8410161715620007855782820a9050838111156200077f576200077e6200096f565b5b620007b4565b62000794848484600162000623565b92509050818404811115620007ae57620007ad6200096f565b5b81810290505b9392505050565b6000620007c8826200088b565b9150620007d5836200088b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200081157620008106200096f565b5b828202905092915050565b600062000829826200088b565b915062000836836200088b565b9250828210156200084c576200084b6200096f565b5b828203905092915050565b600062000864826200086b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015620008b557808201518184015260208101905062000898565b83811115620008c5576000848401525b50505050565b60006002820490506001821680620008e457607f821691505b60208210811415620008fb57620008fa620009cd565b5b50919050565b6200090c8262000a3f565b810181811067ffffffffffffffff821117156200092e576200092d620009fc565b5b80604052505050565b600062000944826200088b565b915062000951836200088b565b9250826200096457620009636200099e565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b62000a688162000857565b811462000a7457600080fd5b50565b62000a82816200088b565b811462000a8e57600080fd5b50565b6150818062000aa16000396000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80637dd37f7011610130578063aec48a0e116100b8578063dd62ed3e1161007c578063dd62ed3e14610694578063f2cc0c18146106c4578063f2fde38b146106e0578063f84354f1146106fc578063fc061a4f1461071857610227565b8063aec48a0e146105dc578063b2bdfa7b146105f8578063b586242814610616578063b7492daf14610634578063cba0e9961461066457610227565b806395d89b41116100ff57806395d89b4114610522578063a457c2d714610540578063a55d4d5c14610570578063a9059cbb1461058e578063a9490cb1146105be57610227565b80637dd37f70146104ae57806381fb5812146104cc5780638da5cb5b146104e85780638e7d94b51461050657610227565b806339509351116101b35780634146db39116101825780634146db39146104085780634549b0391461042657806370a0823114610456578063715018a61461048657806377ef79931461049057610227565b8063395093511461036e5780633bbac5791461039e5780633bd5d173146103ce5780633c9f861d146103ea57610227565b80631ef7b430116101fa5780631ef7b430146102b657806323b872dd146102d45780632597e6e5146103045780632d83811914610320578063313ce5671461035057610227565b806306fdde031461022c578063095ea7b31461024a57806313114a9d1461027a57806318160ddd14610298575b600080fd5b610234610734565b6040516102419190614642565b60405180910390f35b610264600480360381019061025f9190614267565b6107c6565b6040516102719190614627565b60405180910390f35b6102826107e4565b60405161028f9190614864565b60405180910390f35b6102a06107ee565b6040516102ad9190614864565b60405180910390f35b6102be6107f8565b6040516102cb9190614864565b60405180910390f35b6102ee60048036038101906102e991906141d4565b610802565b6040516102fb9190614627565b60405180910390f35b61031e60048036038101906103199190614227565b6108db565b005b61033a600480360381019061033591906142a7565b610a28565b6040516103479190614864565b60405180910390f35b610358610a96565b604051610365919061487f565b60405180910390f35b61038860048036038101906103839190614267565b610aa0565b6040516103959190614627565b60405180910390f35b6103b860048036038101906103b39190614167565b610b53565b6040516103c59190614627565b60405180910390f35b6103e860048036038101906103e391906142a7565b610ba9565b005b6103f2610d25565b6040516103ff9190614864565b60405180910390f35b610410610d2f565b60405161041d9190614642565b60405180910390f35b610440600480360381019061043b91906142d4565b610dbd565b60405161044d9190614864565b60405180910390f35b610470600480360381019061046b9190614167565b610e43565b60405161047d9190614864565b60405180910390f35b61048e610f2e565b005b610498611081565b6040516104a59190614864565b60405180910390f35b6104b6611087565b6040516104c39190614642565b60405180910390f35b6104e660048036038101906104e19190614167565b611115565b005b6104f06112f7565b6040516104fd919061460c565b60405180910390f35b610520600480360381019061051b9190614167565b611320565b005b61052a61162c565b6040516105379190614642565b60405180910390f35b61055a60048036038101906105559190614267565b6116be565b6040516105679190614627565b60405180910390f35b61057861178b565b6040516105859190614864565b60405180910390f35b6105a860048036038101906105a39190614267565b611791565b6040516105b59190614627565b60405180910390f35b6105c66117af565b6040516105d39190614642565b60405180910390f35b6105f660048036038101906105f19190614167565b61183d565b005b610600611918565b60405161060d919061460c565b60405180910390f35b61061e61193c565b60405161062b9190614864565b60405180910390f35b61064e60048036038101906106499190614167565b611942565b60405161065b9190614627565b60405180910390f35b61067e60048036038101906106799190614167565b611998565b60405161068b9190614627565b60405180910390f35b6106ae60048036038101906106a99190614194565b6119ee565b6040516106bb9190614864565b60405180910390f35b6106de60048036038101906106d99190614167565b611a75565b005b6106fa60048036038101906106f59190614167565b611d2b565b005b61071660048036038101906107119190614167565b611eed565b005b610732600480360381019061072d9190614314565b61223e565b005b6060600b805461074390614a53565b80601f016020809104026020016040519081016040528092919081815260200182805461076f90614a53565b80156107bc5780601f10610791576101008083540402835291602001916107bc565b820191906000526020600020905b81548152906001019060200180831161079f57829003601f168201915b5050505050905090565b60006107da6107d3612353565b848461235b565b6001905092915050565b6000601454905090565b6000601254905090565b6000601654905090565b600061080f848484612526565b6108d08461081b612353565b6108cb856040518060600160405280602a8152602001615022602a9139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610881612353565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b489092919063ffffffff16565b61235b565b600190509392505050565b6108e3612353565b73ffffffffffffffffffffffffffffffffffffffff16601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610972576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610969906146a4565b60405180910390fd5b80156109d45780601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610a24565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b5050565b6000601354821115610a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a66906146c4565b60405180910390fd5b6000610a79612bac565b9050610a8e8184612bd790919063ffffffff16565b915050919050565b6000600d54905090565b6000610b49610aad612353565b84610b448560036000610abe612353565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2190919063ffffffff16565b61235b565b6001905092915050565b6000601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610bb3612353565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3990614844565b60405180910390fd5b6000610c4d83612c7f565b5050505050509050610ca781600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0d90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610cff81601354612d0d90919063ffffffff16565b601381905550610d1a83601454612c2190919063ffffffff16565b601481905550505050565b6000601554905090565b60098054610d3c90614a53565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6890614a53565b8015610db55780601f10610d8a57610100808354040283529160200191610db5565b820191906000526020600020905b815481529060010190602001808311610d9857829003601f168201915b505050505081565b6000601254831115610e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfb90614764565b60405180910390fd5b81610e25576000610e1484612c7f565b505050505050905080915050610e3d565b6000610e3084612c7f565b5050505050915050809150505b92915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ede57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610f29565b610f26600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a28565b90505b919050565b610f36612353565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fba906147c4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60185481565b600a805461109490614a53565b80601f01602080910402602001604051908101604052809291908181526020018280546110c090614a53565b801561110d5780601f106110e25761010080835404028352916020019161110d565b820191906000526020600020905b8154815290600101906020018083116110f057829003601f168201915b505050505081565b61111d612353565b73ffffffffffffffffffffffffffffffffffffffff16601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a3906146a4565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611239576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123090614724565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611328612353565b73ffffffffffffffffffffffffffffffffffffffff16601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ae906146a4565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143a90614744565b60405180910390fd5b60005b600780549050811015611628578173ffffffffffffffffffffffffffffffffffffffff166007828154811061147e5761147d614b8a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561161557600760016007805490506114d99190614997565b815481106114ea576114e9614b8a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166007828154811061152957611528614b8a565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060078054806115db576115da614b5b565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611628565b808061162090614a85565b915050611446565b5050565b6060600c805461163b90614a53565b80601f016020809104026020016040519081016040528092919081815260200182805461166790614a53565b80156116b45780601f10611689576101008083540402835291602001916116b4565b820191906000526020600020905b81548152906001019060200180831161169757829003601f168201915b5050505050905090565b60006117816116cb612353565b8461177c85604051806060016040528060278152602001614ffb60279139600360006116f5612353565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b489092919063ffffffff16565b61235b565b6001905092915050565b60195481565b60006117a561179e612353565b8484612526565b6001905092915050565b600880546117bc90614a53565b80601f01602080910402602001604051908101604052809291908181526020018280546117e890614a53565b80156118355780601f1061180a57610100808354040283529160200191611835565b820191906000526020600020905b81548152906001019060200180831161181857829003601f168201915b505050505081565b611845612353565b73ffffffffffffffffffffffffffffffffffffffff16601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cb906146a4565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a7d612353565b73ffffffffffffffffffffffffffffffffffffffff16601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b03906146a4565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9090614724565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611c6d57611c29600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a28565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611d33612353565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db7906147c4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e27906146e4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ef5612353565b73ffffffffffffffffffffffffffffffffffffffff16601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7b906146a4565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200790614744565b60405180910390fd5b60005b60058054905081101561223a578173ffffffffffffffffffffffffffffffffffffffff166005828154811061204b5761204a614b8a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561222757600560016005805490506120a69190614997565b815481106120b7576120b6614b8a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600582815481106120f6576120f5614b8a565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060058054806121ed576121ec614b5b565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561223a565b808061223290614a85565b915050612013565b5050565b612246612353565b73ffffffffffffffffffffffffffffffffffffffff16601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cc906146a4565b60405180910390fd5b6064831080156122e55750606482105b80156122f15750606481105b6122fa57600080fd5b606483612307919061493d565b60178190555060648261231a919061493d565b60188190555060648161232d919061493d565b601981905550601754601a81905550601854601b81905550601954601c81905550505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c290614824565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561243b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243290614804565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125199190614864565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258d90614684565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fd90614664565b60405180910390fd5b60008111612649576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612640906147e4565b60405180910390fd5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156126d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cd906147a4565b60405180910390fd5b6000600190508373ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061278557508273ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b806127d95750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061282d5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561283757600090505b8061284557612844612d57565b5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128e85750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128fd576128f8848484612db9565b612b34565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129a05750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156129b5576129b0848484612e95565b612b33565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612a595750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a6e57612a69848484612f71565b612b32565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b105750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612b2557612b2084848461304c565b612b31565b612b30848484612f71565b5b5b5b5b80612b4257612b41613129565b5b50505050565b6000838311158290612b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b879190614642565b60405180910390fd5b5060008385612b9f9190614997565b9050809150509392505050565b6000806000612bb9613146565b91509150612bd08183612bd790919063ffffffff16565b9250505090565b6000612c1983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506133f9565b905092915050565b6000808284612c3091906148b6565b905083811015612c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6c90614704565b60405180910390fd5b8091505092915050565b600080600080600080600080600080612ca08b60175460185460195461345c565b9250925092506000612cb48c858585613530565b90506000612cc0612bac565b9050600080612cd08f8885613573565b915091506000612ce383838989886135b4565b9050828183878b8b8b9e509e509e509e509e509e509e505050505050505050919395979092949650565b6000612d4f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612b48565b905092915050565b6000601754148015612d6b57506000601854145b8015612d7957506000601954145b15612d8357612db7565b601754601a81905550601854601b81905550601954601c819055506000601781905550600060188190555060006019819055505b565b6000612dc3612bac565b90506000806000806000806000612dd989612c7f565b96509650965096509650965096506000612dfc898461362d90919063ffffffff16565b9050612e0b8c8c8c8b8b6136a8565b612e15828d61386e565b612e228682868686613ad0565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612e7f9190614864565b60405180910390a3505050505050505050505050565b6000612e9f612bac565b90506000806000806000806000612eb589612c7f565b96509650965096509650965096506000612ed8898461362d90919063ffffffff16565b9050612ee78c8c878b8b613bd6565b612ef1828d61386e565b612efe8682868686613ad0565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612f5b9190614864565b60405180910390a3505050505050505050505050565b6000612f7b612bac565b90506000806000806000806000612f9189612c7f565b96509650965096509650965096506000612fb4898461362d90919063ffffffff16565b9050612fc28c8c8a8a613d9c565b612fcc828d61386e565b612fd98682868686613ad0565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516130369190614864565b60405180910390a3505050505050505050505050565b6000613056612bac565b9050600080600080600080600061306c89612c7f565b9650965096509650965096509650600061308f898461362d90919063ffffffff16565b905061309f8c8c8c8b898c613ecc565b6130a9828d61386e565b6130b68682868686613ad0565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516131139190614864565b60405180910390a3505050505050505050505050565b601a54601781905550601b54601881905550601c54601981905550565b600080600060135490506000601254905060005b6005805490508110156133bc578260016000600584815481106131805761317f614b8a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061326e575081600260006005848154811061320657613205614b8a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561328557601354601254945094505050506133f5565b61331560016000600584815481106132a05761329f614b8a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612d0d90919063ffffffff16565b92506133a7600260006005848154811061333257613331614b8a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612d0d90919063ffffffff16565b915080806133b490614a85565b91505061315a565b506133d4601254601354612bd790919063ffffffff16565b8210156133ec576013546012549350935050506133f5565b81819350935050505b9091565b60008083118290613440576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134379190614642565b60405180910390fd5b506000838561344f919061490c565b9050809150509392505050565b60008060008061349c606461348e6011546134808b8d61362d90919063ffffffff16565b612bd790919063ffffffff16565b612bd790919063ffffffff16565b905060006134da60646134cc6011546134be8b8e61362d90919063ffffffff16565b612bd790919063ffffffff16565b612bd790919063ffffffff16565b90506000613518606461350a6011546134fc8b8f61362d90919063ffffffff16565b612bd790919063ffffffff16565b612bd790919063ffffffff16565b90508282829550955095505050509450945094915050565b60006135698261355b8561354d888a612d0d90919063ffffffff16565b612d0d90919063ffffffff16565b612d0d90919063ffffffff16565b9050949350505050565b600080600061358b848761362d90919063ffffffff16565b905060006135a2858761362d90919063ffffffff16565b90508181935093505050935093915050565b6000806135ca838661362d90919063ffffffff16565b905060006135e1848661362d90919063ffffffff16565b9050600061361c8261360e856136008c8e612d0d90919063ffffffff16565b612d0d90919063ffffffff16565b612d0d90919063ffffffff16565b905080935050505095945050505050565b60008083141561364057600090506136a2565b6000828461364e919061493d565b905082848261365d919061490c565b1461369d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161369490614784565b60405180910390fd5b809150505b92915050565b6136fa83600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0d90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061378f82600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0d90919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061382481600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2190919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b6000613878612bac565b9050600061388f828561362d90919063ffffffff16565b90506139058160016000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2190919063ffffffff16565b60016000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139de8460026000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2190919063ffffffff16565b60026000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051613ac29190614864565b60405180910390a350505050565b613af784613ae987601354612d0d90919063ffffffff16565b612d0d90919063ffffffff16565b601381905550613b1283601454612c2190919063ffffffff16565b601481905550613b2d82601554612c2190919063ffffffff16565b601581905550613b4881601654612c2190919063ffffffff16565b601681905550613b6382601254612d0d90919063ffffffff16565b601281905550600073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613bc79190614864565b60405180910390a35050505050565b613c2882600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0d90919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613cbd83600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2190919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d5281600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2190919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b613dee82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0d90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e8381600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2190919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b613f1e84600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0d90919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fb383600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0d90919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061404882600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2190919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140dd81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2190919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b60008135905061413781614fb5565b92915050565b60008135905061414c81614fcc565b92915050565b60008135905061416181614fe3565b92915050565b60006020828403121561417d5761417c614bb9565b5b600061418b84828501614128565b91505092915050565b600080604083850312156141ab576141aa614bb9565b5b60006141b985828601614128565b92505060206141ca85828601614128565b9150509250929050565b6000806000606084860312156141ed576141ec614bb9565b5b60006141fb86828701614128565b935050602061420c86828701614128565b925050604061421d86828701614152565b9150509250925092565b6000806040838503121561423e5761423d614bb9565b5b600061424c85828601614128565b925050602061425d8582860161413d565b9150509250929050565b6000806040838503121561427e5761427d614bb9565b5b600061428c85828601614128565b925050602061429d85828601614152565b9150509250929050565b6000602082840312156142bd576142bc614bb9565b5b60006142cb84828501614152565b91505092915050565b600080604083850312156142eb576142ea614bb9565b5b60006142f985828601614152565b925050602061430a8582860161413d565b9150509250929050565b60008060006060848603121561432d5761432c614bb9565b5b600061433b86828701614152565b935050602061434c86828701614152565b925050604061435d86828701614152565b9150509250925092565b614370816149cb565b82525050565b61437f816149dd565b82525050565b60006143908261489a565b61439a81856148a5565b93506143aa818560208601614a20565b6143b381614bbe565b840191505092915050565b60006143cb6025836148a5565b91506143d682614bcf565b604082019050919050565b60006143ee6027836148a5565b91506143f982614c1e565b604082019050919050565b60006144116017836148a5565b915061441c82614c6d565b602082019050919050565b6000614434602a836148a5565b915061443f82614c96565b604082019050919050565b60006144576026836148a5565b915061446282614ce5565b604082019050919050565b600061447a601b836148a5565b915061448582614d34565b602082019050919050565b600061449d601b836148a5565b91506144a882614d5d565b602082019050919050565b60006144c0601b836148a5565b91506144cb82614d86565b602082019050919050565b60006144e3601f836148a5565b91506144ee82614daf565b602082019050919050565b60006145066021836148a5565b915061451182614dd8565b604082019050919050565b6000614529600f836148a5565b915061453482614e27565b602082019050919050565b600061454c6020836148a5565b915061455782614e50565b602082019050919050565b600061456f6029836148a5565b915061457a82614e79565b604082019050919050565b60006145926024836148a5565b915061459d82614ec8565b604082019050919050565b60006145b56026836148a5565b91506145c082614f17565b604082019050919050565b60006145d8602c836148a5565b91506145e382614f66565b604082019050919050565b6145f781614a09565b82525050565b61460681614a13565b82525050565b60006020820190506146216000830184614367565b92915050565b600060208201905061463c6000830184614376565b92915050565b6000602082019050818103600083015261465c8184614385565b905092915050565b6000602082019050818103600083015261467d816143be565b9050919050565b6000602082019050818103600083015261469d816143e1565b9050919050565b600060208201905081810360008301526146bd81614404565b9050919050565b600060208201905081810360008301526146dd81614427565b9050919050565b600060208201905081810360008301526146fd8161444a565b9050919050565b6000602082019050818103600083015261471d8161446d565b9050919050565b6000602082019050818103600083015261473d81614490565b9050919050565b6000602082019050818103600083015261475d816144b3565b9050919050565b6000602082019050818103600083015261477d816144d6565b9050919050565b6000602082019050818103600083015261479d816144f9565b9050919050565b600060208201905081810360008301526147bd8161451c565b9050919050565b600060208201905081810360008301526147dd8161453f565b9050919050565b600060208201905081810360008301526147fd81614562565b9050919050565b6000602082019050818103600083015261481d81614585565b9050919050565b6000602082019050818103600083015261483d816145a8565b9050919050565b6000602082019050818103600083015261485d816145cb565b9050919050565b600060208201905061487960008301846145ee565b92915050565b600060208201905061489460008301846145fd565b92915050565b600081519050919050565b600082825260208201905092915050565b60006148c182614a09565b91506148cc83614a09565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561490157614900614ace565b5b828201905092915050565b600061491782614a09565b915061492283614a09565b92508261493257614931614afd565b5b828204905092915050565b600061494882614a09565b915061495383614a09565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561498c5761498b614ace565b5b828202905092915050565b60006149a282614a09565b91506149ad83614a09565b9250828210156149c0576149bf614ace565b5b828203905092915050565b60006149d6826149e9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015614a3e578082015181840152602081019050614a23565b83811115614a4d576000848401525b50505050565b60006002820490506001821680614a6b57607f821691505b60208210811415614a7f57614a7e614b2c565b5b50919050565b6000614a9082614a09565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614ac357614ac2614ace565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f544f4b454e32303a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e32303a207472616e736665722066726f6d20746865207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b7f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e7420697320616c726561647920696e636c756465640000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f426f74206e6f7420616c6c6f7765640000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f544f4b454e32303a20617070726f766520746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e32303a20617070726f76652066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b614fbe816149cb565b8114614fc957600080fd5b50565b614fd5816149dd565b8114614fe057600080fd5b50565b614fec81614a09565b8114614ff757600080fd5b5056fe544f4b454e32303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f544f4b454e32303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202b6a17a112dd8e4c1582a592aee065694a9aa0a52316a9ec5adcd6fc2987443364736f6c63430008070033000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049a71d2c333c8cc4f682a7a4f0ae6582d2964598000000000000000000000000cd8766f2e11d88e015de6d48ef35f069bbb94f98000000000000000000000000000000000000000000000000000000000000000d4b657972696e6720546f6b656e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074b455952494e4700000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102275760003560e01c80637dd37f7011610130578063aec48a0e116100b8578063dd62ed3e1161007c578063dd62ed3e14610694578063f2cc0c18146106c4578063f2fde38b146106e0578063f84354f1146106fc578063fc061a4f1461071857610227565b8063aec48a0e146105dc578063b2bdfa7b146105f8578063b586242814610616578063b7492daf14610634578063cba0e9961461066457610227565b806395d89b41116100ff57806395d89b4114610522578063a457c2d714610540578063a55d4d5c14610570578063a9059cbb1461058e578063a9490cb1146105be57610227565b80637dd37f70146104ae57806381fb5812146104cc5780638da5cb5b146104e85780638e7d94b51461050657610227565b806339509351116101b35780634146db39116101825780634146db39146104085780634549b0391461042657806370a0823114610456578063715018a61461048657806377ef79931461049057610227565b8063395093511461036e5780633bbac5791461039e5780633bd5d173146103ce5780633c9f861d146103ea57610227565b80631ef7b430116101fa5780631ef7b430146102b657806323b872dd146102d45780632597e6e5146103045780632d83811914610320578063313ce5671461035057610227565b806306fdde031461022c578063095ea7b31461024a57806313114a9d1461027a57806318160ddd14610298575b600080fd5b610234610734565b6040516102419190614642565b60405180910390f35b610264600480360381019061025f9190614267565b6107c6565b6040516102719190614627565b60405180910390f35b6102826107e4565b60405161028f9190614864565b60405180910390f35b6102a06107ee565b6040516102ad9190614864565b60405180910390f35b6102be6107f8565b6040516102cb9190614864565b60405180910390f35b6102ee60048036038101906102e991906141d4565b610802565b6040516102fb9190614627565b60405180910390f35b61031e60048036038101906103199190614227565b6108db565b005b61033a600480360381019061033591906142a7565b610a28565b6040516103479190614864565b60405180910390f35b610358610a96565b604051610365919061487f565b60405180910390f35b61038860048036038101906103839190614267565b610aa0565b6040516103959190614627565b60405180910390f35b6103b860048036038101906103b39190614167565b610b53565b6040516103c59190614627565b60405180910390f35b6103e860048036038101906103e391906142a7565b610ba9565b005b6103f2610d25565b6040516103ff9190614864565b60405180910390f35b610410610d2f565b60405161041d9190614642565b60405180910390f35b610440600480360381019061043b91906142d4565b610dbd565b60405161044d9190614864565b60405180910390f35b610470600480360381019061046b9190614167565b610e43565b60405161047d9190614864565b60405180910390f35b61048e610f2e565b005b610498611081565b6040516104a59190614864565b60405180910390f35b6104b6611087565b6040516104c39190614642565b60405180910390f35b6104e660048036038101906104e19190614167565b611115565b005b6104f06112f7565b6040516104fd919061460c565b60405180910390f35b610520600480360381019061051b9190614167565b611320565b005b61052a61162c565b6040516105379190614642565b60405180910390f35b61055a60048036038101906105559190614267565b6116be565b6040516105679190614627565b60405180910390f35b61057861178b565b6040516105859190614864565b60405180910390f35b6105a860048036038101906105a39190614267565b611791565b6040516105b59190614627565b60405180910390f35b6105c66117af565b6040516105d39190614642565b60405180910390f35b6105f660048036038101906105f19190614167565b61183d565b005b610600611918565b60405161060d919061460c565b60405180910390f35b61061e61193c565b60405161062b9190614864565b60405180910390f35b61064e60048036038101906106499190614167565b611942565b60405161065b9190614627565b60405180910390f35b61067e60048036038101906106799190614167565b611998565b60405161068b9190614627565b60405180910390f35b6106ae60048036038101906106a99190614194565b6119ee565b6040516106bb9190614864565b60405180910390f35b6106de60048036038101906106d99190614167565b611a75565b005b6106fa60048036038101906106f59190614167565b611d2b565b005b61071660048036038101906107119190614167565b611eed565b005b610732600480360381019061072d9190614314565b61223e565b005b6060600b805461074390614a53565b80601f016020809104026020016040519081016040528092919081815260200182805461076f90614a53565b80156107bc5780601f10610791576101008083540402835291602001916107bc565b820191906000526020600020905b81548152906001019060200180831161079f57829003601f168201915b5050505050905090565b60006107da6107d3612353565b848461235b565b6001905092915050565b6000601454905090565b6000601254905090565b6000601654905090565b600061080f848484612526565b6108d08461081b612353565b6108cb856040518060600160405280602a8152602001615022602a9139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610881612353565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b489092919063ffffffff16565b61235b565b600190509392505050565b6108e3612353565b73ffffffffffffffffffffffffffffffffffffffff16601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610972576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610969906146a4565b60405180910390fd5b80156109d45780601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610a24565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b5050565b6000601354821115610a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a66906146c4565b60405180910390fd5b6000610a79612bac565b9050610a8e8184612bd790919063ffffffff16565b915050919050565b6000600d54905090565b6000610b49610aad612353565b84610b448560036000610abe612353565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2190919063ffffffff16565b61235b565b6001905092915050565b6000601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610bb3612353565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3990614844565b60405180910390fd5b6000610c4d83612c7f565b5050505050509050610ca781600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0d90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610cff81601354612d0d90919063ffffffff16565b601381905550610d1a83601454612c2190919063ffffffff16565b601481905550505050565b6000601554905090565b60098054610d3c90614a53565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6890614a53565b8015610db55780601f10610d8a57610100808354040283529160200191610db5565b820191906000526020600020905b815481529060010190602001808311610d9857829003601f168201915b505050505081565b6000601254831115610e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfb90614764565b60405180910390fd5b81610e25576000610e1484612c7f565b505050505050905080915050610e3d565b6000610e3084612c7f565b5050505050915050809150505b92915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ede57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610f29565b610f26600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a28565b90505b919050565b610f36612353565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fba906147c4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60185481565b600a805461109490614a53565b80601f01602080910402602001604051908101604052809291908181526020018280546110c090614a53565b801561110d5780601f106110e25761010080835404028352916020019161110d565b820191906000526020600020905b8154815290600101906020018083116110f057829003601f168201915b505050505081565b61111d612353565b73ffffffffffffffffffffffffffffffffffffffff16601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a3906146a4565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611239576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123090614724565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611328612353565b73ffffffffffffffffffffffffffffffffffffffff16601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ae906146a4565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143a90614744565b60405180910390fd5b60005b600780549050811015611628578173ffffffffffffffffffffffffffffffffffffffff166007828154811061147e5761147d614b8a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561161557600760016007805490506114d99190614997565b815481106114ea576114e9614b8a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166007828154811061152957611528614b8a565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060078054806115db576115da614b5b565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611628565b808061162090614a85565b915050611446565b5050565b6060600c805461163b90614a53565b80601f016020809104026020016040519081016040528092919081815260200182805461166790614a53565b80156116b45780601f10611689576101008083540402835291602001916116b4565b820191906000526020600020905b81548152906001019060200180831161169757829003601f168201915b5050505050905090565b60006117816116cb612353565b8461177c85604051806060016040528060278152602001614ffb60279139600360006116f5612353565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b489092919063ffffffff16565b61235b565b6001905092915050565b60195481565b60006117a561179e612353565b8484612526565b6001905092915050565b600880546117bc90614a53565b80601f01602080910402602001604051908101604052809291908181526020018280546117e890614a53565b80156118355780601f1061180a57610100808354040283529160200191611835565b820191906000526020600020905b81548152906001019060200180831161181857829003601f168201915b505050505081565b611845612353565b73ffffffffffffffffffffffffffffffffffffffff16601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cb906146a4565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a7d612353565b73ffffffffffffffffffffffffffffffffffffffff16601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b03906146a4565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9090614724565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611c6d57611c29600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a28565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611d33612353565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db7906147c4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e27906146e4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ef5612353565b73ffffffffffffffffffffffffffffffffffffffff16601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7b906146a4565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200790614744565b60405180910390fd5b60005b60058054905081101561223a578173ffffffffffffffffffffffffffffffffffffffff166005828154811061204b5761204a614b8a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561222757600560016005805490506120a69190614997565b815481106120b7576120b6614b8a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600582815481106120f6576120f5614b8a565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060058054806121ed576121ec614b5b565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561223a565b808061223290614a85565b915050612013565b5050565b612246612353565b73ffffffffffffffffffffffffffffffffffffffff16601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cc906146a4565b60405180910390fd5b6064831080156122e55750606482105b80156122f15750606481105b6122fa57600080fd5b606483612307919061493d565b60178190555060648261231a919061493d565b60188190555060648161232d919061493d565b601981905550601754601a81905550601854601b81905550601954601c81905550505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c290614824565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561243b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243290614804565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125199190614864565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258d90614684565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fd90614664565b60405180910390fd5b60008111612649576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612640906147e4565b60405180910390fd5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156126d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cd906147a4565b60405180910390fd5b6000600190508373ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061278557508273ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b806127d95750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061282d5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561283757600090505b8061284557612844612d57565b5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128e85750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128fd576128f8848484612db9565b612b34565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129a05750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156129b5576129b0848484612e95565b612b33565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612a595750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a6e57612a69848484612f71565b612b32565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b105750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612b2557612b2084848461304c565b612b31565b612b30848484612f71565b5b5b5b5b80612b4257612b41613129565b5b50505050565b6000838311158290612b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b879190614642565b60405180910390fd5b5060008385612b9f9190614997565b9050809150509392505050565b6000806000612bb9613146565b91509150612bd08183612bd790919063ffffffff16565b9250505090565b6000612c1983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506133f9565b905092915050565b6000808284612c3091906148b6565b905083811015612c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6c90614704565b60405180910390fd5b8091505092915050565b600080600080600080600080600080612ca08b60175460185460195461345c565b9250925092506000612cb48c858585613530565b90506000612cc0612bac565b9050600080612cd08f8885613573565b915091506000612ce383838989886135b4565b9050828183878b8b8b9e509e509e509e509e509e509e505050505050505050919395979092949650565b6000612d4f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612b48565b905092915050565b6000601754148015612d6b57506000601854145b8015612d7957506000601954145b15612d8357612db7565b601754601a81905550601854601b81905550601954601c819055506000601781905550600060188190555060006019819055505b565b6000612dc3612bac565b90506000806000806000806000612dd989612c7f565b96509650965096509650965096506000612dfc898461362d90919063ffffffff16565b9050612e0b8c8c8c8b8b6136a8565b612e15828d61386e565b612e228682868686613ad0565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612e7f9190614864565b60405180910390a3505050505050505050505050565b6000612e9f612bac565b90506000806000806000806000612eb589612c7f565b96509650965096509650965096506000612ed8898461362d90919063ffffffff16565b9050612ee78c8c878b8b613bd6565b612ef1828d61386e565b612efe8682868686613ad0565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612f5b9190614864565b60405180910390a3505050505050505050505050565b6000612f7b612bac565b90506000806000806000806000612f9189612c7f565b96509650965096509650965096506000612fb4898461362d90919063ffffffff16565b9050612fc28c8c8a8a613d9c565b612fcc828d61386e565b612fd98682868686613ad0565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516130369190614864565b60405180910390a3505050505050505050505050565b6000613056612bac565b9050600080600080600080600061306c89612c7f565b9650965096509650965096509650600061308f898461362d90919063ffffffff16565b905061309f8c8c8c8b898c613ecc565b6130a9828d61386e565b6130b68682868686613ad0565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516131139190614864565b60405180910390a3505050505050505050505050565b601a54601781905550601b54601881905550601c54601981905550565b600080600060135490506000601254905060005b6005805490508110156133bc578260016000600584815481106131805761317f614b8a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061326e575081600260006005848154811061320657613205614b8a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561328557601354601254945094505050506133f5565b61331560016000600584815481106132a05761329f614b8a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612d0d90919063ffffffff16565b92506133a7600260006005848154811061333257613331614b8a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612d0d90919063ffffffff16565b915080806133b490614a85565b91505061315a565b506133d4601254601354612bd790919063ffffffff16565b8210156133ec576013546012549350935050506133f5565b81819350935050505b9091565b60008083118290613440576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134379190614642565b60405180910390fd5b506000838561344f919061490c565b9050809150509392505050565b60008060008061349c606461348e6011546134808b8d61362d90919063ffffffff16565b612bd790919063ffffffff16565b612bd790919063ffffffff16565b905060006134da60646134cc6011546134be8b8e61362d90919063ffffffff16565b612bd790919063ffffffff16565b612bd790919063ffffffff16565b90506000613518606461350a6011546134fc8b8f61362d90919063ffffffff16565b612bd790919063ffffffff16565b612bd790919063ffffffff16565b90508282829550955095505050509450945094915050565b60006135698261355b8561354d888a612d0d90919063ffffffff16565b612d0d90919063ffffffff16565b612d0d90919063ffffffff16565b9050949350505050565b600080600061358b848761362d90919063ffffffff16565b905060006135a2858761362d90919063ffffffff16565b90508181935093505050935093915050565b6000806135ca838661362d90919063ffffffff16565b905060006135e1848661362d90919063ffffffff16565b9050600061361c8261360e856136008c8e612d0d90919063ffffffff16565b612d0d90919063ffffffff16565b612d0d90919063ffffffff16565b905080935050505095945050505050565b60008083141561364057600090506136a2565b6000828461364e919061493d565b905082848261365d919061490c565b1461369d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161369490614784565b60405180910390fd5b809150505b92915050565b6136fa83600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0d90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061378f82600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0d90919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061382481600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2190919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b6000613878612bac565b9050600061388f828561362d90919063ffffffff16565b90506139058160016000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2190919063ffffffff16565b60016000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139de8460026000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2190919063ffffffff16565b60026000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051613ac29190614864565b60405180910390a350505050565b613af784613ae987601354612d0d90919063ffffffff16565b612d0d90919063ffffffff16565b601381905550613b1283601454612c2190919063ffffffff16565b601481905550613b2d82601554612c2190919063ffffffff16565b601581905550613b4881601654612c2190919063ffffffff16565b601681905550613b6382601254612d0d90919063ffffffff16565b601281905550600073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613bc79190614864565b60405180910390a35050505050565b613c2882600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0d90919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613cbd83600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2190919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d5281600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2190919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b613dee82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0d90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e8381600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2190919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b613f1e84600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0d90919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fb383600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0d90919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061404882600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2190919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140dd81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2190919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b60008135905061413781614fb5565b92915050565b60008135905061414c81614fcc565b92915050565b60008135905061416181614fe3565b92915050565b60006020828403121561417d5761417c614bb9565b5b600061418b84828501614128565b91505092915050565b600080604083850312156141ab576141aa614bb9565b5b60006141b985828601614128565b92505060206141ca85828601614128565b9150509250929050565b6000806000606084860312156141ed576141ec614bb9565b5b60006141fb86828701614128565b935050602061420c86828701614128565b925050604061421d86828701614152565b9150509250925092565b6000806040838503121561423e5761423d614bb9565b5b600061424c85828601614128565b925050602061425d8582860161413d565b9150509250929050565b6000806040838503121561427e5761427d614bb9565b5b600061428c85828601614128565b925050602061429d85828601614152565b9150509250929050565b6000602082840312156142bd576142bc614bb9565b5b60006142cb84828501614152565b91505092915050565b600080604083850312156142eb576142ea614bb9565b5b60006142f985828601614152565b925050602061430a8582860161413d565b9150509250929050565b60008060006060848603121561432d5761432c614bb9565b5b600061433b86828701614152565b935050602061434c86828701614152565b925050604061435d86828701614152565b9150509250925092565b614370816149cb565b82525050565b61437f816149dd565b82525050565b60006143908261489a565b61439a81856148a5565b93506143aa818560208601614a20565b6143b381614bbe565b840191505092915050565b60006143cb6025836148a5565b91506143d682614bcf565b604082019050919050565b60006143ee6027836148a5565b91506143f982614c1e565b604082019050919050565b60006144116017836148a5565b915061441c82614c6d565b602082019050919050565b6000614434602a836148a5565b915061443f82614c96565b604082019050919050565b60006144576026836148a5565b915061446282614ce5565b604082019050919050565b600061447a601b836148a5565b915061448582614d34565b602082019050919050565b600061449d601b836148a5565b91506144a882614d5d565b602082019050919050565b60006144c0601b836148a5565b91506144cb82614d86565b602082019050919050565b60006144e3601f836148a5565b91506144ee82614daf565b602082019050919050565b60006145066021836148a5565b915061451182614dd8565b604082019050919050565b6000614529600f836148a5565b915061453482614e27565b602082019050919050565b600061454c6020836148a5565b915061455782614e50565b602082019050919050565b600061456f6029836148a5565b915061457a82614e79565b604082019050919050565b60006145926024836148a5565b915061459d82614ec8565b604082019050919050565b60006145b56026836148a5565b91506145c082614f17565b604082019050919050565b60006145d8602c836148a5565b91506145e382614f66565b604082019050919050565b6145f781614a09565b82525050565b61460681614a13565b82525050565b60006020820190506146216000830184614367565b92915050565b600060208201905061463c6000830184614376565b92915050565b6000602082019050818103600083015261465c8184614385565b905092915050565b6000602082019050818103600083015261467d816143be565b9050919050565b6000602082019050818103600083015261469d816143e1565b9050919050565b600060208201905081810360008301526146bd81614404565b9050919050565b600060208201905081810360008301526146dd81614427565b9050919050565b600060208201905081810360008301526146fd8161444a565b9050919050565b6000602082019050818103600083015261471d8161446d565b9050919050565b6000602082019050818103600083015261473d81614490565b9050919050565b6000602082019050818103600083015261475d816144b3565b9050919050565b6000602082019050818103600083015261477d816144d6565b9050919050565b6000602082019050818103600083015261479d816144f9565b9050919050565b600060208201905081810360008301526147bd8161451c565b9050919050565b600060208201905081810360008301526147dd8161453f565b9050919050565b600060208201905081810360008301526147fd81614562565b9050919050565b6000602082019050818103600083015261481d81614585565b9050919050565b6000602082019050818103600083015261483d816145a8565b9050919050565b6000602082019050818103600083015261485d816145cb565b9050919050565b600060208201905061487960008301846145ee565b92915050565b600060208201905061489460008301846145fd565b92915050565b600081519050919050565b600082825260208201905092915050565b60006148c182614a09565b91506148cc83614a09565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561490157614900614ace565b5b828201905092915050565b600061491782614a09565b915061492283614a09565b92508261493257614931614afd565b5b828204905092915050565b600061494882614a09565b915061495383614a09565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561498c5761498b614ace565b5b828202905092915050565b60006149a282614a09565b91506149ad83614a09565b9250828210156149c0576149bf614ace565b5b828203905092915050565b60006149d6826149e9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015614a3e578082015181840152602081019050614a23565b83811115614a4d576000848401525b50505050565b60006002820490506001821680614a6b57607f821691505b60208210811415614a7f57614a7e614b2c565b5b50919050565b6000614a9082614a09565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614ac357614ac2614ace565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f544f4b454e32303a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e32303a207472616e736665722066726f6d20746865207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b7f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e7420697320616c726561647920696e636c756465640000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f426f74206e6f7420616c6c6f7765640000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f544f4b454e32303a20617070726f766520746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e32303a20617070726f76652066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b614fbe816149cb565b8114614fc957600080fd5b50565b614fd5816149dd565b8114614fe057600080fd5b50565b614fec81614a09565b8114614ff757600080fd5b5056fe544f4b454e32303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f544f4b454e32303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202b6a17a112dd8e4c1582a592aee065694a9aa0a52316a9ec5adcd6fc2987443364736f6c63430008070033

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

000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049a71d2c333c8cc4f682a7a4f0ae6582d2964598000000000000000000000000cd8766f2e11d88e015de6d48ef35f069bbb94f98000000000000000000000000000000000000000000000000000000000000000d4b657972696e6720546f6b656e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074b455952494e4700000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): Keyring Token
Arg [1] : _symbol (string): KEYRING
Arg [2] : _decimals (uint256): 18
Arg [3] : _supply (uint256): 1000000000
Arg [4] : _txFee (uint256): 0
Arg [5] : _burnFee (uint256): 0
Arg [6] : _liquiditypoolFee (uint256): 0
Arg [7] : _FeeAddress (address): 0x49a71D2C333c8Cc4f682a7A4f0ae6582d2964598
Arg [8] : _dev (address): 0xCD8766f2E11d88E015dE6d48ef35F069bBB94f98

-----Encoded View---------------
13 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 000000000000000000000000000000000000000000000000000000003b9aca00
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [7] : 00000000000000000000000049a71d2c333c8cc4f682a7a4f0ae6582d2964598
Arg [8] : 000000000000000000000000cd8766f2e11d88e015de6d48ef35f069bbb94f98
Arg [9] : 000000000000000000000000000000000000000000000000000000000000000d
Arg [10] : 4b657972696e6720546f6b656e00000000000000000000000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [12] : 4b455952494e4700000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

10709:18040:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12961:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13880:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15125:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13245:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15316:106;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14049:315;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17345:204;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16262:253;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13147:90;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14372:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17557:104;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15430:378;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15220:88;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11255:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15816:438;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13348:198;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10302:148;;;:::i;:::-;;11787:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11293:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17669:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10088:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17915:491;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13052:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14598:271;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11821:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13554:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11201:47;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18414:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9962:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11753:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14995:122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14877:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13729:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16523:330;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10458:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16861:476;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18532:427;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12961:83;12998:13;13031:5;13024:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12961:83;:::o;13880:161::-;13955:4;13972:39;13981:12;:10;:12::i;:::-;13995:7;14004:6;13972:8;:39::i;:::-;14029:4;14022:11;;13880:161;;;;:::o;15125:87::-;15167:7;15194:10;;15187:17;;15125:87;:::o;13245:95::-;13298:7;13325;;13318:14;;13245:95;:::o;15316:106::-;15367:7;15394:20;;15387:27;;15316:106;:::o;14049:315::-;14147:4;14164:36;14174:6;14182:9;14193:6;14164:9;:36::i;:::-;14211:123;14220:6;14228:12;:10;:12::i;:::-;14242:91;14280:6;14242:91;;;;;;;;;;;;;;;;;:11;:19;14254:6;14242:19;;;;;;;;;;;;;;;:33;14262:12;:10;:12::i;:::-;14242:33;;;;;;;;;;;;;;;;:37;;:91;;;;;:::i;:::-;14211:8;:123::i;:::-;14352:4;14345:11;;14049:315;;;;;:::o;17345:204::-;12893:12;:10;:12::i;:::-;12886:19;;:3;;;;;;;;;;;:19;;;12878:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;17425:6:::1;17422:120;;;17467:6;17447:8;:17;17456:7;17447:17;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;17422:120;;;17513:8;:17;17522:7;17513:17;;;;;;;;;;;;;;;;17506:24;;;;;;;;;;;17422:120;17345:204:::0;;:::o;16262:253::-;16328:7;16367;;16356;:18;;16348:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;16432:19;16455:10;:8;:10::i;:::-;16432:33;;16483:24;16495:11;16483:7;:11;;:24;;;;:::i;:::-;16476:31;;;16262:253;;;:::o;13147:90::-;13188:5;13219:9;;13206:23;;13147:90;:::o;14372:218::-;14460:4;14477:83;14486:12;:10;:12::i;:::-;14500:7;14509:50;14548:10;14509:11;:25;14521:12;:10;:12::i;:::-;14509:25;;;;;;;;;;;;;;;:34;14535:7;14509:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;14477:8;:83::i;:::-;14578:4;14571:11;;14372:218;;;;:::o;17557:104::-;17612:4;17636:8;:17;17645:7;17636:17;;;;;;;;;;;;;;;;;;;;;;;;;17629:24;;17557:104;;;:::o;15430:378::-;15482:14;15499:12;:10;:12::i;:::-;15482:29;;15531:11;:19;15543:6;15531:19;;;;;;;;;;;;;;;;;;;;;;;;;15530:20;15522:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;15611:15;15636:19;15647:7;15636:10;:19::i;:::-;15610:45;;;;;;;;15684:28;15704:7;15684;:15;15692:6;15684:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;15666:7;:15;15674:6;15666:15;;;;;;;;;;;;;;;:46;;;;15733:20;15745:7;15733;;:11;;:20;;;;:::i;:::-;15723:7;:30;;;;15777:23;15792:7;15777:10;;:14;;:23;;;;:::i;:::-;15764:10;:36;;;;15471:337;;15430:378;:::o;15220:88::-;15262:7;15289:11;;15282:18;;15220:88;:::o;11255:31::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15816:438::-;15906:7;15945;;15934;:18;;15926:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;16004:17;15999:248;;16039:15;16064:19;16075:7;16064:10;:19::i;:::-;16038:45;;;;;;;;16105:7;16098:14;;;;;15999:248;16147:23;16179:19;16190:7;16179:10;:19::i;:::-;16145:53;;;;;;;;16220:15;16213:22;;;15816:438;;;;;:::o;13348:198::-;13414:7;13438:11;:20;13450:7;13438:20;;;;;;;;;;;;;;;;;;;;;;;;;13434:49;;;13467:7;:16;13475:7;13467:16;;;;;;;;;;;;;;;;13460:23;;;;13434:49;13501:37;13521:7;:16;13529:7;13521:16;;;;;;;;;;;;;;;;13501:19;:37::i;:::-;13494:44;;13348:198;;;;:::o;10302:148::-;10225:12;:10;:12::i;:::-;10215:22;;:6;;;;;;;;;;:22;;;10207:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10409:1:::1;10372:40;;10393:6;::::0;::::1;;;;;;;;10372:40;;;;;;;;;;;;10440:1;10423:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;10302:148::o:0;11787:27::-;;;;:::o;11293:31::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17669:238::-;12893:12;:10;:12::i;:::-;12886:19;;:3;;;;;;;;;;;:19;;;12878:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;17755:17:::1;:26;17773:7;17755:26;;;;;;;;;;;;;;;;;;;;;;;;;17754:27;17746:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17855:4;17826:17;:26;17844:7;17826:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;17870:15;17891:7;17870:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17669:238:::0;:::o;10088:79::-;10126:7;10153:6;;;;;;;;;;;10146:13;;10088:79;:::o;17915:491::-;12893:12;:10;:12::i;:::-;12886:19;;:3;;;;;;;;;;;:19;;;12878:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;18000:17:::1;:26;18018:7;18000:26;;;;;;;;;;;;;;;;;;;;;;;;;17992:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;18074:9;18069:330;18093:15;:22;;;;18089:1;:26;18069:330;;;18163:7;18141:29;;:15;18157:1;18141:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:29;;;18137:251;;;18212:15;18253:1;18228:15;:22;;;;:26;;;;:::i;:::-;18212:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18191:15;18207:1;18191:18;;;;;;;;:::i;:::-;;;;;;;;;;:64;;;;;;;;;;;;;;;;;;18303:5;18274:17;:26;18292:7;18274:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;18327:15;:21;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;18367:5;;18137:251;18117:3;;;;;:::i;:::-;;;;18069:330;;;;17915:491:::0;:::o;13052:87::-;13091:13;13124:7;13117:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13052:87;:::o;14598:271::-;14691:4;14708:131;14717:12;:10;:12::i;:::-;14731:7;14740:98;14779:15;14740:98;;;;;;;;;;;;;;;;;:11;:25;14752:12;:10;:12::i;:::-;14740:25;;;;;;;;;;;;;;;:34;14766:7;14740:34;;;;;;;;;;;;;;;;:38;;:98;;;;;:::i;:::-;14708:8;:131::i;:::-;14857:4;14850:11;;14598:271;;;;:::o;11821:33::-;;;;:::o;13554:167::-;13632:4;13649:42;13659:12;:10;:12::i;:::-;13673:9;13684:6;13649:9;:42::i;:::-;13709:4;13702:11;;13554:167;;;;:::o;11201:47::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18414:110::-;12893:12;:10;:12::i;:::-;12886:19;;:3;;;;;;;;;;;:19;;;12878:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;18509:7:::1;18496:10;;:20;;;;;;;;;;;;;;;;;;18414:110:::0;:::o;9962:21::-;;;;;;;;;;;;:::o;11753:27::-;;;;:::o;14995:122::-;15059:4;15083:17;:26;15101:7;15083:26;;;;;;;;;;;;;;;;;;;;;;;;;15076:33;;14995:122;;;:::o;14877:110::-;14935:4;14959:11;:20;14971:7;14959:20;;;;;;;;;;;;;;;;;;;;;;;;;14952:27;;14877:110;;;:::o;13729:143::-;13810:7;13837:11;:18;13849:5;13837:18;;;;;;;;;;;;;;;:27;13856:7;13837:27;;;;;;;;;;;;;;;;13830:34;;13729:143;;;;:::o;16523:330::-;12893:12;:10;:12::i;:::-;12886:19;;:3;;;;;;;;;;;:19;;;12878:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;16603:11:::1;:20;16615:7;16603:20;;;;;;;;;;;;;;;;;;;;;;;;;16602:21;16594:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;16688:1;16669:7;:16;16677:7;16669:16;;;;;;;;;;;;;;;;:20;16666:108;;;16725:37;16745:7;:16;16753:7;16745:16;;;;;;;;;;;;;;;;16725:19;:37::i;:::-;16706:7;:16;16714:7;16706:16;;;;;;;;;;;;;;;:56;;;;16666:108;16807:4;16784:11;:20;16796:7;16784:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;16822:9;16837:7;16822:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16523:330:::0;:::o;10458:244::-;10225:12;:10;:12::i;:::-;10215:22;;:6;;;;;;;;;;:22;;;10207:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10567:1:::1;10547:22;;:8;:22;;;;10539:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10657:8;10628:38;;10649:6;::::0;::::1;;;;;;;;10628:38;;;;;;;;;;;;10686:8;10677:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;10458:244:::0;:::o;16861:476::-;12893:12;:10;:12::i;:::-;12886:19;;:3;;;;;;;;;;;:19;;;12878:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;16940:11:::1;:20;16952:7;16940:20;;;;;;;;;;;;;;;;;;;;;;;;;16932:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;17008:9;17003:327;17027:9;:16;;;;17023:1;:20;17003:327;;;17085:7;17069:23;;:9;17079:1;17069:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;;17065:254;;;17128:9;17157:1;17138:9;:16;;;;:20;;;;:::i;:::-;17128:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17113:9;17123:1;17113:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;17197:1;17178:7;:16;17186:7;17178:16;;;;;;;;;;;;;;;:20;;;;17240:5;17217:11;:20;17229:7;17217:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;17264:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;17298:5;;17065:254;17045:3;;;;;:::i;:::-;;;;17003:327;;;;16861:476:::0;:::o;18532:427::-;12893:12;:10;:12::i;:::-;12886:19;;:3;;;;;;;;;;;:19;;;12878:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;18654:3:::1;18645:6;:12;:30;;;;;18672:3;18661:8;:14;18645:30;:57;;;;;18699:3;18679:17;:23;18645:57;18637:66;;;::::0;::::1;;18733:3;18725:6;:11;;;;:::i;:::-;18714:8;:22;;;;18770:3;18759:8;:14;;;;:::i;:::-;18747:9;:26;;;;18824:3;18805:17;:22;;;;:::i;:::-;18784:18;:43;;;;18853:8;;18838:12;:23;;;;18888:9;;18872:13;:25;;;;18933:18;;18908:22;:43;;;;18532:427:::0;;;:::o;5170:115::-;5223:15;5266:10;5251:26;;5170:115;:::o;18967:341::-;19077:1;19060:19;;:5;:19;;;;19052:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;19160:1;19141:21;;:7;:21;;;;19133:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;19246:6;19216:11;:18;19228:5;19216:18;;;;;;;;;;;;;;;:27;19235:7;19216:27;;;;;;;;;;;;;;;:36;;;;19284:7;19268:32;;19277:5;19268:32;;;19293:6;19268:32;;;;;;:::i;:::-;;;;;;;;18967:341;;;:::o;19316:1270::-;19431:1;19413:20;;:6;:20;;;;19405:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;19517:1;19496:23;;:9;:23;;;;19488:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;19589:1;19580:6;:10;19572:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19658:8;:16;19667:6;19658:16;;;;;;;;;;;;;;;;;;;;;;;;;19657:17;19649:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;19707:12;19722:4;19707:19;;19755:6;19741:20;;:10;;;;;;;;;;;:20;;;:47;;;;19779:9;19765:23;;:10;;;;;;;;;;;:23;;;19741:47;:73;;;;19792:11;:22;19804:9;19792:22;;;;;;;;;;;;;;;;;;;;;;;;;19741:73;:102;;;;19818:17;:25;19836:6;19818:25;;;;;;;;;;;;;;;;;;;;;;;;;19741:102;19737:150;;;19870:5;19860:15;;19737:150;19904:7;19899:28;;19913:14;:12;:14::i;:::-;19899:28;19944:11;:19;19956:6;19944:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;19968:11;:22;19980:9;19968:22;;;;;;;;;;;;;;;;;;;;;;;;;19967:23;19944:46;19940:597;;;20007:48;20029:6;20037:9;20048:6;20007:21;:48::i;:::-;19940:597;;;20078:11;:19;20090:6;20078:19;;;;;;;;;;;;;;;;;;;;;;;;;20077:20;:46;;;;;20101:11;:22;20113:9;20101:22;;;;;;;;;;;;;;;;;;;;;;;;;20077:46;20073:464;;;20140:46;20160:6;20168:9;20179:6;20140:19;:46::i;:::-;20073:464;;;20209:11;:19;20221:6;20209:19;;;;;;;;;;;;;;;;;;;;;;;;;20208:20;:47;;;;;20233:11;:22;20245:9;20233:22;;;;;;;;;;;;;;;;;;;;;;;;;20232:23;20208:47;20204:333;;;20272:44;20290:6;20298:9;20309:6;20272:17;:44::i;:::-;20204:333;;;20338:11;:19;20350:6;20338:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;20361:11;:22;20373:9;20361:22;;;;;;;;;;;;;;;;;;;;;;;;;20338:45;20334:203;;;20400:48;20422:6;20430:9;20441:6;20400:21;:48::i;:::-;20334:203;;;20481:44;20499:6;20507:9;20518:6;20481:17;:44::i;:::-;20334:203;20204:333;20073:464;19940:597;20554:7;20549:29;;20563:15;:13;:15::i;:::-;20549:29;19394:1192;19316:1270;;;:::o;6474:192::-;6560:7;6593:1;6588;:6;;6596:12;6580:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;6620:9;6636:1;6632;:5;;;;:::i;:::-;6620:17;;6657:1;6650:8;;;6474:192;;;;;:::o;27005:163::-;27046:7;27067:15;27084;27103:19;:17;:19::i;:::-;27066:56;;;;27140:20;27152:7;27140;:11;;:20;;;;:::i;:::-;27133:27;;;;27005:163;:::o;6934:132::-;6992:7;7019:39;7023:1;7026;7019:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;7012:46;;6934:132;;;;:::o;6141:181::-;6199:7;6219:9;6235:1;6231;:5;;;;:::i;:::-;6219:17;;6260:1;6255;:6;;6247:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;6313:1;6306:8;;;6141:181;;;;:::o;24982:682::-;25041:7;25050;25059;25068;25077;25086;25095;25116:12;25130:13;25145:22;25171:61;25183:7;25192:8;;25202:9;;25213:18;;25171:11;:61::i;:::-;25115:117;;;;;;25243:23;25269:56;25288:7;25297:4;25303:5;25310:14;25269:18;:56::i;:::-;25243:82;;25336:19;25359:10;:8;:10::i;:::-;25336:33;;25381:15;25398:12;25414:39;25426:7;25435:4;25441:11;25414;:39::i;:::-;25380:73;;;;25464:23;25490:70;25510:7;25519:4;25525:5;25532:14;25548:11;25490:19;:70::i;:::-;25464:96;;25579:7;25588:15;25605:4;25611:15;25628:4;25634:5;25641:14;25571:85;;;;;;;;;;;;;;;;;;;;;;24982:682;;;;;;;;;:::o;6330:136::-;6388:7;6415:43;6419:1;6422;6415:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;6408:50;;6330:136;;;;:::o;28147:328::-;28205:1;28193:8;;:13;:31;;;;;28223:1;28210:9;;:14;28193:31;:58;;;;;28250:1;28228:18;;:23;28193:58;28190:70;;;28253:7;;28190:70;28287:8;;28272:12;:23;;;;28322:9;;28306:13;:25;;;;28367:18;;28342:22;:43;;;;28409:1;28398:8;:12;;;;28433:1;28421:9;:13;;;;28466:1;28445:18;:22;;;;28147:328;:::o;22489:630::-;22591:19;22614:10;:8;:10::i;:::-;22591:33;;22636:15;22653:23;22678:12;22692:23;22717:12;22731:13;22746:22;22772:19;22783:7;22772:10;:19::i;:::-;22635:156;;;;;;;;;;;;;;22802:13;22819:22;22829:11;22819:5;:9;;:22;;;;:::i;:::-;22802:39;;22852:80;22879:6;22887:9;22898:7;22907;22916:15;22852:26;:80::i;:::-;22943:44;22964:14;22980:6;22943:20;:44::i;:::-;22998:53;23010:4;23016:5;23023:4;23029:5;23036:14;22998:11;:53::i;:::-;23084:9;23067:44;;23076:6;23067:44;;;23095:15;23067:44;;;;;;:::i;:::-;;;;;;;;22580:539;;;;;;;;;22489:630;;;:::o;21480:638::-;21580:19;21603:10;:8;:10::i;:::-;21580:33;;21625:15;21642:23;21667:12;21681:23;21706:12;21720:13;21735:22;21761:19;21772:7;21761:10;:19::i;:::-;21624:156;;;;;;;;;;;;;;21791:13;21808:22;21818:11;21808:5;:9;;:22;;;;:::i;:::-;21791:39;;21841:90;21870:6;21878:9;21889:15;21906:7;21915:15;21841:28;:90::i;:::-;21942:44;21963:14;21979:6;21942:20;:44::i;:::-;21997:53;22009:4;22015:5;22022:4;22028:5;22035:14;21997:11;:53::i;:::-;22083:9;22066:44;;22075:6;22066:44;;;22094:15;22066:44;;;;;;:::i;:::-;;;;;;;;21569:549;;;;;;;;;21480:638;;;:::o;20594:615::-;20692:19;20715:10;:8;:10::i;:::-;20692:33;;20737:15;20754:23;20779:12;20793:23;20818:12;20832:13;20847:22;20873:19;20884:7;20873:10;:19::i;:::-;20736:156;;;;;;;;;;;;;;20903:13;20920:22;20930:11;20920:5;:9;;:22;;;;:::i;:::-;20903:39;;20953:69;20978:6;20986:9;20997:7;21006:15;20953:24;:69::i;:::-;21033:44;21054:14;21070:6;21033:20;:44::i;:::-;21088:53;21100:4;21106:5;21113:4;21119:5;21126:14;21088:11;:53::i;:::-;21174:9;21157:44;;21166:6;21157:44;;;21185:15;21157:44;;;;;;:::i;:::-;;;;;;;;20681:528;;;;;;;;;20594:615;;;:::o;23466:641::-;23568:19;23591:10;:8;:10::i;:::-;23568:33;;23613:15;23630:23;23655:12;23669:23;23694:12;23708:13;23723:22;23749:19;23760:7;23749:10;:19::i;:::-;23612:156;;;;;;;;;;;;;;23779:13;23796:22;23806:11;23796:5;:9;;:22;;;;:::i;:::-;23779:39;;23829:91;23850:6;23858:9;23869:7;23878;23887:15;23904;23829:20;:91::i;:::-;23931:44;23952:14;23968:6;23931:20;:44::i;:::-;23986:53;23998:4;24004:5;24011:4;24017:5;24024:14;23986:11;:53::i;:::-;24072:9;24055:44;;24064:6;24055:44;;;24083:15;24055:44;;;;;;:::i;:::-;;;;;;;;23557:550;;;;;;;;;23466:641;;;:::o;28483:165::-;28538:12;;28527:8;:23;;;;28573:13;;28561:9;:25;;;;28618:22;;28597:18;:43;;;;28483:165::o;27176:555::-;27226:7;27235;27255:15;27273:7;;27255:25;;27291:15;27309:7;;27291:25;;27332:9;27327:289;27351:9;:16;;;;27347:1;:20;27327:289;;;27417:7;27393;:21;27401:9;27411:1;27401:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27393:21;;;;;;;;;;;;;;;;:31;:66;;;;27452:7;27428;:21;27436:9;27446:1;27436:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27428:21;;;;;;;;;;;;;;;;:31;27393:66;27389:97;;;27469:7;;27478;;27461:25;;;;;;;;;27389:97;27511:34;27523:7;:21;27531:9;27541:1;27531:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27523:21;;;;;;;;;;;;;;;;27511:7;:11;;:34;;;;:::i;:::-;27501:44;;27570:34;27582:7;:21;27590:9;27600:1;27590:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27582:21;;;;;;;;;;;;;;;;27570:7;:11;;:34;;;;:::i;:::-;27560:44;;27369:3;;;;;:::i;:::-;;;;27327:289;;;;27640:20;27652:7;;27640;;:11;;:20;;;;:::i;:::-;27630:7;:30;27626:61;;;27670:7;;27679;;27662:25;;;;;;;;27626:61;27706:7;27715;27698:25;;;;;;27176:555;;;:::o;7074:191::-;7160:7;7192:1;7188;:5;7195:12;7180:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;7219:9;7235:1;7231;:5;;;;:::i;:::-;7219:17;;7256:1;7249:8;;;7074:191;;;;;:::o;25672:451::-;25791:7;25800;25809;25829:12;25844:50;25890:3;25845:39;25871:12;;25846:19;25858:6;25846:7;:11;;:19;;;;:::i;:::-;25845:25;;:39;;;;:::i;:::-;25844:45;;:50;;;;:::i;:::-;25829:65;;25905:13;25921:51;25968:3;25922:40;25949:12;;25923:20;25935:7;25923;:11;;:20;;;;:::i;:::-;25922:26;;:40;;;;:::i;:::-;25921:46;;:51;;;;:::i;:::-;25905:67;;25983:22;26008:60;26064:3;26009:49;26045:12;;26010:29;26022:16;26010:7;:11;;:29;;;;:::i;:::-;26009:35;;:49;;;;:::i;:::-;26008:55;;:60;;;;:::i;:::-;25983:85;;26087:4;26093:5;26100:14;26079:36;;;;;;;;;25672:451;;;;;;;;:::o;26131:203::-;26251:7;26278:48;26311:14;26278:28;26300:5;26278:17;26290:4;26278:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;:32;;:48;;;;:::i;:::-;26271:55;;26131:203;;;;;;:::o;26342:254::-;26437:7;26446;26466:15;26484:24;26496:11;26484:7;:11;;:24;;;;:::i;:::-;26466:42;;26519:12;26534:21;26543:11;26534:4;:8;;:21;;;;:::i;:::-;26519:36;;26574:7;26583:4;26566:22;;;;;;26342:254;;;;;;:::o;26604:393::-;26746:7;26766:13;26782:22;26792:11;26782:5;:9;;:22;;;;:::i;:::-;26766:38;;26815:22;26840:31;26859:11;26840:14;:18;;:31;;;;:::i;:::-;26815:56;;26882:23;26908:48;26941:14;26908:28;26930:5;26908:17;26920:4;26908:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;:32;;:48;;;;:::i;:::-;26882:74;;26974:15;26967:22;;;;;26604:393;;;;;;;:::o;6674:252::-;6732:7;6763:1;6758;:6;6754:47;;;6788:1;6781:8;;;;6754:47;6813:9;6829:1;6825;:5;;;;:::i;:::-;6813:17;;6858:1;6853;6849;:5;;;;:::i;:::-;:10;6841:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;6917:1;6910:8;;;6674:252;;;;;:::o;23127:331::-;23294:28;23314:7;23294;:15;23302:6;23294:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23276:7;:15;23284:6;23276:15;;;;;;;;;;;;;;;:46;;;;23351:28;23371:7;23351;:15;23359:6;23351:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23333:7;:15;23341:6;23333:15;;;;;;;;;;;;;;;:46;;;;23411:39;23434:15;23411:7;:18;23419:9;23411:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;23390:7;:18;23398:9;23390:18;;;;;;;;;;;;;;;:60;;;;23127:331;;;;;:::o;27739:400::-;27828:19;27850:10;:8;:10::i;:::-;27828:32;;27871:22;27896:31;27915:11;27896:14;:18;;:31;;;;:::i;:::-;27871:56;;27960:39;27984:14;27960:7;:19;27968:10;;;;;;;;;;;27960:19;;;;;;;;;;;;;;;;:23;;:39;;;;:::i;:::-;27938:7;:19;27946:10;;;;;;;;;;;27938:19;;;;;;;;;;;;;;;:61;;;;28032:39;28056:14;28032:7;:19;28040:10;;;;;;;;;;;28032:19;;;;;;;;;;;;;;;;:23;;:39;;;;:::i;:::-;28010:7;:19;28018:10;;;;;;;;;;;28010:19;;;;;;;;;;;;;;;:61;;;;28104:10;;;;;;;;;;;28087:44;;28096:6;28087:44;;;28116:14;28087:44;;;;;;:::i;:::-;;;;;;;;27817:322;;27739:400;;:::o;24544:430::-;24676:28;24698:5;24676:17;24688:4;24676:7;;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;24666:7;:38;;;;24728:20;24743:4;24728:10;;:14;;:20;;;;:::i;:::-;24715:10;:33;;;;24773:22;24789:5;24773:11;;:15;;:22;;;;:::i;:::-;24759:11;:36;;;;24829:40;24854:14;24829:20;;:24;;:40;;;;:::i;:::-;24806:20;:63;;;;24890:18;24902:5;24890:7;;:11;;:18;;;;:::i;:::-;24880:7;:28;;;;24956:1;24924:42;;24941:4;24924:42;;;24960:5;24924:42;;;;;;:::i;:::-;;;;;;;;24544:430;;;;;:::o;22126:355::-;22303:28;22323:7;22303;:15;22311:6;22303:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;22285:7;:15;22293:6;22285:15;;;;;;;;;;;;;;;:46;;;;22363:39;22386:15;22363:7;:18;22371:9;22363:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;22342:7;:18;22350:9;22342:18;;;;;;;;;;;;;;;:60;;;;22434:39;22457:15;22434:7;:18;22442:9;22434:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;22413:7;:18;22421:9;22413:18;;;;;;;;;;;;;;;:60;;;;22126:355;;;;;:::o;21217:255::-;21365:28;21385:7;21365;:15;21373:6;21365:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;21347:7;:15;21355:6;21347:15;;;;;;;;;;;;;;;:46;;;;21425:39;21448:15;21425:7;:18;21433:9;21425:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;21404:7;:18;21412:9;21404:18;;;;;;;;;;;;;;;:60;;;;21217:255;;;;:::o;24115:421::-;24301:28;24321:7;24301;:15;24309:6;24301:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;24283:7;:15;24291:6;24283:15;;;;;;;;;;;;;;;:46;;;;24358:28;24378:7;24358;:15;24366:6;24358:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;24340:7;:15;24348:6;24340:15;;;;;;;;;;;;;;;:46;;;;24418:39;24441:15;24418:7;:18;24426:9;24418:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;24397:7;:18;24405:9;24397:18;;;;;;;;;;;;;;;:60;;;;24489:39;24512:15;24489:7;:18;24497:9;24489:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;24468:7;:18;24476:9;24468:18;;;;;;;;;;;;;;;:60;;;;24115:421;;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:133::-;195:5;233:6;220:20;211:29;;249:30;273:5;249:30;:::i;:::-;152:133;;;;:::o;291:139::-;337:5;375:6;362:20;353:29;;391:33;418:5;391:33;:::i;:::-;291:139;;;;:::o;436:329::-;495:6;544:2;532:9;523:7;519:23;515:32;512:119;;;550:79;;:::i;:::-;512:119;670:1;695:53;740:7;731:6;720:9;716:22;695:53;:::i;:::-;685:63;;641:117;436:329;;;;:::o;771:474::-;839:6;847;896:2;884:9;875:7;871:23;867:32;864:119;;;902:79;;:::i;:::-;864:119;1022:1;1047:53;1092:7;1083:6;1072:9;1068:22;1047:53;:::i;:::-;1037:63;;993:117;1149:2;1175:53;1220:7;1211:6;1200:9;1196:22;1175:53;:::i;:::-;1165:63;;1120:118;771:474;;;;;:::o;1251:619::-;1328:6;1336;1344;1393:2;1381:9;1372:7;1368:23;1364:32;1361:119;;;1399:79;;:::i;:::-;1361:119;1519:1;1544:53;1589:7;1580:6;1569:9;1565:22;1544:53;:::i;:::-;1534:63;;1490:117;1646:2;1672:53;1717:7;1708:6;1697:9;1693:22;1672:53;:::i;:::-;1662:63;;1617:118;1774:2;1800:53;1845:7;1836:6;1825:9;1821:22;1800:53;:::i;:::-;1790:63;;1745:118;1251:619;;;;;:::o;1876:468::-;1941:6;1949;1998:2;1986:9;1977:7;1973:23;1969:32;1966:119;;;2004:79;;:::i;:::-;1966:119;2124:1;2149:53;2194:7;2185:6;2174:9;2170:22;2149:53;:::i;:::-;2139:63;;2095:117;2251:2;2277:50;2319:7;2310:6;2299:9;2295:22;2277:50;:::i;:::-;2267:60;;2222:115;1876:468;;;;;:::o;2350:474::-;2418:6;2426;2475:2;2463:9;2454:7;2450:23;2446:32;2443:119;;;2481:79;;:::i;:::-;2443:119;2601:1;2626:53;2671:7;2662:6;2651:9;2647:22;2626:53;:::i;:::-;2616:63;;2572:117;2728:2;2754:53;2799:7;2790:6;2779:9;2775:22;2754:53;:::i;:::-;2744:63;;2699:118;2350:474;;;;;:::o;2830:329::-;2889:6;2938:2;2926:9;2917:7;2913:23;2909:32;2906:119;;;2944:79;;:::i;:::-;2906:119;3064:1;3089:53;3134:7;3125:6;3114:9;3110:22;3089:53;:::i;:::-;3079:63;;3035:117;2830:329;;;;:::o;3165:468::-;3230:6;3238;3287:2;3275:9;3266:7;3262:23;3258:32;3255:119;;;3293:79;;:::i;:::-;3255:119;3413:1;3438:53;3483:7;3474:6;3463:9;3459:22;3438:53;:::i;:::-;3428:63;;3384:117;3540:2;3566:50;3608:7;3599:6;3588:9;3584:22;3566:50;:::i;:::-;3556:60;;3511:115;3165:468;;;;;:::o;3639:619::-;3716:6;3724;3732;3781:2;3769:9;3760:7;3756:23;3752:32;3749:119;;;3787:79;;:::i;:::-;3749:119;3907:1;3932:53;3977:7;3968:6;3957:9;3953:22;3932:53;:::i;:::-;3922:63;;3878:117;4034:2;4060:53;4105:7;4096:6;4085:9;4081:22;4060:53;:::i;:::-;4050:63;;4005:118;4162:2;4188:53;4233:7;4224:6;4213:9;4209:22;4188:53;:::i;:::-;4178:63;;4133:118;3639:619;;;;;:::o;4264:118::-;4351:24;4369:5;4351:24;:::i;:::-;4346:3;4339:37;4264:118;;:::o;4388:109::-;4469:21;4484:5;4469:21;:::i;:::-;4464:3;4457:34;4388:109;;:::o;4503:364::-;4591:3;4619:39;4652:5;4619:39;:::i;:::-;4674:71;4738:6;4733:3;4674:71;:::i;:::-;4667:78;;4754:52;4799:6;4794:3;4787:4;4780:5;4776:16;4754:52;:::i;:::-;4831:29;4853:6;4831:29;:::i;:::-;4826:3;4822:39;4815:46;;4595:272;4503:364;;;;:::o;4873:366::-;5015:3;5036:67;5100:2;5095:3;5036:67;:::i;:::-;5029:74;;5112:93;5201:3;5112:93;:::i;:::-;5230:2;5225:3;5221:12;5214:19;;4873:366;;;:::o;5245:::-;5387:3;5408:67;5472:2;5467:3;5408:67;:::i;:::-;5401:74;;5484:93;5573:3;5484:93;:::i;:::-;5602:2;5597:3;5593:12;5586:19;;5245:366;;;:::o;5617:::-;5759:3;5780:67;5844:2;5839:3;5780:67;:::i;:::-;5773:74;;5856:93;5945:3;5856:93;:::i;:::-;5974:2;5969:3;5965:12;5958:19;;5617:366;;;:::o;5989:::-;6131:3;6152:67;6216:2;6211:3;6152:67;:::i;:::-;6145:74;;6228:93;6317:3;6228:93;:::i;:::-;6346:2;6341:3;6337:12;6330:19;;5989:366;;;:::o;6361:::-;6503:3;6524:67;6588:2;6583:3;6524:67;:::i;:::-;6517:74;;6600:93;6689:3;6600:93;:::i;:::-;6718:2;6713:3;6709:12;6702:19;;6361:366;;;:::o;6733:::-;6875:3;6896:67;6960:2;6955:3;6896:67;:::i;:::-;6889:74;;6972:93;7061:3;6972:93;:::i;:::-;7090:2;7085:3;7081:12;7074:19;;6733:366;;;:::o;7105:::-;7247:3;7268:67;7332:2;7327:3;7268:67;:::i;:::-;7261:74;;7344:93;7433:3;7344:93;:::i;:::-;7462:2;7457:3;7453:12;7446:19;;7105:366;;;:::o;7477:::-;7619:3;7640:67;7704:2;7699:3;7640:67;:::i;:::-;7633:74;;7716:93;7805:3;7716:93;:::i;:::-;7834:2;7829:3;7825:12;7818:19;;7477:366;;;:::o;7849:::-;7991:3;8012:67;8076:2;8071:3;8012:67;:::i;:::-;8005:74;;8088:93;8177:3;8088:93;:::i;:::-;8206:2;8201:3;8197:12;8190:19;;7849:366;;;:::o;8221:::-;8363:3;8384:67;8448:2;8443:3;8384:67;:::i;:::-;8377:74;;8460:93;8549:3;8460:93;:::i;:::-;8578:2;8573:3;8569:12;8562:19;;8221:366;;;:::o;8593:::-;8735:3;8756:67;8820:2;8815:3;8756:67;:::i;:::-;8749:74;;8832:93;8921:3;8832:93;:::i;:::-;8950:2;8945:3;8941:12;8934:19;;8593:366;;;:::o;8965:::-;9107:3;9128:67;9192:2;9187:3;9128:67;:::i;:::-;9121:74;;9204:93;9293:3;9204:93;:::i;:::-;9322:2;9317:3;9313:12;9306:19;;8965:366;;;:::o;9337:::-;9479:3;9500:67;9564:2;9559:3;9500:67;:::i;:::-;9493:74;;9576:93;9665:3;9576:93;:::i;:::-;9694:2;9689:3;9685:12;9678:19;;9337:366;;;:::o;9709:::-;9851:3;9872:67;9936:2;9931:3;9872:67;:::i;:::-;9865:74;;9948:93;10037:3;9948:93;:::i;:::-;10066:2;10061:3;10057:12;10050:19;;9709:366;;;:::o;10081:::-;10223:3;10244:67;10308:2;10303:3;10244:67;:::i;:::-;10237:74;;10320:93;10409:3;10320:93;:::i;:::-;10438:2;10433:3;10429:12;10422:19;;10081:366;;;:::o;10453:::-;10595:3;10616:67;10680:2;10675:3;10616:67;:::i;:::-;10609:74;;10692:93;10781:3;10692:93;:::i;:::-;10810:2;10805:3;10801:12;10794:19;;10453:366;;;:::o;10825:118::-;10912:24;10930:5;10912:24;:::i;:::-;10907:3;10900:37;10825:118;;:::o;10949:112::-;11032:22;11048:5;11032:22;:::i;:::-;11027:3;11020:35;10949:112;;:::o;11067:222::-;11160:4;11198:2;11187:9;11183:18;11175:26;;11211:71;11279:1;11268:9;11264:17;11255:6;11211:71;:::i;:::-;11067:222;;;;:::o;11295:210::-;11382:4;11420:2;11409:9;11405:18;11397:26;;11433:65;11495:1;11484:9;11480:17;11471:6;11433:65;:::i;:::-;11295:210;;;;:::o;11511:313::-;11624:4;11662:2;11651:9;11647:18;11639:26;;11711:9;11705:4;11701:20;11697:1;11686:9;11682:17;11675:47;11739:78;11812:4;11803:6;11739:78;:::i;:::-;11731:86;;11511:313;;;;:::o;11830:419::-;11996:4;12034:2;12023:9;12019:18;12011:26;;12083:9;12077:4;12073:20;12069:1;12058:9;12054:17;12047:47;12111:131;12237:4;12111:131;:::i;:::-;12103:139;;11830:419;;;:::o;12255:::-;12421:4;12459:2;12448:9;12444:18;12436:26;;12508:9;12502:4;12498:20;12494:1;12483:9;12479:17;12472:47;12536:131;12662:4;12536:131;:::i;:::-;12528:139;;12255:419;;;:::o;12680:::-;12846:4;12884:2;12873:9;12869:18;12861:26;;12933:9;12927:4;12923:20;12919:1;12908:9;12904:17;12897:47;12961:131;13087:4;12961:131;:::i;:::-;12953:139;;12680:419;;;:::o;13105:::-;13271:4;13309:2;13298:9;13294:18;13286:26;;13358:9;13352:4;13348:20;13344:1;13333:9;13329:17;13322:47;13386:131;13512:4;13386:131;:::i;:::-;13378:139;;13105:419;;;:::o;13530:::-;13696:4;13734:2;13723:9;13719:18;13711:26;;13783:9;13777:4;13773:20;13769:1;13758:9;13754:17;13747:47;13811:131;13937:4;13811:131;:::i;:::-;13803:139;;13530:419;;;:::o;13955:::-;14121:4;14159:2;14148:9;14144:18;14136:26;;14208:9;14202:4;14198:20;14194:1;14183:9;14179:17;14172:47;14236:131;14362:4;14236:131;:::i;:::-;14228:139;;13955:419;;;:::o;14380:::-;14546:4;14584:2;14573:9;14569:18;14561:26;;14633:9;14627:4;14623:20;14619:1;14608:9;14604:17;14597:47;14661:131;14787:4;14661:131;:::i;:::-;14653:139;;14380:419;;;:::o;14805:::-;14971:4;15009:2;14998:9;14994:18;14986:26;;15058:9;15052:4;15048:20;15044:1;15033:9;15029:17;15022:47;15086:131;15212:4;15086:131;:::i;:::-;15078:139;;14805:419;;;:::o;15230:::-;15396:4;15434:2;15423:9;15419:18;15411:26;;15483:9;15477:4;15473:20;15469:1;15458:9;15454:17;15447:47;15511:131;15637:4;15511:131;:::i;:::-;15503:139;;15230:419;;;:::o;15655:::-;15821:4;15859:2;15848:9;15844:18;15836:26;;15908:9;15902:4;15898:20;15894:1;15883:9;15879:17;15872:47;15936:131;16062:4;15936:131;:::i;:::-;15928:139;;15655:419;;;:::o;16080:::-;16246:4;16284:2;16273:9;16269:18;16261:26;;16333:9;16327:4;16323:20;16319:1;16308:9;16304:17;16297:47;16361:131;16487:4;16361:131;:::i;:::-;16353:139;;16080:419;;;:::o;16505:::-;16671:4;16709:2;16698:9;16694:18;16686:26;;16758:9;16752:4;16748:20;16744:1;16733:9;16729:17;16722:47;16786:131;16912:4;16786:131;:::i;:::-;16778:139;;16505:419;;;:::o;16930:::-;17096:4;17134:2;17123:9;17119:18;17111:26;;17183:9;17177:4;17173:20;17169:1;17158:9;17154:17;17147:47;17211:131;17337:4;17211:131;:::i;:::-;17203:139;;16930:419;;;:::o;17355:::-;17521:4;17559:2;17548:9;17544:18;17536:26;;17608:9;17602:4;17598:20;17594:1;17583:9;17579:17;17572:47;17636:131;17762:4;17636:131;:::i;:::-;17628:139;;17355:419;;;:::o;17780:::-;17946:4;17984:2;17973:9;17969:18;17961:26;;18033:9;18027:4;18023:20;18019:1;18008:9;18004:17;17997:47;18061:131;18187:4;18061:131;:::i;:::-;18053:139;;17780:419;;;:::o;18205:::-;18371:4;18409:2;18398:9;18394:18;18386:26;;18458:9;18452:4;18448:20;18444:1;18433:9;18429:17;18422:47;18486:131;18612:4;18486:131;:::i;:::-;18478:139;;18205:419;;;:::o;18630:222::-;18723:4;18761:2;18750:9;18746:18;18738:26;;18774:71;18842:1;18831:9;18827:17;18818:6;18774:71;:::i;:::-;18630:222;;;;:::o;18858:214::-;18947:4;18985:2;18974:9;18970:18;18962:26;;18998:67;19062:1;19051:9;19047:17;19038:6;18998:67;:::i;:::-;18858:214;;;;:::o;19159:99::-;19211:6;19245:5;19239:12;19229:22;;19159:99;;;:::o;19264:169::-;19348:11;19382:6;19377:3;19370:19;19422:4;19417:3;19413:14;19398:29;;19264:169;;;;:::o;19439:305::-;19479:3;19498:20;19516:1;19498:20;:::i;:::-;19493:25;;19532:20;19550:1;19532:20;:::i;:::-;19527:25;;19686:1;19618:66;19614:74;19611:1;19608:81;19605:107;;;19692:18;;:::i;:::-;19605:107;19736:1;19733;19729:9;19722:16;;19439:305;;;;:::o;19750:185::-;19790:1;19807:20;19825:1;19807:20;:::i;:::-;19802:25;;19841:20;19859:1;19841:20;:::i;:::-;19836:25;;19880:1;19870:35;;19885:18;;:::i;:::-;19870:35;19927:1;19924;19920:9;19915:14;;19750:185;;;;:::o;19941:348::-;19981:7;20004:20;20022:1;20004:20;:::i;:::-;19999:25;;20038:20;20056:1;20038:20;:::i;:::-;20033:25;;20226:1;20158:66;20154:74;20151:1;20148:81;20143:1;20136:9;20129:17;20125:105;20122:131;;;20233:18;;:::i;:::-;20122:131;20281:1;20278;20274:9;20263:20;;19941:348;;;;:::o;20295:191::-;20335:4;20355:20;20373:1;20355:20;:::i;:::-;20350:25;;20389:20;20407:1;20389:20;:::i;:::-;20384:25;;20428:1;20425;20422:8;20419:34;;;20433:18;;:::i;:::-;20419:34;20478:1;20475;20471:9;20463:17;;20295:191;;;;:::o;20492:96::-;20529:7;20558:24;20576:5;20558:24;:::i;:::-;20547:35;;20492:96;;;:::o;20594:90::-;20628:7;20671:5;20664:13;20657:21;20646:32;;20594:90;;;:::o;20690:126::-;20727:7;20767:42;20760:5;20756:54;20745:65;;20690:126;;;:::o;20822:77::-;20859:7;20888:5;20877:16;;20822:77;;;:::o;20905:86::-;20940:7;20980:4;20973:5;20969:16;20958:27;;20905:86;;;:::o;20997:307::-;21065:1;21075:113;21089:6;21086:1;21083:13;21075:113;;;21174:1;21169:3;21165:11;21159:18;21155:1;21150:3;21146:11;21139:39;21111:2;21108:1;21104:10;21099:15;;21075:113;;;21206:6;21203:1;21200:13;21197:101;;;21286:1;21277:6;21272:3;21268:16;21261:27;21197:101;21046:258;20997:307;;;:::o;21310:320::-;21354:6;21391:1;21385:4;21381:12;21371:22;;21438:1;21432:4;21428:12;21459:18;21449:81;;21515:4;21507:6;21503:17;21493:27;;21449:81;21577:2;21569:6;21566:14;21546:18;21543:38;21540:84;;;21596:18;;:::i;:::-;21540:84;21361:269;21310:320;;;:::o;21636:233::-;21675:3;21698:24;21716:5;21698:24;:::i;:::-;21689:33;;21744:66;21737:5;21734:77;21731:103;;;21814:18;;:::i;:::-;21731:103;21861:1;21854:5;21850:13;21843:20;;21636:233;;;:::o;21875:180::-;21923:77;21920:1;21913:88;22020:4;22017:1;22010:15;22044:4;22041:1;22034:15;22061:180;22109:77;22106:1;22099:88;22206:4;22203:1;22196:15;22230:4;22227:1;22220:15;22247:180;22295:77;22292:1;22285:88;22392:4;22389:1;22382:15;22416:4;22413:1;22406:15;22433:180;22481:77;22478:1;22471:88;22578:4;22575:1;22568:15;22602:4;22599:1;22592:15;22619:180;22667:77;22664:1;22657:88;22764:4;22761:1;22754:15;22788:4;22785:1;22778:15;22928:117;23037:1;23034;23027:12;23051:102;23092:6;23143:2;23139:7;23134:2;23127:5;23123:14;23119:28;23109:38;;23051:102;;;:::o;23159:224::-;23299:34;23295:1;23287:6;23283:14;23276:58;23368:7;23363:2;23355:6;23351:15;23344:32;23159:224;:::o;23389:226::-;23529:34;23525:1;23517:6;23513:14;23506:58;23598:9;23593:2;23585:6;23581:15;23574:34;23389:226;:::o;23621:173::-;23761:25;23757:1;23749:6;23745:14;23738:49;23621:173;:::o;23800:229::-;23940:34;23936:1;23928:6;23924:14;23917:58;24009:12;24004:2;23996:6;23992:15;23985:37;23800:229;:::o;24035:225::-;24175:34;24171:1;24163:6;24159:14;24152:58;24244:8;24239:2;24231:6;24227:15;24220:33;24035:225;:::o;24266:177::-;24406:29;24402:1;24394:6;24390:14;24383:53;24266:177;:::o;24449:::-;24589:29;24585:1;24577:6;24573:14;24566:53;24449:177;:::o;24632:::-;24772:29;24768:1;24760:6;24756:14;24749:53;24632:177;:::o;24815:181::-;24955:33;24951:1;24943:6;24939:14;24932:57;24815:181;:::o;25002:220::-;25142:34;25138:1;25130:6;25126:14;25119:58;25211:3;25206:2;25198:6;25194:15;25187:28;25002:220;:::o;25228:165::-;25368:17;25364:1;25356:6;25352:14;25345:41;25228:165;:::o;25399:182::-;25539:34;25535:1;25527:6;25523:14;25516:58;25399:182;:::o;25587:228::-;25727:34;25723:1;25715:6;25711:14;25704:58;25796:11;25791:2;25783:6;25779:15;25772:36;25587:228;:::o;25821:223::-;25961:34;25957:1;25949:6;25945:14;25938:58;26030:6;26025:2;26017:6;26013:15;26006:31;25821:223;:::o;26050:225::-;26190:34;26186:1;26178:6;26174:14;26167:58;26259:8;26254:2;26246:6;26242:15;26235:33;26050:225;:::o;26281:231::-;26421:34;26417:1;26409:6;26405:14;26398:58;26490:14;26485:2;26477:6;26473:15;26466:39;26281:231;:::o;26518:122::-;26591:24;26609:5;26591:24;:::i;:::-;26584:5;26581:35;26571:63;;26630:1;26627;26620:12;26571:63;26518:122;:::o;26646:116::-;26716:21;26731:5;26716:21;:::i;:::-;26709:5;26706:32;26696:60;;26752:1;26749;26742:12;26696:60;26646:116;:::o;26768:122::-;26841:24;26859:5;26841:24;:::i;:::-;26834:5;26831:35;26821:63;;26880:1;26877;26870:12;26821:63;26768:122;:::o

Swarm Source

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